![]() |
String mit Trennzeichen in array aufsplitten
hi.
ich habe den folgenden typen + variable definiert:
Delphi-Quellcode:
ich habe nun einen ca. 500kb großen string im folgenden format:
TMarketData = Record
MarketID: Integer; MarketName: String; MarketType: String; MarketStatus: String; EventDate: TDateTime; MenuPath: String; EventHierarchy: String; BetDelay: String; ExchangeId: Integer; ISO3CountryCode: String; LastRefresh: TDateTime; NumberOfRunners: Integer; NumberOfWinners: Integer; TotalAmountMatched: Double; BSPMarket: Boolean; TurningInPlay: Boolean; end; Market: Array of TMarketData;
Delphi-Quellcode:
diesen will ich in das array bekommen.
97383~Next Man Utd Manager~O~ACTIVE~1000731600000~\Soccer\Specials~/1/97381/97383~0~1~GBR~1214381583371~40~1~106887.3~N~N:4575285~Outright Winner~O~ACTIVE~1212854400000~\Soccer\Euro 2008~/1/4574657/4575285~0~1~CHE~1214381583371~4~1~1.249529301E7~N~N:20089116~Match Odds~O~SUSPENDED~1160143200000~\Soccer\U19 Euro Championship\Fixtures 06 October\FYR Macedo U19 v Rep Ire U19~/1/232548/10291447/10291446/20089116~0~1~GBR~1214381583371~3~1~0.0~N~N:20692870~Winner 2010~O~ACTIVE~1149858000000~\Soccer\World Cup~/1/785071/20692870~0~1~DEU~1214381583371~34~1~16839.7~N~N:20745001~To Reach The Final~O~ACTIVE~1138448359000~\Soccer\Euro 2008~/1/4574657/20745001~0~1~CHE~1214381583371~4~2~468719.12~N~N:[...] usw.
":" ist das trennzeichen für einen neuen markt --> neuer TMarketData und "~" ist das trennzeichen für das nächste feld. die reihenfolge stimmt überein. wie krieg ich das ganze nun möglichst schnell und elegant in den array? das zweite problem ist, dass immer wenn ein ":" KEIN trennzeichen ist, sondern z.B. eine Uhrzeit etc. ein blackslash vorran gestellt ist "\:" das müsste man halt auch berücksichtigen :-/. falls jemand einen guten ansatz hat wäre ich sehr dankbar! grüße aus berlin konrad |
Re: String mit Trennzeichen in array aufsplitten
Ich würde 2 Stringlisten (.Delimiter .DelimitedText)verwenden. Die äußere für die Datensätze und die innere für die Felder.
|
Re: String mit Trennzeichen in array aufsplitten
hi.
könntest du da grob die vorgehensweise beschreiben? danke! |
Re: String mit Trennzeichen in array aufsplitten
Delphi-Quellcode:
getippt und nicht getestet
var
slds, slf: TStrings; i, j: Integer; ... slds := TStringList.Create; slds.Delimiter := ':'; slf := TStringList.Create; slf.Delimiter := '~'; slds.DelimitedText := <string>; for i := 0 to slds.Count -1 do begin //Neuer DS ... slf.DelimitedText := slds[i]; //Felder // slf[0] ist erstes Feld ... end; |
Re: String mit Trennzeichen in array aufsplitten
also in dem array wär es schon besser als in zwei stringlisten, weil ich noch recht häufig im laufe des codes auf die sachen zugreife und dann immer alles umwandeln müsste.
speicherplatztechnisch ist das ja auch nicht das tollste nur strings zu nehmen. außerdem besteht weiterhin das problem mit "\:" und im nachhinein die richtigen einträge wiederzufinden wird mit der variante auch ein spass... aber danke trotzdem für die idee!! kannte ich auch noch nicht :-) |
Re: String mit Trennzeichen in array aufsplitten
Es ging ja um das Auslesen, du kannst in der Schleife de Werte ja in den Array bzw Record schreiben.
|
Re: String mit Trennzeichen in array aufsplitten
stimmt, ging ganz gut!
musste nur "StrictDelimiter:=True" setzen, damit er keine leerzeichen trennt. danke nochmal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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