Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Pfad von Internetseite extrahieren


FSS - Fr 21.12.07 11:47
Titel: Pfad von Internetseite extrahieren
Hallo,

ich stehe da vor folgendem Problem:

Bei einer Datei die auf meiner Festplatte liegt kann ich über ExtractFilePath() den Ordner auslesen, in dem die Datei liegt. Gibt es da auch eine vergleichbare Funktion, die das mit Internetadressen macht?
Bei einer Seite

Quelltext
1:
http://www.test.de/test1/test2/index.html                    

sollte also

Quelltext
1:
http://www.test.de/test1/test2/                    

rauskommen.

Weiß jemand ob es da was gibt?


Calculon - Fr 21.12.07 11:49

Brauchst du das um zum übergeordneten Pfad zu browsen?


FSS - Fr 21.12.07 11:51

Nein, ich lese aus einer Internetseite die darin enthaltenen Links aus. Nun gibt es ja Links die nur auf weitere Unterordner verweisen und von denen hätte ich gerne den genauen Pfad.


LorenzS - Fr 21.12.07 11:52


Delphi-Quelltext
1:
Copy(URL,1,pos('/',URL))                    

Komisch bei früherer projekten hat pos nie das erste angezeigt


FSS - Fr 21.12.07 11:58

Müsste man die Parameter bei Pos nicht umdrehen? Also:

Delphi-Quelltext
1:
Copy(URL,1,pos('/',URL))                    


Aber das gibt mir dann leider auch nur

Quelltext
1:
http:/                    

zurück.


Calculon - Fr 21.12.07 11:59


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
  posi: integer;
  str1, str2: string;
begin
  str1 := 'http://www.test.de/test1/test2/index.html';
  str2 := '';
  repeat
    posi := AnsiPos('/', str1);
    str2 := str2 + copy(str1, 1, posi);
    delete(str1, 1, posi);
  until posi = 0;
  ShowMessage(str2);
end;


LorenzS - Fr 21.12.07 12:04

Diesmal getestet:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 i:=length(edit1.text);
 while (i>0)and(edit1.text[i]<>'/'do dec(i);
 if i>0 then edit2.text:=copy(edit1.text,1,i);
end;


FSS - Fr 21.12.07 12:07

Danke Calculon und LorenzS, damit kann ich arbeiten.

Vielen Dank


Yogu - Fr 21.12.07 12:47

ExtractFilePath müsste meiner Meinung nach auch funktionieren. Müsste man mal ausprobieren...


LorenzS - Fr 21.12.07 12:51

bei ExtractFilePath(URL) kommt nur "http:" raus


Yogu - Fr 21.12.07 12:53

Schade, der hört wohl nur auf Backslashes und nicht auf normale Schrägstriche. :( Aber es wurden ja schon mögliche Antworten genannt, ich dachte nur, man könnte es sich auch einfach machen.


jakobwenzel - Fr 21.12.07 12:54

Aber wenn man den Quelltext von ExtractFilePath leicht ändert, gehts:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function ExtractURLFilePath(const FileName: string): string;
var
  I: Integer;
begin
  I := LastDelimiter(PathDelim + DriveDelim+'/', FileName);
  Result := Copy(FileName, 1, I);
end;


Yogu - Fr 21.12.07 13:01

Woher hast du den Quelltext von ExtractFilePath? :shock:


jakobwenzel - Fr 21.12.07 13:08

Bei allen Delphiversionen, die was kosten, sind die kompletten VCL-Quelltexte dabei.


Yogu - Fr 21.12.07 13:11

Mal wieder was dazugelernt. :D


FSS - Fr 21.12.07 14:44

Tja ich habe leider auch nur Personal Editions. :crying:


LorenzS - Fr 21.12.07 15:04

Wie will man sonst ohne dlhi source den debuggen?


Yogu - Fr 21.12.07 15:44

So wie ich :D Ich gehe davon aus, dass Borland in den Standard-Komponenten nichts falsch gemacht hat. Und um die Funktionsweise herauszufinden, benutze ich die Online-Hilfe oder das Internet. Zum Beispiel das hier [http://www.delphi-forum.de].


LorenzS - Fr 21.12.07 16:13

ich weis dann man die delphi komponenten nicht debugen kann, bzw es kommt immer ein X wenn man einen breakpoint drauf setzt


Zorro - Fr 21.12.07 17:41

user profile iconjakobwenzel hat folgendes geschrieben:
Bei allen Delphiversionen, die was kosten, sind die kompletten VCL-Quelltexte dabei.


Jepp - deswegen darfste die eigentlich auch net posten (wobei die Menge des geposteten copyright-materials vermutlich als geringfügig zu bezeichnen ist).

Greetz
Zorro