Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delay-Procedure in DLL auslagen (https://www.delphipraxis.net/56316-delay-procedure-dll-auslagen.html)

Helmi 3. Nov 2005 20:43


Delay-Procedure in DLL auslagen
 
Hallo,

da ich die Delay-Procedure für ein Projekt in zwei Applicationen brauche, hab ich mir gedacht, ich lagere die Delay-Procedure in eine DLL aus. (war für mich auch ein Anfang in der DLL-Programmierung)

Nur hab ich Bedenken, ob jetzt die Delay-Procedure nichts mehr bringt, also genau so arbeitet wie "sleep".

(Nochmals zur Erinnerung die Delay-Procedure:)
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer); stdcall;
var
  Tick: DWord;
  Event: THandle;

begin
  Event := CreateEvent(nil, False, False, nil);

  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Wer kann mir meine Zweifel nehmen?

BlackJack 3. Nov 2005 20:45

Re: Delay-Procedure in DLL auslagen
 
woher kennt die Delay-procedure in der DLL denn "Application"?

Helmi 3. Nov 2005 20:47

Re: Delay-Procedure in DLL auslagen
 
durch:

Delphi-Quellcode:
uses
  Forms;
aber deshalb bin ich mir nicht sicher, ob dann noch delay die eigentliche funktion hat, die es haben soll

Helmi 4. Nov 2005 13:07

Re: Delay-Procedure in DLL auslagen
 
*push*

Ist das mit dem Delay und Application in ner dll in ordnung?
bin noch unsicher

Luckie 4. Nov 2005 13:19

Re: Delay-Procedure in DLL auslagen
 
So sieht ProcessMesasges aus:
Delphi-Quellcode:
procedure ProcessMessages(hWnd: DWORD);
var
  Msg                   : TMsg;
begin
  while PeekMessage(Msg, hWnd, 0, 0, PM_REMOVE) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end;
Du wirst wohl auf alle Fälle noch das Handle des Fensters mitgeben und obige Version nehmen müssen, da in der DLL ja dein Fentser nicht bekannt ist.

Helmi 4. Nov 2005 13:22

Re: Delay-Procedure in DLL auslagen
 
Hallo Luckie,

das würde aber jetzt bedeuten, dass die jetzige Delay-Procedure in der DLL-Datei wie Sleep arbeitet oder?

[Edit]
Luckie, woher hast du den code von dem ProcessMessages?

bei Delphi hab ich nur diesen Code gefunden:
Delphi-Quellcode:
procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;
und da übergibt mann keinen Handle.
[/Edit]

Luckie 4. Nov 2005 17:18

Re: Delay-Procedure in DLL auslagen
 
Da übergibt man kein Handle, weil das eine private Variable in der Klasse ist und somit auch bekannt. Und wo ich das her habe? Selber geschrieben.

Helmi 4. Nov 2005 17:20

Re: Delay-Procedure in DLL auslagen
 
Zitat:

Zitat von Luckie
Da übergibt man kein Handle, weil das eine private Variable in der Klasse ist und somit auch bekannt. Und wo ich das her habe? Selber geschrieben.

ich habs in der zwischenzeit ausprobiert - funktioniert ja echt sehr gut

Danke vielmals!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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