Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Bestimmte Werte aus einer Textdatei
Cool-Fux - Di 10.04.07 19:08
Titel: Bestimmte Werte aus einer Textdatei
Hallo,
ich möchte bestimmte Werte aus einer Textdatei mit TStringList holen.
Die Textdatei ist so aufgebaut:
Quelltext
1: 2: 3: 4: 5:
| #NENN H B S T T1 R R2 D1 W1 W3 A OFL GEW IY WY IZ
100 96 100 5.0 8.0 8.0 12 0 13.0 56 0 21.2 0.56 16.7 349 72.8 134 120 114 120 5.0 8.0 8.0 12 0 17.0 66 0 25.3 0.67 19.9 606 106.0 231 140 133 140 5.5 8.5 8.5 12 0 21.0 76 0 31.4 0.79 24.7 1030 155.0 389 |
usw.
Nach der Auswahl in der ComboBox2 z.B. 100 sollen die Werte 16.7 GEW und 72.8 WY in eine
StringGrid oder TEdit eingetragen werden.
Mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.ComboBox2Change(Sender: TObject); var tempStringList : TStrings; aFile : String; i : Integer; begin aFile := ExtractFilePath(ParamStr(0))+'tab\'+ComboBox1.Text+'.txt'; if FileExists(aFile) then begin tempStringList := TStringList.Create; try tempStringList.LoadFromFile(aFile); for i := 2 to tempStringList.Count -1 do EditGewicht.Text:=(Copy(tempStringList[i],4,pos(' ',tempStringList[i]))); finally tempStringList.Free; end; end; end; |
Wie kann man das am besten Umsetzen?
Moderiert von
raziel: Delphi-Tags hinzugefügt.
mkinzler - Di 10.04.07 19:11
Weise die Zeile(n) .DelimitedText zu, dann kannst du per Index(.Strings[x]) auf die Werte zugreifen
Cool-Fux - Di 10.04.07 19:30
Hallo,
Danke für die Schnelle Antwort.
Ich bin Anfänger.
DelimitedText kenn ich (noch) nicht!
Ein Beispiel mit Erklärung währe sehr hilfreich!
mkinzler - Di 10.04.07 19:35
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var tempStringList, sl2 : TStrings; ... tempStringList := TStringList.Create; sl2 := TStringList.Create; ... for i := 2 to tempStringList.Count -1 do begin sl2.DelimitedText := tempStringList[i]; gew := sl2.Strings[14]; wy := sl2.Strings[16]; ... |
Cool-Fux - Di 10.04.07 20:03
Hallo,
Mein Code sieht jetzt so aus:
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:
| procedure TForm1.ComboBox2Change(Sender: TObject); var tempStringList : TStrings; aFile : String; i : Integer; begin aFile := ExtractFilePath(ParamStr(0))+'tab\'+ComboBox1.Text+'.txt'; if FileExists(aFile) then begin tempStringList := TStringList.Create; try tempStringList.LoadFromFile(aFile); for i := 2 to tempStringList.Count -1 do begin tempStringList.DelimitedText := tempStringList[i]; EditGewicht.Text := tempStringList.Strings[14]; EditWerkstoff.Text := tempStringList.Strings[16]; end; finally tempStringList.Free; end; end; end; |
Ich erhalte bei der ComboBox Auswahl folgenden Fehler:
Listenindex überschreitet das Maximum (14)
Moderiert von
raziel: Delphi-Tags hinzugefügt
mkinzler - Di 10.04.07 20:08
Du hast meinen Code falsch übernommen, du benötigst 2 StringListen.
Cool-Fux - Di 10.04.07 20:50
Ich glaube jetzt funst es.
Nur werden die Werte aus der letzen Zeile ausgelesen!?
mkinzler - Di 10.04.07 20:52
Es werden die Werte aller Zeilen übernommen, aber immer wieder überschrieben.
Cool-Fux - Mi 11.04.07 22:13
Hallo,
ich habe immer noch Probleme mit meinen Code:
Code:
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:
| procedure TForm1.ComboBox2Change(Sender: TObject); var s11 : TStrings; s12 : TStrings; aFile : String; i : Integer; begin aFile := ExtractFilePath(ParamStr(0))+'tab\'+ComboBox1.Text+'.txt'; if FileExists(aFile) then begin s11 := TStringList.Create; s12 := TStringList.Create; try s11.LoadFromFile(aFile); s12.LoadFromFile(aFile); for i := 2 to s11.Count-24 do begin s12.DelimitedText := s11.Strings[i]; if ComboBox2.Text =('100') then EditPreis.Text := s12.Strings[16]; EditBreite.Text := s12.Strings[2]; EditGewicht.Text := s12.Strings[13]; EditOFL.Text := s12.Strings[12]; end; finally s11.Free; s12.Free; end; end; end; |
Die erste Zeile nach If Combibox2.Text =('100') then wird nicht übergeben!
(EditPreis.Text := s12.strings[16];)
Wie kann ich jetzt noch die anderen Werte für 120, 140, 160 usw. in der ComboBox2 auf der Textdatei hohlen. Ich komme hier nicht richtig weiter.
Moderiert von
raziel: Delphi-Tags hinzugefügt
BenBE - Mi 11.04.07 22:30
Schau Dir mal TStringList.CommaText an ;-)
Cool-Fux - Mi 11.04.07 22:46
Hallo,
Vielleicht ein Beispiel?
BenBE - Do 12.04.07 18:24
Siehe Delphi-Hilfe oder FoSuFu. :mahn: Oder hast Du deren Installation aus Platzgründen ausgelassen? ;-)
Cool-Fux - Fr 13.04.07 12:44
Hallo,
daten auslesen funst jetzt, aber wie kann ich jetzt noch erreichen
wenn ich in der ComboBox den Wert 100 auswähle die Werte aus der 5. Zeile ausgelesen werden
und bei den Wert 120 die Werte aus Zeile 7. usw.
Cool-Fux - Mo 16.04.07 19:33
Hallo,
hat keiner eine Idee?
Mein Code sieht jetzt so aus:
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:
| procedure TForm1.ComboBox2Change(Sender: TObject); var sl1 : TStrings; sl2 : TStrings; aFile : String; i : Integer; begin aFile := ExtractFilePath(ParamStr(0))+'tab\'+ComboBox1.Text+'.txt'; if FileExists(aFile) then begin sl1 := TStringList.Create; sl2 := TStringList.Create; try sl1.LoadFromFile(aFile); sl2.LoadFromFile(aFile); if ComboBox2.Text =('100') then; sl2.CommaText := sl1.Strings[2]; EditOFL.Text := sl2.Strings[12]; EditGewicht.Text := sl2.Strings[13]; if ComboBox2.Text =('120') then; sl2.CommaText := sl1.Strings[3]; EditOFL.Text := sl2.Strings[12]; EditGewicht.Text := sl2.Strings[13]; if ComboBox2.Text =('140') then; sl2.CommaText := sl1.Strings[4]; EditOFL.Text := sl2.Strings[12]; EditGewicht.Text := sl2.Strings[13] finally sl1.Free; sl2.Free; end; end; end; |
Es funst immer noch nicht!
Es werde immer die Werte gleichen Werte ausgegeben, egal was man in der ComboBox2
auswählt.
Wenn ich die if Anweisung in begin und end setze werden keine Werte ausgegeben.
Bitte um Hilfe / Idee!
Moderiert von
raziel: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!