Einzelnen Beitrag anzeigen

Benutzerbild von Tommy111
Tommy111

Registriert seit: 2. Nov 2004
Ort: Kirchberg
35 Beiträge
 
Delphi 6 Professional
 
#1

Stringliste auf Memo ausgeben

  Alt 24. Nov 2004, 11:17
Hi, versuche erneut mein Glück. Hatte schon mal das Thema eingestellt, hat mir auch größtenteils geholfen, sind aber immer noch en paar Problemchen vorhanden!

Zum Problem:
Hab ne Textdatei , z.B.:
Code:
9.8457  95904 abds usw.
(benutze hier zum Testen einfach en Edit Fenster zur eingabe). Ich will nur die Zahlen, hier: 9.8457 und 95904 rausfiltern und in eine Stringliste ablegen. Nun will ich zum Schluß die Stringliste, d.h. alle Zahlenwerte auf einem Memo ausgeben(soll dann so aussehen):
Code:
v1=9.8457
v2=95904
v3= ....
Bei mir schreibt der immer nur die erste Zahl ins Memo! Versteh nicht warum die Schleife net bis zum Ende des Strings durchläuft?
Hier mal den Code der bis jetzt steht:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button6: TButton;
    Button7: TButton;
    Edit1: TEdit;
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure StrToMemo(s: string);




  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var pos : integer;
    sl: TStringList;
    //v1,v2 : string;
var zahl: boolean;
    zahlstart, zahllength: integer;
    zahlstring: string;



procedure TForm1.Button6Click(Sender: TObject);
begin
 Close
end;

procedure TForm1.StrToMemo(s: string);
var i : integer;
begin
 sl:=TStringList.Create;
 //sl.LoadFromFile('C:\Dokumente und Einstellungen\Tommy\Desktop\Delphi2');
 //s:='0.001 abc 1.45'; //zum Testen
 zahl:=false;

 for i:=1 to length(s) do begin //wenn Position nicht feststeht
    if (ord(s[i])>=48) and (ord(s[i])<=57) and (not zahl) then begin
       zahl:=true;
       zahlstart:=i;
    end;
    if zahl then begin
       if (s[i]<>'.') then begin
          if (ord(s[i])<48) or (ord(s[i])>57) then begin
             zahl:=false;
             zahllength:=i-zahlstart;
             zahlstring:=copy(s,zahlstart,zahllength);
             pos:=sl.Add(zahlstring);
          end;
       end;
     end;
 end;



 (*v1:='v1='+copy(s,1,5);    //bei fester(bekannter) Position
pos:=sl.Add(v1);
v2:='v2='+copy(s,15,18);
pos:=sl.Add(v2); *)


 Memo1.Lines.AddStrings(sl)
end;

procedure TForm1.Button7Click(Sender: TObject); // Stringliste >> Memofeld
begin
  StrToMemo(Edit1.Text)
end;

end.
Hoffe ihr könnt mir mal wieder aus der Scheiße helfen!
P.S.: hab auch mal die ganze Datei hier angehängt, zum schnellen ausprobieren!
Angehängte Dateien
Dateityp: zip xxxxxxx.zip (203,2 KB, 6x aufgerufen)
Programmieren macht Spaß..., jedoch nur wenn man das Wirrwar an Befehlen und Funktionen verstanden hat...!!
  Mit Zitat antworten Zitat