![]() |
eine Liste(TStringList) in einzelne Werte zerlegen
Ich wollte ja eigendlich kein extra thema für die frage aufmachen aber nungut
Also ich hab bastel grad an som rennspiel da soll die strecken als liste Geladen werden (und falls ich später einen editor mache auch als liste gespichert) jetzt hab ich das alles schon hinbekommen mit dem laden und speichern aber was noch fehlt ist das ich die Liste auhc benutzen kann und um sie benutzen zu können muss ich einzelne werte aus der Liste rausholen.... aber ich weis nicht wie ich ne liste in einzelne strings bzw integerwert aufteilen kann :gruebel: |
Re: eine Liste(TStringList) in einzelne Werte zerlegen
Wie sieht denn eine Typische Zeile aus?
|
Re: eine Liste(TStringList) in einzelne Werte zerlegen
Schau mal mnach .Delimiter, .DelimitedText, .CommaText und .Strings[]
|
Re: eine Liste(TStringList) in einzelne Werte zerlegen
Zitat:
4 2 2 3 1 0 0 1 1 0 0 1 5 2 2 6 16 zeilen pro zeile eine ziffer Zitat:
Edit: .Strings[] funktioniert - vielen dank! |
Re: eine Liste(TStringList) in einzelne Werte zerlegen
Hallo Andy92,
versuchs mal damit:
Delphi-Quellcode:
wobei i eine Integervariable von 0 - Listbox.IndexCount-1 ist
s:=ListBox1.Items.Strings[i];
und s eine Stringvariable. Viel Erfolg. Gruß, Linkat |
Re: eine Liste(TStringList) in einzelne Werte zerlegen
:-D ich habs schon hingekrigt und zwar genauso aber trotzdem danke
|
Re: eine Liste(TStringList) in einzelne Werte zerlegen
Wenn deine Datei nur Zahlen (Bytes?) enthält, könntest du das aber auch effektiver binär lösen, statt mit Strings zu arbeiten (viel zu langsam). Also sprich statt 1, 4, 8, ... untereinander in eine Liste zu schreiben kannst du diese Zahlen auch in ein Array of Byte werfen und das in einem Rutsch per FileWrite in eine Datei schreiben. Auslesen kannst du den Spaß dann z.B. so:
Delphi-Quellcode:
type
PByte = ^Byte; var i, fH, fS: Integer; fD: Pointer; Data: PByte; begin fH := FileOpen (...); if (fH = -1) then Fehler; // Dateigröße ermitteln fS := FileSeek (fH, 0, 2); if (fS = -1) then Fehler; FileSeek (fH, 0, 0); // Speicher reservieren und Datei in einem Schlag auslesen GetMem (fD, fS); if (FileRead (fH, fD^, fS) <> fS) then Fehler; // Data auf ersten Wert im Puffer zeigen lassen Data := fD; for i := 0 to fS - 1 do begin showmessage (inttostr (Data^)); // Data enthält den aktuellen Wert if ((i + 1) mod 16 = 0) then ...; // Du meintest was von 16 Zeilen = eine Zahl? inc (Data); // Zeiger weiterschieben, um an den nächsten Wert zu kommen end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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