|
|
Bestimmte Werte in .txt Datei überschreiben |
|
davidarmstrong85 |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 12:44
Titel: Bestimmte Werte in .txt Datei überschreiben
|
 |
Hi, mein Problem ist folgendes:
Ich lese über eine Gui Daten ein, die ich danach an einer bestimmten Stelle in einer .txt Datei schreiben will. Die Stelle ist wichtig, da ein anderes Programm auf diese Datei dann zugreift und mit den Werten weiterarbeitet.
Wie könnte ich das gut lösen?
Aus der Datei lesen und in sie schreiben funktioniert bereits. Auch die Dateneingabe über die Gui. Was halt jetzt fehlt ist die neuen Daten an der richtigen Position zu (über)schreiben.
Schon mal Danke!
|
|
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 14:30
Titel:
|
 |
zeig mal her was du hast...
"Überschreiben" ist oft komplizierter als es den Anschein hat - vielleicht ist es einfacher, die alte Datei zu lesen und in eine neue zu schreiben.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
davidarmstrong85 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 17:14
Titel:
|
 |
hi, also in der datei stehen verschiedene werte drin, die von einem anderen programm benötigt werden.
beispielsweise
12.7 13 47
!
!
!
!
1 2 3
4 5 6
7 8 9
!
!
!
!
0.0001 12
Und mein Ziel ist es jetzt, den Block mit 1 2 3 4 5
zu ersetzen mit den Werten die in der GUI eingegeben wurden.
Kannst du dir mein Problem so besser vorstellen?
Wie würde dein Vorschlag mit dem einlesen funktionieren?
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 19:22
Titel: Re: Bestimmte Werte in .txt Datei überschreiben
|
 |
ich meinte mit "zeig mal her was du hast..." deinen code
davidarmstrong85 hat Folgendes geschrieben: |
Aus der Datei lesen ... funktioniert bereits. |
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 19:36
Titel:
|
 |
achso ja,das hatte ich bisher nur testweise über
text=textread('test.txt','%s','whiespace','','delimiter','\t');
gemacht
in textread steht dann der gesamte dateiinhalt. wobei jede zeile mit ' anfängt und mit ' aufhört, da es ja strings sind,soweit ich weiß.
|
|
|
davidarmstrong85 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 19:58
Titel:
|
 |
bzw. nein, habe es jetzt geändert, da ich gelesen hab textread sei veraltet.
fid_don=fopen('data/test.txt','r+');
C = textscan(fid_don, '%s %s %s\t\n');
fclose(fid_don);
also C ist ja jetzt ein cell array in dem alles drinne steht. wie printe ich das jetzt wieder in die datei? fprintf funktioniert mit cell arrays ja nicht.
und noch eine andere frage, wie oben in meinem beispiel zu sehen steht ja nicht in jeder zeile das gleiche(also nicht in jeder zeile steht text oder gleiche anzahl an zahlen). wie mach ich das am besten? habe jetzt 3 mal %s genommen.
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.04.2013, 21:32
Titel:
|
 |
habe jetzt
data_read = textscan(id, '%s %s %s %s %s %s\t\n');
wenn ich mir das auf m bildschirm ausgeben lasse,kann ich ablesen welche elemente geändert werden müssen.
daraus habe ich dann das hier geschlossen:
for i=17;1;29;
data_read{1}{i}=pitch(i,2);
data_read{2}{i}=pitch(i,3);
end
pitch ist ein array in dem die neuen daten stehen.
soweit so gut, kommt auch keine fehlermeldung.
aber wie kriege ich das dann in ne datei? fprintf geht ja leider nicht.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.04.2013, 01:23
Titel:
|
 |
Hallo,
Wieso geht FPRINTF nicht? Hast Du einen Code damit versucht und eine Fehlermeldung erhalten? Dann wäre es eine gute Idee, beides hier zu posten und nach einem Verbesserungsvorschlag zu fragen.
Gruß, Jan
|
|
|
davidarmstrong85 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.04.2013, 12:58
Titel:
|
 |
also fprintf ist ja eigentlich nicht für cell arrays gedacht.
aber etwas viel wichtigeres, meine datei hat ja nicht in jeder zeile gleich viel stehen und mal strings und mal daten, wie lese ich die datei am besten ein?
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 29.04.2013, 23:29
Titel:
|
 |
am Anfang war der String
Wenn dir das Cellarray nicht gefällt, bleibt ja immernoch der string-stream... mehr kenne ich leider nicht.
brauchst du überhaupt eine Auswertung der alten Daten? Würde "str2num" dir was helfen? Oder der Matlabassistent zum Einlesen der Daten?
kannst du nicht einfach die betreffende Zeile/cellarray suchen, editieren und alles wieder speichern?
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
davidarmstrong |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.04.2013, 23:42
Titel:
|
 |
hi, also ich habe das problem soweit gelöst.
nutze jetzt textscan und lese das file zeilenweise in eine variable und editier das dann(übergebe ein array und wandle das mit num2str um).
das einzige problem was ich jetzt habe:
in einer zeile steht z.b. abc 10.1 40 1.000 30
ich will davon aber nur 10.1 ändern. meine überlegung war ich mache daraus zwei strings,also abc und den rest,was ja dann so aussieht cell{11}=['abc',rest]
das problem dabei ist, zwischen abc und rest ist dann kein leerzeichen oder so.
mache ich es so: ['abc',' ',rest] ist der abstand der werte die in rest stehen zu groß und das programm, dass auf die werte zugreift kommt damit nicht mehr klar.
jemand eine idee?
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 30.04.2013, 18:21
Titel:
|
 |
mach mal ein zwei Beispiele mit Vorher/Nachher deiner Strings. Das klingt recht verworren.
Vielleicht hilft es zu wissen, dass man strings wie C-Chararrays auch per Index ansprechen kann? str(2) wäre dann das zweite Zeichen von str
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|