![]() |
Wie am besten String aufteilen?
Hallo,
ich habe vor einen kleinen Usenet Clienten zu schreiben. Für die Suche wird eine PHP Datei verwendet, welche bei der Suche mit idHTTP aufgerufen wird. Die Ausgabe der PHP Datei sieht dann so aus: ![]() Es wird nach dem gesucht, was hinter =s steht... nun habe ich keine Ahnung wie ich das ganze nun aufteilen soll in: Nachricht - Gruppe - Größe Ich habe auch schon die Suche benutzt, aber nichts gefunden was mich weiterbringt. Hoffe jemand weiß weiter :( Grüße, Dash |
Re: Wie am besten String aufteilen?
Hi Dash,
dein URL liefert tab delimited text - den kannst du relativ einfach mit einer TStringList verarbeiten. Ein wenig Code für dich:
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.DownloadButtonClick(Sender: TObject);
var ms: TMemoryStream; url: string; slLines, slFields: TStringList; i: integer; begin url := 'http://www.yashare.de/spider/query.php?s=aaa'; ms := TMemoryStream.Create; HTTP.Get(url, ms); slLines := TStringList.Create; slFields := TStringList.Create; ms.Position := 0; slLines.LoadFromStream(ms); ms.Free; slFields := TStringList.Create; slFields.Delimiter := #9; if slLines.Count > 0 then begin slFields.DelimitedText := slLines[0]; ShowMessage(slFields.Text); end; slLines.Free; slFields.Free; end; |
Re: Wie am besten String aufteilen?
Hallo,
danke erstmal für die schnelle Hilfe umd dem Code :thumb: Jetzt habe ich das Problem, dass die Ergebnisse in einer ListView sollen... :oops: ich weiß echt net wie ich die Ergebnisse wieder aufteilen soll Grüße, Dash |
Re: Wie am besten String aufteilen?
Delphi-Quellcode:
noch fragen? in sts sollte das ganze gebrabbel stehen, und zwar in Blöcken von SPerE.
procedure StuffintoLV(LV:TListView; sts: TStrings; SPerE: integer;separator: string);
var numEntries, i:integer; s:string; begin numEntries := sts.count div SPerE; for i := 0 to numEntries -1 do begin s := sts[i*SPerE]+separator+sts[i*SPerE+1]+separator+sts[i*SPerE+2] LV.add(s); end; end; (also Name1-xxx1-yyy1-name2-xxx2-yyy2) |
Re: Wie am besten String aufteilen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Dash,
die einzelnen Felder eines Datensatzes stehen dir in meinem Code in slFields zur Verfügung. Wenn du eine virtuelle ListView verwendest, dann kannst du so auf die Felder zugreifen:
Delphi-Quellcode:
Wie das mit der virtuellen ListView funktioniert, das kannst du dir in einem anderen thread ansehen:
procedure TMainForm.ListViewData(Sender: TObject; Item: TListItem);
var i: integer; begin // slFields.Delimiter ist #9 - nicht vergessen slFields.DelimitedText := slLines[Item.Index]; Item.Caption := Format('%.0n', [1.0 * Item.Index]); for i := 0 to Pred(slFields.Count) do Item.SubItems.Add(slFields[i]); end; ![]() Grüße vom marabu Edit: Habe die zitierte Demo um eine Download-Action erweitert, die deinen tab delimited text verarbeiten kann. Nicht anschauen, wenn du es selbst versuchen willst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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