Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Brauche Idee wie ich URL unterscheiden soll? (https://www.delphipraxis.net/130854-brauche-idee-wie-ich-url-unterscheiden-soll.html)

AlexII 14. Mär 2009 12:19


Brauche Idee wie ich URL unterscheiden soll?
 
Hallo,

für ein StreamerProgramm muss ich unterscheiden können, ob die URL eine Playliste von Microsoft ist, z.B. mit der Erweiterung .asx vom Protokoll mms://, oder das eine Playliste für WinAmp ist, also .pls, m3u usw...

Hab irgendwie keine Idee wie ich das lösen soll. Dachte schon die letzten drei Zeichen auslesen, aber es gibt URLs mit einer Zahl am Ende und das macht mit nen Strich durch die Rechnung. :gruebel:

bigben37 14. Mär 2009 12:24

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Du kannst mit Delphi-Referenz durchsuchenpos() in einem string suchen.

mjustin 14. Mär 2009 12:25

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von AlexII
Hallo,

für ein StreamerProgramm muss ich unterscheiden können, ob die URL eine Playliste von Microsoft ist mit der Erweiterung .asx oder auch das Protokoll mms:// hat oder das eine Playliste für WinAmp ist, also .pls, m3u usw...

Hab irgendwie keine Idee wie ich das lösen soll. Dachte schon die letzten drei Zeichen auslesen, aber es gibt URLs mit einer Zahl am Ende und das macht mit nen Strich durch die Rechnung. :gruebel:

Bei den Indy Sourcen ist auch eine URI Klasse (TIdURI in IdURI.pas) enthalten. Mit dieser kann eine URL standardgemäß in ihre Teile zerlegt werden. Der 'Document' Teil der zerlegten URL müsste dann der Dateiname sein.

Viele Grüße,

AlexII 14. Mär 2009 12:26

Re: Brauche Idee wie ich URL unterscheiden soll?
 
:gruebel:

jaenicke 14. Mär 2009 12:28

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von AlexII
Kann man das so machen? Erst die ersten drei Zeichen prüfen, was das für ein Protokoll ist und dann hinten die Erweiterung?
Wow, das kann hinhauen, oder?

Ja, wie sonst? So hattest du das doch eigentlich selbst auch fast geschrieben.

Und in den Fällen, in denen es sich an der URI selbst nicht unterscheiden lässt, musst du wohl über eine Analyse des Inhalts an das Problem herangehen.
Dabei kommt es dann ganz auf die unterstützten Formate an, inwieweit das einfach möglich ist.

AlexII 14. Mär 2009 12:31

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Ach du meine Güte, hier muss man ja ein Informatik Professor sein... :pale:

Matze 14. Mär 2009 12:33

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Wieso denn?
Bemühe dich mal etwas und schaue dir Beispiele zu Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenCopy an. Damit erhälst du dann das Protokoll. Delphi-Referenz durchsuchenExtractFileEx müsste dir auch bei einer URL die Dateiendung liefern.

Also knie dich mal etwas dahinter!

Grüße, Matze

AlexII 14. Mär 2009 12:40

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Hab z.B. so ne URL: http://www1.neti.tv/xxx/asxgen.aspx?id=35

Wie soll ich daraus entnehmen, dass da hinter irgendwo eine .asx Liste befindet? :gruebel: Nach nem TeilString asx durchsuchen? Hm... und wenn es eine URL vorkommt, dass genau so ist, aber halt ohne TeilString asx? :gruebel:

jaenicke 14. Mär 2009 12:42

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Das Fragezeichen ist das Trennzeichen zu den Parametern. Eine URL enthält also davor im Allgemeinen eine Dateiendung, es sei denn es handelt sich um ein Verzeichnis, das dann umgeleitet wird.

Jedenfalls kannst du in diesem Fall nach dem Fragezeichen suchen, und auf den teil davor ExtractFileExt anwenden.

Und so musst du dir eben die möglichen Fälle alle anschauen.

Matze 14. Mär 2009 12:43

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Mit Delphi-Referenz durchsuchenPos nach dem Fragezeichen suchen, das davor per Delphi-Referenz durchsuchenCopy trennen und an Delphi-Referenz durchsuchenExtractFileEx übergeben.

Edit: zu langsam.

jaenicke 14. Mär 2009 12:48

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Und ansonsten gäbe es ja noch die beliebten Regechsen zum Beispiel. (Aber wie war das mit dem Spatz und der Kanone? :mrgreen: )

AlexII 14. Mär 2009 12:54

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Ok muss ich gucken. :?

Andreas H. 18. Mär 2009 11:34

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von jaenicke
Und ansonsten gäbe es ja noch die beliebten Regechsen zum Beispiel. (Aber wie war das mit dem Spatz und der Kanone? :mrgreen: )

Finde ich nicht. Wer die mal zu schätzen gelernt hat...
Gerade beim Auswerten von URLs setze ich reguläre Ausdrücke gerne ein, insbesondere wenn ich die Parameter auslesen möchte. Die Ausdrücke lassen sich in Konfigurationsdateien oder Konstanten auslagern, womit bei formalen Änderungen die Anpassung ruckzuck erledigt ist.

Gruß Andi

generic 18. Mär 2009 11:42

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von AlexII

Das musst du dir anschauen was der Webserver zurück liefert.
Also Header anschauen, den Content-Type auswerten und ggf. die Content-Disposition.

shmia 18. Mär 2009 17:16

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Ich würde die API-Funktion InternetCrackURL() verwenden, um eine URL in seine Einzelbestandteile zu zerlegen.
Dabei ist quasi garantiert, dass nichts schiefgehen kann, da die Funktion schon millionenfach erfolgreich aufgerufen wurde (wird intern im IE verwendet).
http://www.delphipraxis.net/internal...ct.php?t=31191

Für dein spez. Problem braucht du den Inhalt von "UrlPath".

Valle 18. Mär 2009 18:38

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von generic
Zitat:

Zitat von AlexII

Das musst du dir anschauen was der Webserver zurück liefert.
Also Header anschauen, den Content-Type auswerten und ggf. die Content-Disposition.

Dem würde ich mich anschließen. Es ist nicht der richtige Weg, sich die URL anzuschauen. Was zählt ist, was drin ist. Also entweder Content-Type überprüfen oder sogar gleich den Inhalt der Datei auf bestimmten Dateityp überprüfen. ;-) Letzteres ist wohl schwieriger (hält sich bei 2 verschiedenen Typen aber in Grenzen), aber auf jeden Fall auch das beste.

Mit freundlichen Grüßen,

Valle

AlexII 16. Apr 2009 15:39

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Und wie hole ich mir den Inhalt bei dieser (http://www1.neti.tv/xxx/asxgen.aspx?id=35) URL? Eine .pls oder .m3u kann man runterladen und hier?

fkerber 16. Apr 2009 15:48

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Hallo!

Es wurde doch schon beschrieben, dass du dir dann den Header anschauen musst, um den Typ zu bestimmen. Und wenn es eine m3u z.B. ist, dann kannst du den Inhalt genauso verwenden, wie eine m3u auf deiner Platte - es ist ja dann quasi das selbe - du musst sie nur zuerst herunterladen.

Leider kann man mit dem Link nix anfangen, ich bekomm da nur nen Server Error.


Ciao, Frederic

AlexII 16. Apr 2009 16:03

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Zitat:

Zitat von fkerber
du musst sie nur zuerst herunterladen.

Ich frage doch grade wie man sie runterlädt :gruebel:

fkerber 16. Apr 2009 16:04

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Hi!

z.B. mit den indys - idhttp sollte dein Freund sein!


Ciao, Frederic

AlexII 16. Apr 2009 16:17

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Ist das eine Komponente oder wie?

fkerber 16. Apr 2009 16:18

Re: Brauche Idee wie ich URL unterscheiden soll?
 
Hi!

Indy ist eine ganze Komponentensammlung - idhttp eine Komponente daraus.

Mittels Suche hier oder bei Google solltest du Informationen finden...



Ciao, Frederic


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