![]() |
JvBrowseForFolderDialog in Dll Funktion
Hallo,
ich möchte den JvBrowseForFolderDialog aus der JVCL in einer DLL Funktion verwenden. In der Funktion übergebe ich eine Referenz auf ein array of Char und gebe in der gleichen Variable den ausgewählten Ordner zurück.
Delphi-Quellcode:
Diese Variable enthält nach dem Aufruf von Execute aber immer den Wert, der an die Variable übergeben wurde.
function OpenFolderDialog(Title, StatusText: PChar;
var FolderName: array of Char): Integer; stdcall; var dlgOrdner: TJvBrowseForFolderDialog; LFolder: String; begin Result := 0; dlgOrdner := TJvBrowseForFolderDialog.Create(nil); try dlgOrdner.Title := Title; dlgOrdner.StatusText := StatusText; LFolder := PChar(@FolderName); LFolder := Trim(LFolder); if LFolder <> '' then dlgOrdner.Directory := LFolder; if dlgOrdner.Execute then begin Result := 1; LFolder := ConvertPathToUNC(dlgOrdner.Directory); end; // end if FillChar(FolderName, StrLen(FolderName), #0); StrCopy(FolderName, PChar(LFolder)); finally dlgOrdner.Free; end; // finally end; Auch wenn ich der Variable irgendeinen Wert zuweise, z.B.:
Delphi-Quellcode:
kommt es aufs gleiche raus. Nur wenn ich JvBrowseForFolderDialog.Execute NICHT aufrufe funktioniert es.
StrCopy(FolderName, 'abc');
Wenn ich das gleiche z.B. mit TjvSaveDialog mache funktioniert auch alles. Liegts vielleicht daran, dass in JvBrowseForFolderDialog irgendwas aus der Unit ActiveX verwendet wird? Danke |
Re: JvBrowseForFolderDialog in Dll Funktion
keiner eine Idee?
|
Re: JvBrowseForFolderDialog in Dll Funktion
Delphi-Quellcode:
function OpenFolderDialog(Title, StatusText: PChar;
FolderName: PChar): Integer; stdcall; var dlgOrdner: TJvBrowseForFolderDialog; LFolder: string; begin Result := 0; dlgOrdner := TJvBrowseForFolderDialog.Create(nil); try dlgOrdner.Title := Title; dlgOrdner.StatusText := StatusText; LFolder := FolderName; LFolder := Trim(LFolder); if LFolder <> '' then dlgOrdner.Directory := LFolder; if dlgOrdner.Execute then begin Result := 1; LFolder := ConvertPathToUNC(dlgOrdner.Directory); end; StrCopy(FolderName, PChar(LFolder)); finally dlgOrdner.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:17 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