Hallo,
Ich schreib gerade eine
DLL die man in verschiedene Programmiersprachen integrieren soll.
In der
DLL befindet sich ein ComServer sowie zahlreiche Funktionen unter anderem auch mehrere um
ein Datenformat zu bearbeiten das unterteilt ist in Branch's und Leaf's (also Stämme und Blätter).
Das Datenformat ist kommt einer Baumstruktur gleich.
Nun das Problem. Ich habe 2 Dialoge in die
DLL ausgelagert, die auch von anderen programmen genutzt werden soll.
Delphi-Quellcode:
function ExecuteBranchDialog(ParentWindow: LongWord; pItemData: PSTRUCTPCSITEM): Boolean; stdcall; export;
var P: TdlgBranchEditForm;
begin
Result := FALSE;
try
if (pItemData = nil) or (pItemData^.ItemType <> PCSITEMBRANCH) then Exit;
P := TdlgBranchEditForm.CreateParented(ParentWindow);
P.txtBranchname.Text := pItemData^.ItemName;
P.txtUpdateRate.Text := IntToStr(pItemData^.ItemUpdateRate);
P.ShowModal;
Result := P.WindowResult;
if (Result) then begin
pItemData^.ItemName := P.txtBranchname.Text;
pItemData^.ItemUpdateRate := StrToIntDef(P.txtUpdateRate.Text, 0);
end;
P.Free;
except
Result := FALSE;
end;
end;
Der Pointer bei der Übergabe ist gültig (mehrmals überprüft), trotzdem kommt eine EAccessViolation
Exception.
Auch wenn ich die anderen Funktionen aus meiner
DLL mehrmals hintereinander aufrufe kommt der Fehler...
Hat jemand ne Ahnung warum Delphi das macht?
Hier mal die Deklarationen und auch die Deklarationen von anderen functions:
Delphi-Quellcode:
function CreateProcessControl(pPCS: PSTRUCTPCS): Boolean; stdcall; external PCSDLL;
function FreeProcessControl(pPCS: PSTRUCTPCS): Boolean; stdcall; external PCSDLL;
function CreateBranch(pPCS: PSTRUCTPCS; BranchName: ShortString; UpdateRate: Integer): Byte; stdcall; external PCSDLL;
function GetVarTypeName(VarType: Integer): ShortString; stdcall; external PCSDLL;
function GetVarType(VarTypeName: ShortString): Integer; stdcall; external PCSDLL;
function ExecuteBranchDialog(ParentWindow: LongWord; pItemData: PSTRUCTPCSITEM): Boolean; stdcall; external PCSDLL;
Gruß
Andi
[edit=Luckie]
Zitat von
andimx:
Hat keiner einen Hinweis?
Äh dir ist klar, dass dein erstes Posting erst eine Stunde alt ist? Pushposting gelöscht.
Mfg, Luckie[/edit]