Entwickler-Ecke
Dateizugriff - Ablegen und Herraussuchen von strings in ein
beljo - Fr 10.03.06 14:10
Titel: Ablegen und Herraussuchen von strings in ein
Hallo zusammen,
ich habe folgendes Problem.
Ich möchte gerne Die Strings aus meinen Eingabe- bzw Ausgabefeldern (textfelder) in eine Datei ablegen und auch meine Ein- und Ausgabefelder auf diese weise wieder auffüllen.Größtes Problem bei der Sache, die Gespeicherten Dateien sollen auch zusätzlich Text beinhalten.
Bin leider der totale Amateur in Delphi,würde aber dazu verdonnert dies zu machen.
Das ausgeben in eine Datei habe ich schon hinbekommen.(eher schlecht als recht). Leider klappt das auslesen bzw. in die Textfelder einfügen überhaupt nicht.(Fehlermeldung:[Error] Unit1.pas(272): Record, object or class type required)
Bitte formuliert die Lösungsansätze nicht in eine unverständliche Fachsprache,da ich es nicht so drauf habe.
hier mein Ansatz.
hier der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| procedure TForm1.Button2Click(Sender: TObject); begin anweisung:=TstringList.Create; anweisung.add(' Zeigerdiagramme für permanenterregte Sybchronmaschine (rotorfeste Koordinaten) '); anweisung.add(''); anweisung.add( 'Strangstrom Id in A: ' ); anweisung.add('edit1.text'); anweisung.Add( 'Strangstrom Iq in A: ' ); anweisung.add('edit2.text'); anweisung.add('Strangspannung Ud in V: '); anweisung.add('edit3.text'); anweisung.add('Strangspannung Uq in V: ' ); anweisung.add('edit4.text'); anweisung.Add('Polradspannung Up in V: ' ); anweisung.add('edit5.text'); anweisung.add('Phasenwinkel phi in °: ' ); anweisung.add('edit6.text'); anweisung.add('Stromwinkel beta in °: ' ); anweisung.add('edit7.text'); anweisung.Add('Polaradwinkel gamma in °: ' ); anweisung.add('edit8.text'); anweisung.add('Winkel zwischen Rotordurchflutung und Ständerdurchflutung alpha in °: '); anweisung.add('edit9.text'); anweisung.add('Betrag des Stromzeigers: '); anweisung.add('edit10.text'); anweisung.Add('Betrag des Spannungszeigers: '); anweisung.add('edit11.text'); anweisung.Add('Phasenverschiebung des Stromzeigers: ' ); anweisung.add('edit12.text'); anweisung.add('Pahsenverschiebung des Spannungszeigers: '); anweisung.add('edit13.text'); savedialog1.execute; anweisung.savetofile(savedialog1.FileName); end;
procedure TForm1.Button4Click(Sender: TObject); var point,merk1,merk2,merk3: integer; begin anweisung:=TStringList.Create; anweisung.LoadfromFile(opendialog1.FileName); for piont:=0 to anweisung.Count-1 do begin merk1:= anweisung.IndexOf('Strangstrom Id in A: ' ); merk2:= anweisung.IndexOf('Strangstrom Iq in A: ' ); merk3:= anweisung.IndexOf('Strangspannung Ud in V: ' ); end; for point:=merk1+1 to merk2-1 do edit1.text.add(anweisung.strings[x]); for point:=merk2+1 to merk3-1 do edit2.text.add(anweisung.strings[x]); for point:=merk3+1 to merk3-1 do edit3.text.add(anweisung.strings[x]); end; end;
end. |
vielen Dank im Vorraus
beljo - Fr 10.03.06 14:26
Hallo nochmal,
ich hatte mich etwas verschreiben,
hier der richtige Quelltext:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| procedure TForm1.Button2Click(Sender: TObject); begin anweisung:=TstringList.Create; anweisung.add(' Zeigerdiagramme für permanenterregte Sybchronmaschine (rotorfeste Koordinaten) '); anweisung.add(''); anweisung.add( 'Strangstrom Id in A: ' ); anweisung.add('edit1.text'); anweisung.Add( 'Strangstrom Iq in A: ' ); anweisung.add('edit2.text'); anweisung.add('Strangspannung Ud in V: '); anweisung.add('edit3.text'); anweisung.add('Strangspannung Uq in V: ' ); anweisung.add('edit4.text'); anweisung.Add('Polradspannung Up in V: ' ); anweisung.add('edit5.text'); anweisung.add('Phasenwinkel phi in °: ' ); anweisung.add('edit6.text'); anweisung.add('Stromwinkel beta in °: ' ); anweisung.add('edit7.text'); anweisung.Add('Polaradwinkel gamma in °: ' ); anweisung.add('edit8.text'); anweisung.add('Winkel zwischen Rotordurchflutung und Ständerdurchflutung alpha in °: '); anweisung.add('edit9.text'); anweisung.add('Betrag des Stromzeigers: '); anweisung.add('edit10.text'); anweisung.Add('Betrag des Spannungszeigers: '); anweisung.add('edit11.text'); anweisung.Add('Phasenverschiebung des Stromzeigers: ' ); anweisung.add('edit12.text'); anweisung.add('Pahsenverschiebung des Spannungszeigers: '); anweisung.add('edit13.text'); savedialog1.execute; anweisung.savetofile(savedialog1.FileName); end;
procedure TForm1.Button4Click(Sender: TObject); var piont,merk1,merk2,merk3: integer; begin anweisung:=TStringList.Create; anweisung.LoadfromFile(opendialog1.FileName); for piont:=0 to anweisung.Count-1 do begin merk1:= anweisung.IndexOf('Strangstrom Id in A: ' ); merk2:= anweisung.IndexOf('Strangstrom Iq in A: ' ); merk3:= anweisung.IndexOf('Strangspannung Ud in V: ' ); end; for piont:=merk1+1 to merk2-1 do edit1.text.add(anweisung.strings[piont]); for piont:=merk2+1 to merk3-1 do edit2.text.add(anweisung.strings[piont]); for piont:=merk3+1 to merk3-1 do edit3.text.add(anweisung.strings[piont]); end; end;
end. |
nochmals danke im vorraus
Gausi - Fr 10.03.06 15:12
Hallo und :welcome: in der Entwickler-Ecke!
Auch wenn ich es unschön finde, andere Leute dazu aufzufordern, ihren Code komplett umzuschreiben, aber in dem Fall wäre es das einfachste ;-)
Schau dir mal IniFiles an. Da geht das viel einfacher mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| ini := TMemIniFile.Create(Dateiname); Edit1.text := ini.readString('Edits','Strangstrom_Id_in_A','' ); ini.free;
ini := TMemIniFile.Create(Dateiname); ini.writeString('Edits','Strangstrom_Id_in_A',Edit1.text); ini.UpdateFile, ini.free; |
Miri - Fr 10.03.06 15:14
erstma was anderes...es gibt hier ne editfunktion (das blatt mit der schere),da musst du nicht (fast) das gleiche nochmal posten :)
versteh ich das richtig? dein problem ist, dass du eine datei hast, in der ganz viel zeug steht und unter anderem auch die sachen, die für dein programm wichtig sind?
also
bla bla
bla
das hier
ist wichtig
bla bla
dann würde ich schonmal grundsätzlich am anfang und am ende von dem,was du speicherst irgendeine bestimmte zeichenkombination mit wiedererkennungswert einbauen... damit kannst du die datei einlesen und filterst dir nur das raus in deine stringlist, was du auch wirklich brauchst...damit würde ich anfangen... und dann eine routine entwickeln, wie du die bestimmten zeilen jetzt rausbekommst für deine editfelder...
//Edit: zu langsam... und Gausis Lösung scheint mir sinnvoller zu sein...
beljo - Fr 10.03.06 16:33
ja Miri,
Du hast mein Problem richtig erkannt, ich habe ja auch schon eine Routine geschrieben um bla bla rauszufiltern (siehe quellcode Zeile45-52 oben). das einzige Problem an dem ganzen ist halt, das es mir nicht möglich ist die Text-felder mit dem strings aus der datei zu füllen.
der vorschlag von Gaußmann ist ja gut aber er erfordert das ich mein Programm komplett umschreibe :-(
vielleicht hat ja jemand noch eine Idee wie ich die Werte ohne Probleme einlesen kann.
beljo - Fr 10.03.06 16:37
mein Problem befindet sich, denke ich wirklich nur in den letzten Zeilen,
mkinzler - Fr 10.03.06 16:41
Ich rate mal das es eigentlich so heißen müsste:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Button4Click(Sender: TObject); var x, x2,m1,m2,m3: integer; begin anweisung:=TStringList.Create; anweisung.LoadfromFile(opendialog1.FileName); for X:=0 to anweisung.Count-1 do begin m1:= anweisung.IndexOf('Strangstrom Id in A: ' ); m2:= anweisung.IndexOf('Strangstrom Iq in A: ' ); m3:= anweisung.IndexOf('Strangspannung Ud in V: ' ); for x2:=m1+1 to m2-1 do edit1.text.add(anweisung.strings[x]); for X2:=m2+1 to m3-1 do edit2.text.add(anweisung.strings[x]); for x2:=m3+1 to m3-1 do edit3.text.add(anweisung.strings[x]); end; end; |
[edit]
[s]Weil sonst wäre die erste Schleife unsinnig.[/s]
Sie ist auch so unnötig!
[/edit]
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button4Click(Sender: TObject); var x, m1,m2,m3: integer; begin anweisung:=TStringList.Create; anweisung.LoadfromFile(opendialog1.FileName); m1:= anweisung.IndexOf('Strangstrom Id in A: ' ); m2:= anweisung.IndexOf('Strangstrom Iq in A: ' ); m3:= anweisung.IndexOf('Strangspannung Ud in V: ' ); for x:=m1+1 to m2-1 do edit1.text.add(anweisung.strings[x]); for X:=m2+1 to m3-1 do edit2.text.add(anweisung.strings[x]); for x:=m3+1 to m3-1 do edit3.text.add(anweisung.strings[x]); end; |
beljo - Fr 10.03.06 17:32
danke marcus,
leider ist aber das problem nicht gelöst in den letzten zeilen, beim einlesen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button4Click(Sender: TObject); var x, m1,m2,m3: integer; begin anweisung:=TStringList.Create; anweisung.LoadfromFile(opendialog1.FileName); m1:= anweisung.IndexOf('Strangstrom Id in A: ' ); m2:= anweisung.IndexOf('Strangstrom Iq in A: ' ); m3:= anweisung.IndexOf('Strangspannung Ud in V: ' ); for x:=m1+1 to m2-1 do edit1.text.add(anweisung.strings[x]); for X:=m2+1 to m3-1 do edit2.text.add(anweisung.strings[x]); for x:=m3+1 to m3-1 do edit3.text.add(anweisung.strings[x]); end; |
id dieser Zeile :
for x:=m1+1 to m2-1 do edit1.text.add(anweisung.strings[x]);
kommt die Fehlermeldung [Error] Unit1.pas(269): Record, object or class type required.
ich hab schon eine menge veruscht aber ICH KRIEGE DIES VERDAMMTEN STRINGS EINFACH NICHT IN EIN TEXTFELD,langsam verzweifele ich.es muss doch möglich sein aus der Liste auch Tstrings in das editled einzulesen.
beljo - Sa 11.03.06 16:44
Für alle die es Interesiert es geht nicht so ohne weiters mit einer Liste.
deshalb habe ich ini-Files verwendet.
Ich kann auch nur jedem Anfänger empfelen ini-Files zu benutzen, da hier der Suchalgorithmus kommplett entfällt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!