AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String mit Trennzeichen in array aufsplitten
Thema durchsuchen
Ansicht
Themen-Optionen

String mit Trennzeichen in array aufsplitten

Ein Thema von Cyberstorm · begonnen am 25. Jun 2008 · letzter Beitrag vom 25. Jun 2008
Antwort Antwort
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#1

String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 10:41
hi.

ich habe den folgenden typen + variable definiert:

Delphi-Quellcode:
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;
ich habe nun einen ca. 500kb großen string im folgenden format:
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. diesen will ich in das array bekommen.

":" 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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 10:51
Ich würde 2 Stringlisten (.Delimiter .DelimitedText)verwenden. Die äußere für die Datensätze und die innere für die Felder.
Markus Kinzler
  Mit Zitat antworten Zitat
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#3

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 10:56
hi.
könntest du da grob die vorgehensweise beschreiben?

danke!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 11:02
Delphi-Quellcode:
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;
getippt und nicht getestet
Markus Kinzler
  Mit Zitat antworten Zitat
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#5

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 11:09
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 11:16
Es ging ja um das Auslesen, du kannst in der Schleife de Werte ja in den Array bzw Record schreiben.
Markus Kinzler
  Mit Zitat antworten Zitat
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#7

Re: String mit Trennzeichen in array aufsplitten

  Alt 25. Jun 2008, 14:00
stimmt, ging ganz gut!

musste nur "StrictDelimiter:=True" setzen, damit er keine leerzeichen trennt.

danke nochmal
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz