Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#4

AW: Aus Datei nur 2 Spalten einlesen?

  Alt 9. Mai 2012, 22: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;
Angehängte Dateien
Dateityp: zip Beispiel Spalten lesen (Code).zip (5,4 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat