![]() |
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:
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Also erstmal Danke an alle! Hab den Code von MrNiceGuy verwendet und der ist genau das was ich gesucht habe....
Doch es wäre ja auch zu schön.... und zwar will ich jetzt den einen wert den ich aus dem array habe umrechnen (Geschwindigkeit ist in knoten angegeben und soll auf km/h umgerechnet werden). Wenn ich nun aber mit dem wert weiterarbeiten will, bekomm ich die meldung Zitat:
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Aus einem Extended machst du per floattostr einen String. Zu deinem Undeclared Identifier:
Du musst dir erst diesen Typ erstellen:
Delphi-Quellcode:
TStringDynArray = array of string;
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Frag mich nicht warum aber es funzt nicht, wenn ich die Zeile bei types einfüge, sacht er mir '=' found but ':' expected.... wenn ich das dann ändere kommt auch nix bei rum.... ich bin echt am verzweifeln...
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Hi,
entweder stehts wohl unter var oder innerhalb einer anderen Typdeklaration {Klassendeklarationen bspw. werden mit end abgeschlossen.) Schreib Deine Typdefinition mal direkt nach TYPE, dann muss es eigentlich gehn... Gruß Stephan :dance: |
Re: Zeichenkette zwischen kommas aus string in array schreib
Ich weiß zwar nicht, ab welcher Version, aber in der Types.pas ist TStringDynArray schon deklariert. Einfach in die Uses damit.
|
Re: Zeichenkette zwischen kommas aus string in array schreib
Hallo.
Ich habe ein ähnliches Problem. Bloß habe ich einen String, der nur aus Zahlen besteht und der durch Kommas getrennt ist. Nun möchte ich die einzelnen Strings als INtegerwerte im Array haben. Wie mache ich das? habs schon versucht aus ner StringList rauszubekommen oder irgendwie aus der zeichenkette von MrNiceGuys algo. Hat aber bis jetz nicht funktioniert. hat jemand eine Idee. Vielleicht du alcaeus ^^ ? |
Re: Zeichenkette zwischen kommas aus string in array schreib
Hi Coolboarder_9,
versuchs mal so:
Delphi-Quellcode:
mit TryStrToInt wird versucht, einen String-Wert in einen Integer umzuwandeln. Schlägt dies fehl, dann liefert die Funktion false zurück. In dem Fall wird die Variable sicherheitshalber auf False gesetzt.
type IntAr = array of Integer;
procedure StringTeilen(var IntArray: IntAr; str: String); var i: Integer; SL: TStringList; begin SL := TStringList.Create; try SL.Delimiter := ','; SL.DelimitedText := str; SetLength(IntArray, SL.Count); for i := 0 to SL.Count-1 do begin if not TryStrToInt(SL.Strings[i], IntArray[i]) then IntArray[i] := 0; end; finally SL.Free; end; end; Greetz alcaeus [edit]Kleinen Fehler im Code verbessert[/edit] |
Re: Zeichenkette zwischen kommas aus string in array schreib
Oder auch einfach so:
Delphi-Quellcode:
var
list: tStringlist; begin list:= TStringlist.create; list.commatext:=DeinString; end; |
Re: Zeichenkette zwischen kommas aus string in array schreib
Hallo. Danke schonmal.
Hab nur leider bei der Stelle SetLength(IntAr, SL.Count); einen Fehler incomptaible types wird angezeigt. Was stimmt da nciht. UNd was erwartet die Prozedur eigentlich für Parameter beim aufruf? Danke |
Re: Zeichenkette zwischen kommas aus string in array schreib
Hi Coolboarder_9,
hier ein Beispielaufruf:
Delphi-Quellcode:
Greetz
var
Zahlen: IntAr; //nicht array of Integer begin StringTeilen(Zahlen, RichEdit1.Text); StringTeilen(Zahlen, Memo1.Text); StringTeilen(Zahlen, Edit1.Text); end; alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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