Hallo,
hab' mal eben ein Programm geschrieben, das die Funktion aufruft und das dann über's Netz mit
UNC-Pfad von 'nem Rechner an 'nem anderen Standort aufgerufe. Gibt keine Probleme, selbst wenn das in Pfad angegeben Verzeichnis nicht existiert.
Da blieben als Fehlermöglichkeiten: Rechteprobleme oder unterschiedliche Zeichensätze?
SelectDirectory benutzt intern TSelectDirDlg aus FileCtrl. Setz' Dir mal 'nen Breakpiont vor dem If und versuche dann in FileCtrl hinein zu debuggen (wenn es Dir gelingt, auf Deinem Rechner den Fehler nachzuvollziehen, sonst bringt das natütlich nix).
Das FormCreate von dem Dialog sieht (bei Delphi 7) so aus:
Delphi-Quellcode:
procedure TSelectDirDlg.FormCreate(Sender: TObject);
var
UserHandle: THandle;
NetDriver: THandle;
WNetGetCaps:
function (Flags: Word): Word;
begin
{ is network access enabled? }
UserHandle := GetModuleHandle(User32);
@WNetGetCaps := GetProcAddress(UserHandle, '
WNETGETCAPS');
if @WNetGetCaps <>
nil then
begin
NetDriver := WNetGetCaps(Word(-1));
if NetDriver <> 0
then
begin
@WNetConnectDialog := GetProcAddress(NetDriver, '
WNETCONNECTDIALOG');
NetButton.Visible := @WNetConnectDialog <>
nil;
end;
end;
FAllowCreate := False;
DirLabel.BoundsRect := DirEdit.BoundsRect;
DirListChange(Self);
end;
Könnte mir vorstellen, das eventuell hier der Fehler auftritt.
Es wäre interessant zu wissen, ob der Fehler vor oder nach dem Anzeigen des Dialoges auftritt.
Die zweite von Dir benutze Variante nutzt einen vollkommen anderen Weg zur Anzeige des Dialoges. Da mag es durchaus sein, dass der eine funktioniert und der andere nicht.