Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie am besten String aufteilen? (https://www.delphipraxis.net/58718-wie-am-besten-string-aufteilen.html)

Dash 11. Dez 2005 15:28


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: http://www.yashare.de/spider/query.php?s=aaa

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

marabu 11. Dez 2005 15:46

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:
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;
Grüße vom marabu

Dash 11. Dez 2005 16:12

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

DGL-luke 11. Dez 2005 17:47

Re: Wie am besten String aufteilen?
 
Delphi-Quellcode:
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;
noch fragen? in sts sollte das ganze gebrabbel stehen, und zwar in Blöcken von SPerE.
(also Name1-xxx1-yyy1-name2-xxx2-yyy2)

marabu 11. Dez 2005 18:38

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:
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;
Wie das mit der virtuellen ListView funktioniert, das kannst du dir in einem anderen thread ansehen: klick

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 19:31 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