Autor Beitrag
beljo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Fr 10.03.06 14:10 
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:
ausblenden volle Höhe 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);  // Erzeugung der datei zum Ablegen der Werte, Speichern in dat
begin
 anweisung:=TstringList.Create;   //erzeugen einer Liste
 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//Klappt alles wunderbar



procedure TForm1.Button4Click(Sender: TObject);   //öffnen der datei
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]); // An dieser Stelle gibt es die Fehlermeldung
  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
Einloggen, um Attachments anzusehen!
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Fr 10.03.06 14:26 
Hallo nochmal,
ich hatte mich etwas verschreiben,
hier der richtige Quelltext:
ausblenden volle Höhe 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);  // Erzeugung der datei zum Ablegen der Werte
begin
 anweisung:=TstringList.Create;   //erzeugen einer Liste
 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);   //öffnen der datei
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
// auslesen
ini := TMemIniFile.Create(Dateiname);
Edit1.text := ini.readString('Edits','Strangstrom_Id_in_A','' );
//...
ini.free;

// und zum schreiben:
ini := TMemIniFile.Create(Dateiname);
ini.writeString('Edits','Strangstrom_Id_in_A',Edit1.text);
//..
ini.UpdateFile,
ini.free;

_________________
We are, we were and will not be.
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Fr 10.03.06 16:37 
mein Problem befindet sich, denke ich wirklich nur in den letzten Zeilen,
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Fr 10.03.06 16:41 
Ich rate mal das es eigentlich so heißen müsste:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button4Click(Sender: TObject);   //öffnen der datei
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]
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button4Click(Sender: TObject);   //öffnen der datei
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;

_________________
Markus Kinzler.
beljo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: Fr 10.03.06 17:32 
danke marcus,
leider ist aber das problem nicht gelöst in den letzten zeilen, beim einlesen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button4Click(Sender: TObject);   //öffnen der datei  
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129



BeitragVerfasst: 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.