FileGetSymLinkTarget
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
FileGetSymLinkTarget
Bitte um Hilfe
Ich krieg diese Funktion (die das Ziel einer URL oder eines LNK-Files liefern soll) einfach nicht zum Laufen.
Der boolsche Rückgabewert ist stets FALSE und das Target-feld ist null.
Wer kann mir weiterhelfen?
Robert
Ich krieg diese Funktion (die das Ziel einer URL oder eines LNK-Files liefern soll) einfach nicht zum Laufen.
Der boolsche Rückgabewert ist stets FALSE und das Target-feld ist null.
Wer kann mir weiterhelfen?
Robert
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: FileGetSymLinkTarget
Hi!
Hm, sieht in der Docu ganz einfach aus ...
https://www.freepascal.org/daily/doc/rt ... arget.html
Poste mal deinen Quellcode.
Hm, sieht in der Docu ganz einfach aus ...
https://www.freepascal.org/daily/doc/rt ... arget.html
Poste mal deinen Quellcode.
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: FileGetSymLinkTarget
Kann ich nachvollziehen. Ist bei mir genau das gleiche. Lösung habe ich momentan leider keine.
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
Re: FileGetSymLinkTarget
Bitteschön, ein Code-Snippet
var filename, target: rawBytestring;
...
fileName := filePath + oname + '.lnk';
if fileExists(fileName) then begin
if fileGetSymLinkTarget(fileName, target) then
ShowMessage(target)
else
showMessage('not done for ' + fileName);
end;
var filename, target: rawBytestring;
...
fileName := filePath + oname + '.lnk';
if fileExists(fileName) then begin
if fileGetSymLinkTarget(fileName, target) then
ShowMessage(target)
else
showMessage('not done for ' + fileName);
end;
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: FileGetSymLinkTarget
Im internationalen Forum hat DJMaster seine abgeänderte Fassung MyFileGetSymLinkTargetInt() gepostet, siehe sein Post mit sichtbarem Quellcode.
Vielleicht funktioniert es damit?
https://forum.lazarus.freepascal.org/in ... 76927.html
Vielleicht funktioniert es damit?
https://forum.lazarus.freepascal.org/in ... 76927.html
-
- Beiträge: 945
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: FileGetSymLinkTarget
LNK-Dateien sind keine symbolischen Links und es hat auch nichts mit URLs zu tun. Es geht hier um symbolische Verknüpfungen im Dateisystem.robert.rieder hat geschrieben: Mi 16. Mär 2022, 20:48 Ich krieg diese Funktion (die das Ziel einer URL oder eines LNK-Files liefern soll) einfach nicht zum Laufen.
Der boolsche Rückgabewert ist stets FALSE und das Target-feld ist null.
Edit: hier ist beschrieben, wie man das Ziel einer LNK-Datei mit Delphi bekommt. Mit FPC sollte das genauso funktionieren.
Die dort angesprochenen Änderungen sind Teil von 3.2.2 und haben nichts mit dem Problem von robert.rieder zu tun.Jorg3000 hat geschrieben: Do 17. Mär 2022, 02:04 Im internationalen Forum hat DJMaster seine abgeänderte Fassung MyFileGetSymLinkTargetInt() gepostet, siehe sein Post mit sichtbarem Quellcode.
Vielleicht funktioniert es damit?
https://forum.lazarus.freepascal.org/in ... 76927.html
FPC Compiler Entwickler
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
Re: FileGetSymLinkTarget
Danke PascalDragon,
du hast mir die Augen geöffnet. Ich wusste nicht den Unterschied zw. symb. Links und LNK Dateien bzw. URL Dateien (ich arbeite unter Windows) Also ist die Funktion fileGetSymLinkTarget falsch verwendet.
Der Delphi-Code den du mir geschickt hast ist leider voller (DELPHI-) Konstanten und dem Freepascal unbekannten Funktionen.
Muss man sich diese Funktion wirklich selber basteln? Auf welche Laufzeitroutinen kann man aufsetzen?
Zur Info:
Ich verwalte 13.000 Bücher (epub) und ca. 5000 Autoren und für die meisten Autoren hab ich den Link auf Wikipedia als URL gespeichert. Jetzt möchte ich das ganze automatisiert in eine Datenbank bringen (Die Wikipedia-URLs)
LG
Robert
du hast mir die Augen geöffnet. Ich wusste nicht den Unterschied zw. symb. Links und LNK Dateien bzw. URL Dateien (ich arbeite unter Windows) Also ist die Funktion fileGetSymLinkTarget falsch verwendet.
Der Delphi-Code den du mir geschickt hast ist leider voller (DELPHI-) Konstanten und dem Freepascal unbekannten Funktionen.
Muss man sich diese Funktion wirklich selber basteln? Auf welche Laufzeitroutinen kann man aufsetzen?
Zur Info:
Ich verwalte 13.000 Bücher (epub) und ca. 5000 Autoren und für die meisten Autoren hab ich den Link auf Wikipedia als URL gespeichert. Jetzt möchte ich das ganze automatisiert in eine Datenbank bringen (Die Wikipedia-URLs)
LG
Robert
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: FileGetSymLinkTarget
Das ist ja nur eine simple Datei im Ini-Format. Da du ja offenbar schon weißt, wie du an den Dateinamen kommst:
Code: Alles auswählen
uses IniFiles;
//...
function GetURL(AFileName: string): string;
begin
with TIniFile.Create(AFileName) do
try
Result := ReadString('InternetShortcut', 'URL', EmptyStr);
finally
Free;
end;
end;
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
Re: FileGetSymLinkTarget
Danke, danke, danke
Schon probiert und es funzt - FAST
Wenn nämlich Umlaute im Targetnamen sind, dann gibt er mir ein Fragezeichen an dieser Stelle aus.
Umlaute und andere Sonderzeichen kommen nämlich häufig in Namen von ausländischen Autoren vor.
Sind da irgendwelche charset-Konvertierungen zu machen ???
LG
Robert
Schon probiert und es funzt - FAST
Wenn nämlich Umlaute im Targetnamen sind, dann gibt er mir ein Fragezeichen an dieser Stelle aus.
Umlaute und andere Sonderzeichen kommen nämlich häufig in Namen von ausländischen Autoren vor.
Sind da irgendwelche charset-Konvertierungen zu machen ???
LG
Robert
- Jorg3000
- Lazarusforum e. V.
- Beiträge: 359
- Registriert: So 10. Okt 2021, 10:24
- OS, Lazarus, FPC: Win64
- Wohnort: NRW
Re: FileGetSymLinkTarget
Probier mal (ungetestet)
Code: Alles auswählen
function GetURL(AFileName: string): RawByteString;
begin
with TIniFile.Create(AFileName) do
try
Result := ReadString('InternetShortcut', 'URL', EmptyStr);
SetCodepage(Result,Windows.GetACP(),false);
finally
Free;
end;
end;
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
Re: FileGetSymLinkTarget
Halleluja,
das war's. Vielen dank, you saved my life
LG
Robert
das war's. Vielen dank, you saved my life
LG
Robert
-
- Beiträge: 945
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: FileGetSymLinkTarget
Du musst natürlich auch die richtigen Units dafür einbinden (das musst du auch in Delphi). Ich hatte jetzt keine Zeit diese rauszusuchen, aber letztlich wird es auf Units wie ActiveX und ähnliche hinaus laufen.robert.rieder hat geschrieben: Do 17. Mär 2022, 15:39 Der Delphi-Code den du mir geschickt hast ist leider voller (DELPHI-) Konstanten und dem Freepascal unbekannten Funktionen.
Muss man sich diese Funktion wirklich selber basteln? Auf welche Laufzeitroutinen kann man aufsetzen?
Für URL-Dateien trifft das zu, für LNK jedoch nicht.Sieben hat geschrieben: Do 17. Mär 2022, 16:04 Das ist ja nur eine simple Datei im Ini-Format. Da du ja offenbar schon weißt, wie du an den Dateinamen kommst:
FPC Compiler Entwickler
-
- Beiträge: 6
- Registriert: Mi 16. Mär 2022, 20:43
Re: FileGetSymLinkTarget
Ich danke allen die mitgeholfen haben, mein Problem zu lösen