Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
AW: Ini-Datei in DB-Feld verlegen
31. Jul 2014, 15:25
Ohne Gewähr schnell heruntergetippelt:
Delphi-Quellcode:
library BufferDLL;
{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss die erste
Unit in der USES-Klausel Ihrer Bibliothek UND in der USES-Klausel Ihres Projekts
(wählen Sie 'Projekt-Quelltext anzeigen') sein, wenn Ihre DLL Prozeduren oder Funktionen
exportiert, die Strings als Parameter oder Funktionsergebnisse übergeben. Dies
gilt für alle Strings, die an oder von Ihrer DLL übergeben werden, auch für solche,
die in Records und Klassen verschachtelt sind. ShareMem ist die Interface-Unit zur
gemeinsamen BORLNDMM.DLL-Speicherverwaltung, die zusammen mit Ihrer DLL
weitergegeben werden muss. Übergeben Sie String-Informationen mit PChar- oder ShortString-Parametern, um die Verwendung von BORLNDMM.DLL zu vermeiden.
}
uses
Windows,
SysUtils;
{$R *.res}
function SomeTest(Param1: PAnsiChar; var Param1Len: integer; Param2: PAnsiChar;
var Param2Len: integer): integer; stdcall;
const
Result1 = ' Hallo Welt';
Result2 = ' Wuppdi';
begin
Result := 0;
if Param1Len < Length(Result1) then
begin
Param1Len := Length(Result1);
Result := ERROR_INSUFFICIENT_BUFFER;
end;
if Param2Len < Length(Result2) then
begin
Param2Len := Length(Result2);
Result := ERROR_INSUFFICIENT_BUFFER;
end;
if Result = 0 then
begin
StrPCopy(Param1, Result1);
StrPCopy(Param2, Result2);
end;
end;
exports
SomeTest;
begin
end.
Und der Aufruf:
Delphi-Quellcode:
function SomeTest(Param1: PAnsiChar; var Param1Len: integer; Param2: PAnsiChar;
var Param2Len: integer): integer; stdcall; external 'BufferDLL.dll';
procedure TFormTest.ButtonTestClick(Sender: TObject);
var
s1, s2: Ansistring;
Len1, Len2: integer;
begin
Len1 := 0;
Len2 := 0;
s1 := '';
s2 := '';
if SomeTest(nil, Len1, nil, Len2) = ERROR_INSUFFICIENT_BUFFER then
begin
SetLength(s1, Len1);
SetLength(s2, Len2);
if SomeTest(PAnsiChar(s1), Len1, PAnsiChar(s2), Len2) = 0 then
ShowMessage(Format('%s%s%s', [s1, sLineBreak, s2]));
end;
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|
|
Zitat
|