AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL-Funktion synchron ausführen...

Ein Thema von FriFra · begonnen am 26. Jan 2004 · letzter Beitrag vom 26. Jan 2004
Antwort Antwort
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

DLL-Funktion synchron ausführen...

  Alt 26. Jan 2004, 16:06
Ich habe in einer temporär gebudenen dll eine Funktion... leider wird die Bindung der dll schon gelöst, während die Funktion noch läuft. Wie kann ich erreichen, dass mein Hauptprogramm wartet bis die Funktion tatsächlich abgearbeitet ist?
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#2

Re: DLL-Funktion synchron ausführen...

  Alt 26. Jan 2004, 16:14
Hi...

Hast du die DLL in nem Thread laufen? Sonst brauchst du eigentlich nur die Funktion aufrufen, DLL laden, und erst kurz bevor die Funktion zurückspringt - also direkt vor dem END - freeLibrary aufrufen...

Das sollte reichen...

Wenn du in nem Thread arbeitest musst du mit nem Flag oder sowas tricksen...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#3

Re: DLL-Funktion synchron ausführen...

  Alt 26. Jan 2004, 16:56
Ich habe gerade etwas merkwürdiges festgestellt...

Die verwendete DLL-Funktion ist boolean... Wenn ich bereits am Beginn der Funktion den Result Wert mit False initialisiere, wird die Funktion praktisch nicht abgearbeitet! Nur wenn ich erst ganz am Ende Result := True angebe, dann wird die Funktion abgearbeitet.
Was soll den das? Bisher ging ich immer davon aus, das der Rückgabewert erst am Ende der Funktion zurückgegeben wird... bei Funktionen dynamisch gebundener DLL's soll das anders sein?
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: DLL-Funktion synchron ausführen...

  Alt 26. Jan 2004, 16:59
Hm...

Wenn du eine Variable nicht definitiv mit einem Wert belegst, würde ich mich nie darauf verlassen, dass ein sinnvoller Wert drinnen steht. Es ist zwar so, das delphi das von sich aus fast immer sehr gut hinbekommt, aber mit dynamik klappt vieles nicht mehr automatisch...

Würd mich nicht wundern, wenn das einfach so ist!
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: DLL-Funktion synchron ausführen...

  Alt 26. Jan 2004, 17:17
Anscheinend bekommt mein Hauptprogramm schon bei der Binding der DLL einen Zeiger auf deren Rückgabewert. Wenn ich nun hingehe und diesen Rückgabewert in der ersten Zeile der DLL-Funktion initialisiere meint mein Hauptprogramm tatsächlich, die Funktion wäre schon durch und macht mit diesem Wert weiter...
Das Fatale daran ist, dass dabei nicht einmal der finally Block der bettr. Funktion abgearbeitet wird, was nätürlich schwere Konsequenzen hat!
Ich habs getestet und nur:
Delphi-Quellcode:
Result := False;
Result := True;
hineingeschrieben... das Ergebnis war immer False, bis ich die erste Zeile gelöscht habe

Und ich habe hier schon tagelang nach der Quelle div. unerklärlicher Schutzverletzungen gesucht ...

Nun frage ich mich, ist es grundsätzlich so, dass man bei exportierten Funktionen den Rückgabewert erst am Schluss angeben darf, oder was läuft bei mir schief?
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  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 18:39 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