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.:
(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!
Programmieren macht Spaß..., jedoch nur wenn man das Wirrwar an Befehlen und Funktionen verstanden hat...!!