![]() |
Pfad zur Datei aus URL extrahieren
Hat jemand ein Sample wie ich aus einer LNK Datei *.url den Pfad zur Video Datei extrahieren kann?
Einfache Funktion sollte reichen. :) Hab mit Internet noch nicht viel gemacht. gruss |
AW: Pfad zur Datei aus URL extrahieren
ist .url nicht nur ne text datei?
also nach "url=" suchen, und den rest dahinter nehmen. vielleicht als ini datei mit key url? |
AW: Pfad zur Datei aus URL extrahieren
Quelltext hab' ich nicht parat, aber:
http:// bzw. https:// durch 'nen Laufwerksbuchstaben ersetzen. Dann mit ExtractFilePath den Pfad entnehmen, ExtractFileName gibt den Dateinamen. Ungefähr sowas:
Delphi-Quellcode:
url := AnsiReplaceText(url,'http://','c:\');
url := AnsiReplaceText(url,'https://','c:\'); // ggfls. / nach \ übersetzen. url := AnsiReplaceText(url,'/','\'); Pfad := ExtractFilePath(url); Datei := ExtractFileName(url); |
AW: Pfad zur Datei aus URL extrahieren
Ich würde es vielleicht mit einer StringListe machen
Delphi-Quellcode:
Optmieren mit Zwischenvariablen usw kann jeder selber.
if FileExists(url datei) then
begin sl := TStringList.Create; try sl.LoadFromFile(url datei); if sl.Count > 0 begin for i := 0 to sl.Count - 1 do begin if Pos('url=', sl.Strings[i]) > -1 then begin showmessage( Copy(sl.Strings[i], Pos('=', sl.Strings[i]) + 1, Length(sl.Strings[i])) ); end; end; end; finally sl.Free; end; end; |
AW: Pfad zur Datei aus URL extrahieren
Zitat:
Mit kleiner Änderung geht es. (Muss nur noch das Caption ändern ist aber kein Problem)
Delphi-Quellcode:
Ich hätte jetzt meine riesen Unit (7KB) eingebunden damit wäre es auch gegangen da hier schon alles vorbereitet war. (Siehe OTTB uFileRelated)
if Extension = '.url' then
begin sl := TStringList.Create; try sl.LoadFromFile(FileName); if sl.Count > 0 then begin for IntI := 0 to sl.Count - 1 do begin if InStr(lowercase(sl.Strings[IntI]), 'url=') = 1 then begin FileName := Copy(sl.Strings[IntI], Pos('=', sl.Strings[IntI]) + 1, Length(sl.Strings[IntI])); break; end; end; end; finally sl.Free; end; end; So geht es aber schneller. ;) gruss |
AW: Pfad zur Datei aus URL extrahieren
Ich würde zusätzlich noch auf
Delphi-Quellcode:
prüfen, denn sonst gibt das eine hässliche Fehlermeldung bzw einen unnötigen Eintrag im Log falls es einen gibt.
FileExists
|
AW: Pfad zur Datei aus URL extrahieren
Zitat:
Wenn die Datei auf dem Server nicht mehr existiert wird sie nicht abgespielt im weiteren verlauf. Bei lokalen Dateien gebe ich dir recht! gruss |
AW: Pfad zur Datei aus URL extrahieren
Erstmal, das ist eine INI und keine StringListe, also warum nicht wie eine INI behandeln?
Und selbst wenn als StringList, dann kann man sich das manuelle Durchsuchen sparen, denn
Delphi-Quellcode:
(wenn/da es nur das eine "url" in dieser einen Gruppe gibt).
SL.NameValueSeparator := '='; SL.Values['url'] = dieURL;
Und es sollte eigentlich auch eine WinAPI für den Zugriff geben (es gibt auch binäre Formate, wie z.B. .lnk), aber mir fällt grade nicht ein wo diese API sich versteckt. |
AW: Pfad zur Datei aus URL extrahieren
EWeiss, lösch meinen Code am besten. Der scheint ja absoluter Mist zu sein :roll:
|
AW: Pfad zur Datei aus URL extrahieren
Zitat:
Meine Videos laufen! ![]() Zitat:
Das Sample von @DieDolly ist dafür vollkommen ausreichend. Zitat:
Und hier ein Sample!
Delphi-Quellcode:
Aber wie gesagt ich will meine TWebShortCut Classe dafür nicht einbinden.
procedure TWebShortCut.LoadInternetShortCut;
// Loads information for internet shortcut (*.URL) from FileName and Location. var inifile: TIniFile; psfi: TSHFileInfo; begin ClearValues; iniFile := TIniFile.Create(GetLocationFolder); try fURL := iniFile.ReadString('InternetShortcut', 'URL', ''); fHotKey := iniFile.ReadInteger('InternetShortcut', 'Hotkey', 0); HotKeyToShortCut(FHotKey, FHotKeyCtrl); fIconPath := iniFile.ReadString('InternetShortcut', 'IconFile', ''); fIconIndex := iniFile.ReadInteger('InternetShortcut', 'IconIndex', 0); finally inifile.free; end; // load icon into TIcon if one is available. if FIconPath = '' then begin SHGetFileInfo(PChar(fURL), 0, psfi, sizeof(psfi), SHGFI_ICON); FIcon.Handle := psfi.hIcon; end else FIcon.Handle := ExtractIcon(hInstance, PChar(FIconPath), FIconIndex); end; gruss |
AW: Pfad zur Datei aus URL extrahieren
Hi, auch wenn Thema bereits abgeschlossen ist, ich finds gut das ihr meinen Vorschlag das als Text reinzulesen und nach "url=" zu Suchen genommen habt, rein auf die Masse (also Anwender die ein Produkt nutzen) betrachtet wäre das .ini Beispiel das einzig wahre.
|
AW: Pfad zur Datei aus URL extrahieren
Zitat:
Der Ansatz von @DieDolly läuft und fedisch! PS: Es bringt mir nichts eine Classe einzubinden (ja fertig von OTTB alles schon gehabt) wenn ich das mit 10 Zeilen Code erledigen kann bei einem einmaligen Aufruf. gruss |
AW: Pfad zur Datei aus URL extrahieren
Ja ich habe dein .ini gesehen, das war ja auch meine Meinung dazu, ich fand das gut, nicht mehr nicht weniger, solange Du glücklich bist ist doch alles in Butter, egal wie man Ziel erreicht :-D
Für System-Registrierung hatte ich mir mal die WinApi dafür selbst gekapselt um, für damalige Verhältnisse wars halt wichtig, Platz zu sparen, mit der Delphi Registry.pas waren es glaube ich 350kb mehr .exe Größe die ich mir per WinApi gespart habe. Kann man bestimmt auch für Ini-Dateien so machen, Du bist ja bereits happy, ich selbst setz das mal auf meine ToDo ;) edit ps: ich habe auch per duckduckgo ein total krasses delphi beispiel gefunden was vom aussehen her dem code eines binären link files entstammt, aber der war riesen gross, plus unformatiert, hatte mir das nicht näher angeschaut, aber man wird fündig wenn man buddelt Grüße |
AW: Pfad zur Datei aus URL extrahieren
Zitat:
Mein Problem mit dem Teil ist halt das diese Funktion an einer Classe gekapselt ist und es nur richtig funktioniert wenn ich die gesamte Unit mit einbinde. Das ist mir aber zu viel 14K zusätzlichen Code für eine Abfrage im gesamten Projekt. Siehe OTTB uIShellItem.pas So das ist der einzige Grund warum ich die Frage gestellt habe ob es auch mit weniger Code geht ;) gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz