Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Parameter aus einer URL parsen und ggf. ändern (https://www.delphipraxis.net/117002-parameter-aus-einer-url-parsen-und-ggf-aendern.html)

kcx 9. Jul 2008 22:37


Parameter aus einer URL parsen und ggf. ändern
 
Hey,

Ich habe z.B folgende URL:
http://www.seite.de/index.php?id=1&name=abc&f=87

Nun würde ich die Parameter dieser URL gerne bequem ändern, ohne da jetzt groß was mit Pos(), Copy(), Insert() usw. zu veranstalten, damit es vll. später so aussieht:
http://www.seite.de/index.php?id=25x&name=123a&f=12

Bei den Indys und in der Win32 API habe ich zwar Methoden gefunden, mit der ich eine URL zerlegen bzw. parsen kann, aber ich bräuchte etwas, womit ich gezielt und bequem irgwelche Parameter manipulieren kann.

Kennt da jmd. was oder muss man da doch die hässlichen Pos(), Copy() etc. Funktionen verwenden?

inherited 9. Jul 2008 23:00

Re: Parameter aus einer URL parsen und ggf. ändern
 
Nö :mrgreen:

Delphi-Quellcode:
function GetParameters(url: String; var sl: TStringList): Boolean;
var params: String;
begin
  params := Copy(url, pos('?', url)+1, length(url));
  sl.Delimiter := '&';
  sl.DelimitedText := params;
  result := sl.Count <> 0;
end;
Um das aus der StringList wieder in eine URL zu bekommen könnte man folgendes machen:

Delphi-Quellcode:
function PutParameters(baseurl: String; var sl: TStringList): string;
var i: Integer;
begin
  result := baseurl + '?';
  for i := 0 to sl.Count-2 do
  begin
    result := result + sl[i] + '&';
  end;
  if sl.Count > 0 then
  begin
    result := result + sl[sl.Count-1];
  end;
end;
Und/Oder um die Parameterliste zu ändern:

Delphi-Quellcode:
function ChangeParameters(url: String; var sl: TStringList): string;
begin
  result := Copy(url, 1, Pos('?', url)-1);
  result := PutParameters(result, sl);
end;
Aufruf, Beispiel:

Delphi-Quellcode:
var myparams: TStringList;
...
myParams := TStringList.Create;
if GetParams('http://www.seite.de/index.php?id=1&name=abc&f=87', myParams) then
begin
  myParams.Values['id'] := 25;
end;
Ungetestet hingetippelt :mrgreen:

kcx 9. Jul 2008 23:22

Re: Parameter aus einer URL parsen und ggf. ändern
 
Ah, Vielen Dank für den Tipp mit der StringList und der Eigenschaft "Values", das hätte mir schon gereicht.
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 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