| Autor |
Beitrag |
fbkreon
      
Beiträge: 50
|
Verfasst: Sa 28.09.02 12:37
Ich weiß nicht, ob diese Frage schon mal gestellt worden ist, jedenfalls habe ich nichts dergleichen gefunden.
Ich würde gerne, ähnlich wie in PHP nen string mit der Form:
variable1=bla&variable2=blabla....
gerne so zerpflücken, daß ich direkt auf die Variablen mit den zugeordneten Werten zugreifen kann.
Gibt es so was in Delphi, oder muß ich sowas selbst bauen?
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Sa 28.09.02 12:56
Als erstes machst du
neuerstring := StringReplace(deinstring, '&', ',', rfReplaceAll);
und dann kannst mit einer erzeugten Strinlist folgendes machen
neuestringlist.commatext := neuerstring;
dann hast du in neueStringlist.names alle strings vor dem '=' und in neuestringlist.values alles hinter dem '='
Gruß
Ken
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: Sa 28.09.02 13:48
Und wie sieht es aus, wenn man eine Variable hat, in der ein Komma vorkommt?
Gruß
____________
Ex0rzist
|
|
fbkreon 
      
Beiträge: 50
|
Verfasst: Sa 28.09.02 14:11
Da kann ich Dir vielleicht helfen,
in PHP würde ich da einfach ein \ oder ein anderes mir bekanntes Zeichen packen, was nicht interpretiert wird. Da Delphi anscheinend ein Komma als Limiter oder Seperator interpretiert, würde ich also ein Komma durch ein Synonym ersetzen, z.B.: &kom&
oder so etwas, das funktioniert in jedem Fall, du mußt nur dann vor jeder Ausgabe oder Weiterverarbeitung dann das umsetzen in ein "Real"Komma
|
|
Ex0rzist
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: Sa 28.09.02 14:18
Das war eher eine rhetorische Frage.
Es ist in meinen Augen nicht unbedingt der beste Weg, die Variablen dem Algorithmus anzupassen, sondern eher anders herum.
Ich würde das mit einer Schleife realisieren. Alles was zwischen einem '&' und einem '=' steht kopieren und in Variable und Wert zerlegen.
Gruß
______________
Ex0rzist
|
|
fbkreon 
      
Beiträge: 50
|
Verfasst: Sa 28.09.02 14:40
Kann aber sehr hilfreich sein, speziell wenn man eigene Klassen oder Komponenten baut. Ich habe mir eine PHP-Derivat gebastelt, was noch einfacher und komfortabler zu handhaben ist, als das Original...man umgeht so auch Bugs. 
|
|
fbkreon 
      
Beiträge: 50
|
Verfasst: Sa 28.09.02 14:44
Übrigens hab ich gerade noch etwas gefunden: ExtractStrings scheint sehr interessant zu sein....
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 28.09.02 16:22
TStrings und Co. haben einige kleine Schätzchen die etwas im verborgenen hinvegetieren und kaum beachtet werden. Vielleicht kannst du einiges davon gebrauchen:
.CommaText >> Importiert einen String und zerlegt ihn bei Kommas in einzelne Strings
.Values >> Liefert den Wert-Teil wenn Bezeichner angeben wird und die Form "Bezeichner=Wert" ist
uvm.
Manchmal kann man sich damit einen Parser sparen.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Sa 28.09.02 16:24
Ups...
hab gerade gesehen, daß Values schon bemerkt wurde.
|
|
fbkreon 
      
Beiträge: 50
|
Verfasst: Sa 28.09.02 17:03
Vielen Dank Euch allen für die schnelle Hilfe.
Aber ich habe soeben die NonPlusUltra-Lösung gefunden.
TExtractStrings und für die Bearbeitung von URLs TExtractHTTPFields.
Beide benötigen eine Stringlist:
Das kann dann z.B. So aussehen:
var TempList: TStringList;
{...}
begin
TempList:=TStringList.Create; { list object constructen }
chrSepa:=['&','=']; { Das sind hier die Trennzeichen }
chrWhite:=['w']; { Whitespacezeichen , hier: w wird ignoriert.... }
try
ExtractHTTPFields(chrSepa,chrWhite,PCHAR(URL-String),TempList);
finally
TempList.Free; { list object zerstören}
end;
end;
Fertig....mit TempList[..] kann man nun die ganze Geschichte als Array steuern und mit den Stringlist-Zusätzen bearbeiten.
ACHTUNG!! Das Bearbeiten geht nur solange, bis der .Free Asudruck gestartet wurde.....!!
|
|