![]() |
Zeichenkette zwischen kommas aus string in array schreiben
Versuche es jetzt nochmal in einem neuen Thread
Also ich habe einen string: Zitat:
GPGGA[1] -> 155805.998 GPGGA[2] -> 5004.8801 GPGGA[3] -> N GPGGA[4] -> 00835.7431 GPGGA[5] -> E GPGGA[6] -> 1 GPGGA[7] -> 03 GPGGA[8] -> 03.7 GPGGA[9] -> 00100.9 GPGGA[10] -> M GPGGA[11] -> 47.5 GPGGA[12] -> M GPGGA[13] -> Ich bekomms einfach nicht auf die Reihe, das kann doch nicht so kompliziert sein.... bin für jede Hilfe dankbar!!! mfg btbe |
Re: Zeichenkette zwischen kommas aus string in array schreib
Guck mal in der CodeLib nach
![]() |
Re: Zeichenkette zwischen kommas aus string in array schreib
hatte ich schon aber wie bau ich die genau ein? bin absoluter noob!
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Je nach Delphi-Version kannst du auch die Eigenschaft
![]() ![]() Greetz alcaeus |
Re: Zeichenkette zwischen kommas aus string in array schreib
Du hast folgende Prozedur:
Delphi-Quellcode:
Sie erwartet 3 Parameter: Den Separator, den Ursprungsstring und das Limit.
function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
Wie gesagt: Zitat:
Die einzelnen Werte sind in deinem Fall ja durch Kommata separiert, also ist der Separator , :zwinker: So, jetzt müsste das klarer sein ;-) |
Re: Zeichenkette zwischen kommas aus string in array schreib
wie kann ich dann die TStringList (bzw. einzelne einträge) auslesen? wird auch wenn zwischen den kommas nichts steht ein platzhalter reingeschrieben, den die werte des strings ändern sich und ich muss auf bestimmte positionen im string zugreifen können (auch da wo zw. den kommas nichts steht, kann bei der nächsten abfrage etwas stehen! Ich benutze delphi6
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Die stringlist ist so was wie ein array of String, also auslesen geht dann so;
Delphi-Quellcode:
astring:= astringlist[0];
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Hi btbe,
hier ein kleines Beispiel zur Verwendung der StringList:
Delphi-Quellcode:
In der Schleife werden die Elemente eines nach dem anderen ausgelesen und angezeigt, du könntest sie aber auch in ein Array schreiben. Besser wäre vielleicht sogar, die StringList statt dem Array zu verwenden, dann sparst du dir das ewige rumkopieren.
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; SL: TStringList; begin SL := TStringList.Create; try SL.Delimiter := ','; SL.DelimitedText := '155805.998,5004.8801,N,00835.7431,E,1,03,03.7,00100.9,M,47.5,M,,*6E'; for i := 0 to SL.Count-1 do ShowMessage(SL.Strings[i]); finally SL.Free; end; end; Greetz alcaeus |
Re: Zeichenkette zwischen kommas aus string in array schreib
Liste der Anhänge anzeigen (Anzahl: 1)
Hi, Programm ist im Anhang (inc. QT) leider funzt das letze Segment nicht. Weiß nicht woran das liegt. Vielleicht am Sternchen??
MfG |
Re: Zeichenkette zwischen kommas aus string in array schreib
Delphi-Quellcode:
was hab ich hier falsch gemacht? bekomme diese meldung
...
type TForm1 = class(TForm) Memo1: TMemo; ComPort: TApdComPort; Label1: TLabel; Button1: TButton; Label2: TLabel; Label3: TLabel; Label4: TLabel; Timer1: TTimer; function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; procedure ComPortTriggerAvail(CP: TObject; Count: Word); procedure Timer1Timer(Sender: TObject); ... 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 := AnsiStrPos(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; ... Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz