| Autor |
Beitrag |
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 12:17
Hi!
Ich habe hier eine Textdatei die folgendermaßen aufgebaut ist:
| Zitat: | | 1|text|64.246.38.98|6667|28,8|10,3|1567 |
Wie kann ich den text bis zu dem ersten | auslesen und dann z.b. in ein Editfeld schreiben oder als Caption für ein Label? Und wie geht das dann bis zum 2. |?? 
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 12:22
Such mal hier im forum nach explode
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 12:37
www.delphi-forum.de/...ic.php?p=45780#45780
Da hin hat mich die Suchfunktion gebracht, nur hilft mir das irgendwie gar nix  O gott, warum ist Delphi so schwer 
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 13:59
Kopier dir Funktion mal + die Typdeklaration.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| MyExpl: TStringDynArray;
MyExpl := Explode('|', S); Label1.Caption := MyExpl[0]; Edit1.Text := MyExpl[1]; IPEdit1.Text := MyExpl[2]; |
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Zuletzt bearbeitet von Tweafis am So 22.06.03 14:04, insgesamt 1-mal bearbeitet
|
|
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 14:04
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm); TStringDynArray = array of string;
private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end;
end. |
Das funktioniert leider auch nich, oder hab ich was falsch gemacht? 
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 14:05
Was geht denn nicht? Fehlermeldung,...? Das ist nur die Funktion, du verarbeitest ja gar keine Daten.
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 14:09
| Zitat: | [Fehler] Unit1.pas(15): '=' erwartet, aber Bezeichner 'public' gefunden
[Fehler] Unit1.pas(17): ';' erwartet, aber 'END' gefunden
[Fehler] Unit1.pas(22): '.' erwartet, aber 'IMPLEMENTATION' gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
|

|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 14:10
Du musst die Typdeklaration nicht in dein Form rein sondern kurz vor der Funktion aber NICHT IN DEINE TFORM1 REIN.
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 14:12
Das geht:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
type TStringDynArray = array of string;
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen);
Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := StrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end;
procedure TForm1.Button1Click(Sender: TObject); var VItems: TStringDynArray; x: Integer;
begin VItems := Explode('|', Edit1.Text); for x := Low(VItems) to High(Vitems) do ShowMessage('VItems['+inttostr(x)+'] = '+VItems[x]); end;
end. |
Du brauchst nur ein Edit und ein Button
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 14:24
Oke, also Errors kommen jetzt mal keine, nur funktionieren tut das ned. Ich hab ne Textdatei in C:\test mit dem namen test.txt. Drin steht 123|456.
Geb ich in das Edit Feld C:\test\test.txt ein und klick auf den Button, kommt nur ne Message
| Zitat: | | VItems[0] = C:\test\test.txt |
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 14:26
Das war nur ein Beispiel, du musst in das Edit direkt die Zeile eingeben. Schreiben musst du dein Programm schon selber. Also Zeile auslesen und per ArrayIndex den Einzelnen Labels und Edits oder sowas den string zuweisen...
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
CGerdon
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 22.06.03 14:28
Mitt Zeile angeben gehts. Klasse danke! 
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: So 22.06.03 14:34
Gern geschehen  probier halt nöchstes mal direkt die Posts besser zu lesen bztw den Code mal selberzu debuggen und logisch durchzugehen, davon lernst du meistens mehr als wenn dir das hier jemand erklärt! Ist ernsthaft also Wenn du siehst das da viele Fehler sind, dass du mal guckst woran es liegen könnte!
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|