Sowas mach' ich eigentlich immer auf die einfache und blöde Art:
Zuerst aus http:// bzw. https:// einen Laufwerksbuchstaben machen, also z. B. c:\.
Danach alle / umdrehen zu \.
Anschließend funktionieren ExtractFilename, ChangeFileExt ... wie bei "normalen" Dateinamen.
Hat man 'ne
Url mit Parametern, muss man vorher alles hinter dem ? wegwerfen.
Delphi-Quellcode:
Function UrlToFilename(Const sURL: String) : String;
var
iPos: Integer;
begin
iPos := Pos('?',sUrl);
if iPos > 0 then sUrl := Copy(sUrl,1,iPos - 1);
iPos := Pos('//',sUrl);
if iPos > 0 then sUrl := 'c:' + Copy(sUrl,iPos + 1,Length(sUrl));
sUrl := AnsiReplaceText(sUrl,'/','\');
Result := ExtractFileName(sUrl);
end;
procedure Irgendwas;
begin
// Hier sollte nun newreply.php ausgeben werden:
ShowMessage(UrlToFilename('https://www.delphipraxis.net/newreply.php?do=postreply&t=196264'));
end;
Wenn man die Parameter auch noch auswerten muss, dann kann man z. B. aus ?, &, = und % jeweils 'nen \ machen, damit hat man dann eine "ellenlange" Pfadangabe.
Hier muss man dann ggfls. schauen, was im Einzelfall sinnvoll weiterzuverwenden ist.