Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: UrlToFilename, brauche etwas Hilfe

  Alt 6. Mai 2018, 00:39
Vielen Dank für Tipps!
Delphi-Quellcode:
Function UrlToFilename( Const sURL: String ) : String;
var
  tmp: String;
  iPos: Integer;
begin
  Result := '';
  tmp := sURL;
  iPos := Pos('?',tmp);
  if iPos > 0 then tmp := Copy(tmp,1,iPos - 1);
  iPos := Pos('//',tmp);
  if iPos > 0 then
  begin
    tmp := Copy(tmp,iPos+2,Length(tmp));
    iPos := Pos('/',tmp);
    if iPos <> 0 then
     repeat
       tmp := Copy(tmp,iPos + 1,Length(tmp));
       iPos := Pos('/',tmp);
     until iPos = 0
     else tmp := 'index.html';
    for iPos := 1 to Length(tmp) do
     begin
       if ((Ord(Char(tmp[iPos])) >= $20)and(Ord(Char(tmp[iPos])) <= $7F)) then // only use chars between ascii #32 and #127
        if ((tmp[iPos]<>'"')and(tmp[iPos]<>'$')and(tmp[iPos]<>'?')and(tmp[iPos]<>'*')and(tmp[iPos]<>'<')and(tmp[iPos]<>'>')and(tmp[iPos]<>'/')and(tmp[iPos]<>'\')) then // filter out bad filename chars
         Result := Result + tmp[iPos];
     end;
  end;
  if Result = 'then Result := 'index.html';
end;
So macht es genau was ich will, tut mir leid das ich den Source so verunstaltet habe aber so scheint es zu funktionieren.

@Delphi.Narium: Ja, so grausam es klingen mag aber was Du schreibst trifft den Nagel auf den Kopf.
Zuerst alles hinter "?" kappen
Dann alles vor "//" kappen
Jetzt gucken ob ein "/" existiert oder "index.html" ausgeben.
Falls mehrere "/" existieren halt nur den Rest dahinter verwenden.
Wenn dann noch etwas übrig sein sollte durch den Char-Checker jagen.
Zu guter letzt, falls kein Ergebnis vorliegt ein "index.html" draus machen.
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 6. Mai 2018 um 00:54 Uhr) Grund: Code aktualisiert
  Mit Zitat antworten Zitat