AW: Netzwerkordnerzugriff
Das wäre dann aber nur bei Lazarus so, bei Delphi lief das einwandfrei durch.
Wenn ich mir die Funktion jedoch anschaue, ist es wohl eher so, das es bei jedem Fehler, der nicht "ERROR_NOT_CONNECTED" entspricht ein leeres Ergebnis zurück gibt.
Delphi-Quellcode:
Kann ich mir die Fehlermeldung, die bei "rc" rauskommt irgendwie ausgeben lassen ohne die "Systemfunktion" zu ändern?
function ExpandUNCFileName (const filename:unicodestring) : unicodestring;
... if rc = NO_ERROR then Result := PRemoteNameInfoW(buf)^.lpUniversalName else if rc = ERROR_NOT_CONNECTED then Result := filename else Result := ''; ... ..ohne diese Abfrage funktioniert es im Zweifelsfall auch, dennoch würde ich mich interessieren wie man das zum laufen bekommt, da ich hierbei ggf. wieder Unterschiede zwischen Delphi und Lazarus lernen könnte. |
AW: Netzwerkordnerzugriff
Hi,
vielleicht denke ich auch nur falsch, aber meiner Meinung nach kann ExpandUNCFileName nicht richtig arbeiten, solange die Verbindung zur IP selbst nicht (mit WNetAddConnection2) bereits hergestellt ist. Er kann den Rechner ja nicht fragen, weil er ja keine Rechte hat. Ich hoffe, ihr wisst, worauf ich hinaus will! "Henne-Ei-Problem"! LG Incocnito |
AW: Netzwerkordnerzugriff
Ich hab es erst mal auskommentiert, da es der letzte und einzige Part ist, den ich nun in Lazarus nicht zum laufen bekomme bzw. ohne den ich zurecht kommen würde.
Wenn jemand dafür dennoch eine Lösung weiß wäre ich dankbar. |
AW: Netzwerkordnerzugriff
Ist zwar nicht direkt eine Lösung, aber zumindest ein ganz pragmatischer Workaround gegen einen leere Rückgabe:
Delphi-Quellcode:
Weiß nicht, was die Lazarus/FreePascal-Entwickler dazu bewogen hat, die Funktion einen Leerstring zurückgeben zu lassen. Ist das so dokumentiert? Dann ist es soweit in Ordnung. Wenn nicht => Bugreport, damit es gefixt werden kann.
function _ExpandUNCFileName(const AFileName: UnicodeString): UnicodeString;
begin Result:= ExpandUNCFileName(AFileName); if Result = '' then Result:= AFileName; end; Grüße Dalai |
AW: Netzwerkordnerzugriff
Als "Dokumentation" bzw. Hilfe konnte ich nur das finden:
Zitat:
|
AW: Netzwerkordnerzugriff
Scheinbar ist das so gewollt:
Zitat:
|
AW: Netzwerkordnerzugriff
GetLastError?
|
AW: Netzwerkordnerzugriff
Hab ich auch schon ausprobiert, bekomme ich leider nichts zurück ('').
|
AW: Netzwerkordnerzugriff
Nichts kann bei GetLastError nicht sein, denn diese Funktion liefert einen Zahlenwert (DWORD). Trotzdem kann es passieren, dass GetLastError nicht hilft, denn wenn innerhalb von ExpandUNCFileName nach dem Aufruf der fehlerauslösenden API-Funktion noch andere API-Funktionen gerufen werden, wird der eigentliche Fehler u.U. verschleiert ...
Grüße Dalai |
AW: Netzwerkordnerzugriff
Das kann sein, das ich das GetLastError ggf. zu spät aufgerufen habe beim testen und dann überschrieben war. Will ich jetzt nicht ausschließen.
Da es aber auch ohne diesen Part bzw. mit dem Workaround von Dalai geht, ist es erst mal egal. Finde es nur etwas "seltsam" das das unterschiedlich behandelt wird... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz