Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: MessageBox und Timer(Messages)

  Alt 8. Okt 2006, 12:45
So, hier mal der Source wie ichs gemeint habe:
Delphi-Quellcode:
type
  TThreadWaitStruct = record
    Finished : Boolean;
    Critical : TCriticalSection;
    ErrorMsg : String;
  end;
  PThreadWaitStruct = ^TThreadWaitStruct;


function GThreadFunc(Parameter: PThreadWaitStruct): Integer;
begin
  //Critical Section jetzt schon entern damit die Schleife im Hauptthread
  //beim Enter wartet und nicht 100% CPU auslastet
  Parameter.Critical.Enter;
  MessageBox(0, PChar(Parameter.ErrorMsg), 'Der Fehler', MB_OK or MB_ICONINFORMATION);
  Parameter.Finished := True;
  Parameter.Critical.Leave;
end;

procedure ShowError(AErrorMsg: String);
var
  lThreadID : Cardinal;
  lStruct : TThreadWaitStruct;
  lFinished : Boolean;
begin
  lStruct.Finished := False;
  lStruct.Critical := TCriticalSection.Create;
  lStruct.ErrorMsg := AErrorMsg;
  BeginThread(nil, 0, @GThreadFunc, @lStruct, 0, lThreadID);

  repeat
    lStruct.Critical.Enter;
    lFinished := lStruct.Finished;
    lStruct.Critical.Leave;
  until lFinished;

  lStruct.Critical.Free;
end;
Man ruft also einfach "ShowError" auf und übergibt den anzuzeigenden Fehler.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat