(Gast)
n/a Beiträge
|
AW: Aus Datei nur 2 Spalten einlesen?
9. Mai 2012, 23:40
Memo ist für sowas schlecht, denn Memo hat WordWrap. Also entweder da auf False setzten oder ListBox nehmen.
Wären die Ergebnisse nur mit Komma, Semikolon oder Tab getrennt, wäre es einfacher, aber bei dir ist es ein Mix. Ist aber auch nicht so wild:
Beispiel im Anhang!
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.WordWrap := False;
Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Kurve.txt');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i, p: Integer;
ErsteZeile, SuchZeile: Integer;
s, s1, s2: String;
begin
//Erste brauchbare Zeile suchen
ErsteZeile := Memo1.Lines.Count;
for i := 0 to Memo1.Lines.Count - 1 do
if SameText(Memo1.Lines[i], 'data1:') then
begin
ErsteZeile := i + 1;
Break;
end;
//Suchzeichen aus Editfeld lesen
SuchZeile := StrToIntDef(Edit1.Text, 1);
Edit1.Text := IntToStr(SuchZeile); //Korrigieren wenn Fehler
SuchZeile := ErsteZeile + SuchZeile;
//Spalten extrahieren (für Beispiel immer nur eine Zeile)
s := Memo1.Lines[SuchZeile];
p := Pos(#9, s); // #9 = Tab
Delete(s, 1, p); //löscht erstes Tab, d.h. bis vor erste Spalte
p := Pos(#9, s); // #9 = Tab
s1 := Copy(s, 1, p); //kopiert bis zweites Tab, d. h. erste Spalte
Delete(s, 1, p); //löscht bis zweites Tab, d.h. bis vor zweite Spalte
p := Pos(#9, s); // #9 = Tab
s2 := Copy(s, 1, p); //kopiert bis drittes Tab, d. h. zweite Spalte
//Delete(s, 1, p); //löscht bis drittes Tab, d.h. bis vor dritte Spalte
Edit2.Text := Trim(s1);
Edit3.Text := Trim(s2);
//Fertig
end;
|
|
Zitat
|