AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem: DLL Funktion kann nicht 2x aufgerufen werden ?!
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: DLL Funktion kann nicht 2x aufgerufen werden ?!

Ein Thema von andimx · begonnen am 27. Apr 2006
Antwort Antwort
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#1

Problem: DLL Funktion kann nicht 2x aufgerufen werden ?!

  Alt 27. Apr 2006, 14:53
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]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz