Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 10:02 
hi, ich suche eine möglichkeit Links nach relativ oder absolut zu kategorisieren, bzw zu unterscheiden um was es sich handelt.

Relative Pfade:

bla.jpg
/images/bla.jpg

Absolute Pfade:

EINE_-_SEITE.de/bla.jpg
EINE_-_SEITE.de/images/bla.jpg
www.EINE_-_SEITE.de/bla.jpg
www.EINE_-_SEITE.de/images/bla.jpg
EINE_-_SEITE.de/bla.jpg
EINE_-_SEITE.de/images/bla.jpg
www.EINE_-_SEITE.de/bla.jpg
www.EINE_-_SEITE.de/images/bla.jpg

etc.

Ich weiß nicht ob es noch mehr Möglichkeiten gibt, auf jedenfall suche ich eine möglichst saubere Lösung solche Pfade zu unterscheiden.

Danke,

mfg
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 17.07.07 10:10 
Moin,

./images/bild.png gibt es zB auch noch. Einzige Lösung, die mir auf die Schnelle einfällt ist die Suche nach der Domain.

Also wenn .de/.com etc im Namen vorhanden, dann sollte es sich um absolute Pfade handeln.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 10:15 
aber es gibt net nur .de und .com ;) und wer sagt mir, dass es nicht eine datei mit der endung .com gibt ;)

würde es sowas wie unterordner nicht geben könnte prüfen ob extractfilename(string) = string. dann wäre es ein relativer pfad.
wobei extractfilename gerade bei webpfaden nicht zuverlässig ist (gerade wegen .com etc. (wenns am ende steht)) gibt es dazu vielleicht auch eine alternative ? Ich sehe da auf Anhieb keine Lösung ;)

Ich könnte allerdings den Link an die url der seite anhängen auf der er steht und die dateigröße prüfen. ist diese 0, so existiert die datei nicht. allerdings sagt das 1. wenig über den pfad aus und 2. lässt sich die dateigröße nicht immer abfragen :(


mfg
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 17.07.07 10:31 
Sorry, aber den Post verstehe ich gerade nicht.

Eine andere auch unzuverlässige Methode ist die Suche nach Punkten. Wenn nur 1 Punkt da ist, ist er relativ, sind mehrere da, musst du schauen, ob die Punkte ganz am Anfang stehen. Ich weiß grad nicht, ob auch so etwas geht .images/bild.jpg. Aber alle Domains brauchen den Punkt davor und ob das nun .de oder .de.vu ist, ist egal, denn es wäre nicht nur Punkte.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 17.07.07 10:36 
Moin!

Ich würde sagen, das geht: :idea:

Slash im URL? Punkt vor dem ersten Slash? absolut : relativ : relativ

;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 10:36 
ich könnte auch einfach beides herunterladen lassen, was nicht geht geht nicht, ich denke mal dass idhttp keinen fehler ausspuckt wenn die datei existiert, das problem ist extractfilepath, da muss ich mir wohl was eigenes schreiben.

@Narses: was ist mit ./images/bla.jpg ? müsste ich dann prüfen wo der punkt ist.

so in etwa ?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function IsAbsolute(path: string): boolean;
begin
  result := (pos('.', path) < pos('/', path)) and (pos('.', path) > 1);
end;


funzt leider net ;)

mfg


Zuletzt bearbeitet von F34r0fTh3D4rk am Di 17.07.07 12:12, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 17.07.07 10:41 
Moin!

user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
was ist mit ./images/bla.jpg ? müsste ich dann prüfen wo der punkt ist.

OK, für absolut müßte auch noch ein nicht-Punkt-Zeichen vor dem Punkt sein. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 17.07.07 10:54 
Mir würd da folgendes einfallen:

DNS-Anfrage auf den String bis zum ersten /

Es gibt zwar auch Unterordner, die wie gültige Domains heissen, aber geneuer wirds wohl nicht gehen.

_________________
Bravery calls my name in the sound of the wind in the night...
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 12:05 
hier ist der erste versuch für ein extractfilename für webdateien:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function ExtractWebFileName(path: string): string;
var
  i: integer;
  tmpstr: string;
begin
  result := '';
  if copy(path, 17) = 'http://' then
    path := copy(path, 8, length(path) - 7);
  for i := length(path) downto 1 do
    if (path[i] = '/'then
    begin
      tmpstr := copy(path, i + 1, length(path) - i);
      if pos('.', tmpstr) > 0 then
        result := tmpstr;
      break;
    end;
end;


die isabsolute funktion hab ich noch ein wenig angepasst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function IsAbsolute(path: string): boolean;
begin
  if copy(path, 17) = 'http://' then
    path := copy(path, 8, length(path) - 7);
  result := (pos('.', path) < pos('/', path)) and (pos('.', path) > 1);
end;


Mit den beiden Funktionen scheint das schonmal zu klappen, aber vielleicht gibt es noch was besseres ;) oder gibt es noch lücken ?

(extractfileext akzeptiert /\ etc in endungen, dabei sind die nichtmal in dateinamen erlaubt, interessant ;) )

mfg


Zuletzt bearbeitet von F34r0fTh3D4rk am Di 17.07.07 15:42, insgesamt 1-mal bearbeitet
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 17.07.07 14:28 
Hallo,

durch die Festlegung auf 'http://' schließt Du andere Protokolle aus, z.B https://, ftp://...
Stell doch die Funktionen auf '://' um, das müsste reichen.

Außerdem ist doch, wenn '://' enthalten, imho die Bedingung für einen absoluten Pfad gegeben.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 14:30 
aber :// muss net zwingend vorkommen ;)
btw: die isabsolute tuts doch noch net :(
mfg


Zuletzt bearbeitet von F34r0fTh3D4rk am Di 17.07.07 14:38, insgesamt 2-mal bearbeitet
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 17.07.07 14:31 
Zustimmung. Aber was machst du bei Adressen die die Form username@webbetreiber;passwort (oder so ähmlich) haben?

Edit: wikipedia:
de.wikipedia.org/wik...orm_Resource_Locator

http://hans.geheim@www.exam...;stadt=aa#abschnitt1
Protokoll Benutzer Passwort Domain Port Pfad Query Anker

Edit: Man kann kein Protokoll im DF anzeigen!?
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 14:39 
genau, was mache ich dann ? ich bin doch net der erste der sich damit rumschlagen muss oder ?


mfg
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 17.07.07 14:48 
vielleicht kannst du ja erstmal den anker entfernen. dann würde ich die get-parameter (bla.php?id=1) entfernen. Als nächstes den Dateinamen . Dann würd ich auf den unterordner überprüfen. Vllt. kannst du das ja fortsetzten.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 17.07.07 14:58 
Hallo,
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
aber :// muss net zwingend vorkommen ;)

aber wenn es vorkommt dann ist es absolut, ich würde da mit einem else-Zweig arbeiten.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 15:04 
user profile iconRegan hat folgendes geschrieben:
vielleicht kannst du ja erstmal den anker entfernen. dann würde ich die get-parameter (bla.php?id=1) entfernen. Als nächstes den Dateinamen . Dann würd ich auf den unterordner überprüfen. Vllt. kannst du das ja fortsetzten.

was meinst du mit anker ? und warum den dateinamen ? das mit den get parametern muss ich ohnehin.

mfg
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 17.07.07 15:07 
der anker stört denke ich. und den dateinamen brauchst du auch nicht, um zu überprüfen, um welchen web-pfad es sich handelt.
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 15:17 
naja wenn der pfad bla.jpg ist und ich den dateinamen wegmache (den ich ja auch erstmal als solchen identifizieren muss), ist nicht mehr viel über ;)


mfg
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 17.07.07 15:24 
dann weißt du aber immerhin, dass es sich um einen relativen pfad handelt. :P
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.07.07 15:28 
ich hab ja einige ansätze, aber das will auch erstmal umgesetzt werden und solange das nichts halbes und nicht ganzes ist... ;) mein bisheriger code funzt ja nicht einmal ;)

mfg