Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringliste auf Memo ausgeben (https://www.delphipraxis.net/34531-stringliste-auf-memo-ausgeben.html)

Tommy111 24. Nov 2004 11:17


Stringliste auf Memo ausgeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
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? :gruebel:
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!

Ultimator 24. Nov 2004 11:35

Re: Stringliste auf Memo ausgeben
 
Setz mal ein paar Haltepunkte und schau jeweils, welchen Wert die Eigenschaft Text der Stringliste hat.

gmarts 24. Nov 2004 11:40

Re: Stringliste auf Memo ausgeben
 
Explode
Ne andere Variante.

Steve 24. Nov 2004 11:46

Re: Stringliste auf Memo ausgeben
 
Die letzte Zahl wird nicht beachtet, weil das letzte Zeichen des Strings noch zur Zahl gehört und die Ausgabe nur erfolgt, wenn nach der Zahl ein nicht-numerisches Zeichen gefunden wird.
Prüf, ob zahl=true ist, nachdem die Schleife durchgelaufen ist, dann kannste die letzte Zahl noch kopieren.

Gruß
Stephan :dance: :xmas:

Tommy111 25. Nov 2004 10:08

Re: Stringliste auf Memo ausgeben
 
Un wie kann ich jetz die Werte in der Stringliste jeweils einer Variable zuordnen, wie schon erwähnt:
Code:
v1=9.8457 
v2=95904
usw....
sollte ungefähr so auf Memo ausgegeben werden!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz