Einzelnen Beitrag anzeigen

Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#40

AW: Programm blockiert ganz Windows

  Alt 3. Jul 2013, 09:30
Wenn ich deinen ersten Post lese, dann steht da:

Zitat:
(zb per IBX Daten abruft, oder einfach ne große schleife, wo was gemacht wird
was ist denn mit der großen Schleife? Hast du da mal mir Application.ProcessMessages experimentiert?
Manchmal ist es bei solchen Sachen auch ganz hilfreich, wenn man sich eine Logdatei mitschreibt und quasi jeden Schritt eine Zeitaufwendigen Funktion mit einem Zeitstempel mitloggt. So kann man dann explizit die verursachende Zeile finden.

Delphi-Quellcode:
procedure log(s: string);
var
  tc, tdiff: Cardinal;
  f: Textfile;
  logfile: string;
begin
  tc:=GetTickCount;
  tdiff:=tc-stc;
  logfile:=extractfilepath(application.exefile)+'log.txt';
  Assingfile(f, logfile);
  if fileexists(logfile) then append(f) else rewrite(f);
  writeln(f, inttostr(tdiff)+' '+s);
  closefile(f);
  application.processmessages;
end;
Das hab ich mal so aus dem Kopf hier geschreiben. Also wenn Fehler drin sind, reißt mir nicht den Kopf ab.

in der unit noch die stc: Cardinal deklarieren.
Und am begin der fraglichen Funktion stc:=gettickcount;
und dann nach bedarf ein log('jetzt wir SQL.open ausgeführt'); setzen.

Hinterher kannst du in der Logdatei recht genau sehen, wo die Zeit verbraten wurde. Möglicherweise hilft das bei der Ergründung des Problems.

Wenn's sinnvoll ist, dann kann man auch noch andere Variablen mit übergeben und loggen, damit man ggf. auch auf unlogische Daten oder so prüfen kann.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo ( 3. Jul 2013 um 09:33 Uhr)
  Mit Zitat antworten Zitat