Autor Beitrag
bimbess
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 12.10.13 12:21 
Hallo zusammen!

möchte mithilfe dieser Funktion eine ini Datei laden, Funktion ist in einer DLL hinterlegt:


ausblenden Delphi-Quelltext
1:
2:
3:
4:
function irbg_LoadROIsByFile(SrcID:integer; FileName:PChar):integer;stdcall;
begin
   
end;


FileName: Pointer auf einen AnsiChar-Puffer der den Namen der INI-Datei inklusive des abschließenden Zeichen #0 enthält.

Kann mir einer bitte die genaue Deklaration von FileName erklären? Bin ungeübt in der Verwendung von Pointern....

Vielen Dank!

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 12.10.13 12:27 
Hallo und :welcome: im Forum!

Bei der Deklaration hast du PChar statt wie du geschrieben hast PAnsiChar benutzt.

Deklarieren kannst du die Funktion statisch so:
ausblenden Delphi-Quelltext
1:
function irbg_LoadROIsByFile(SrcID: Integer; AFileName: PAnsiChar): Integer; stdcallexternal 'example.dll';					
Mehr dazu findest du hier:
delphi.about.com/od/...g-static-dynamic.htm

Für diesen Beitrag haben gedankt: bimbess
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Sa 12.10.13 12:29 
Du kannst (seit Delphi 2) beim Aufruf einfach einen Cast auf einen bestehenden (Ansi)String machen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  Filename: Ansistring;
  SrcID, LoadResult: integer;
begin
  Filename := 'C:\Verzeichnis';
  SrcID := 42;
  LoadResult := irbg_LoadROIsByFile(SrcID, PAnsiChar(FileName));
end;

Für diesen Beitrag haben gedankt: bimbess