AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi "Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen"
Thema durchsuchen
Ansicht
Themen-Optionen

"Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen"

Ein Thema von MStoll · begonnen am 8. Feb 2006 · letzter Beitrag vom 8. Feb 2006
 
MStoll

Registriert seit: 15. Nov 2005
131 Beiträge
 
Turbo Delphi für Win32
 
#1

"Ein Aufruf einer Betriebssystemfunktion ist fehlgeschl

  Alt 8. Feb 2006, 22:31
Hi @all.

Ich habe in einem StringGrid eine Tabelle mit 21 Zeilen und 11 Spalten. Die Daten werden mindestens jede Sekunde von einem Thread (heißt: "tliste") aktualisiert. Mit mindestens jede Sekunde meine ich, dass der Thread "tliste" in der Regel jede Sekunde aktualisiert, wenn er allerdings von dem Hauptthread dazu animiert wird zu aktualisieren, so tut er das sofort. Code wie folgt:

Delphi-Quellcode:
procedure tliste.execute;
var error_msg : string;
    t : integer;
begin
     stern_an := true;
     exec := false;

     repeat
       begin
          try
               zeige_alle_listen;

               t := gettickcount;
               while gettickcount - t < 1000 do
               begin
                    Sleep(10);
                    if exec then
                    begin
                         zeige_alle_listen;
                         exec := false
                    end
               end;
               stern_an := not (stern_an)
          except on e: exception do
          begin
               error_msg := 'Fehler beim Aktualisieren der Listen'+CHR(13)+CHR(10)+e.Message+CHR(13)+CHR(10)+'Prozedur "tliste.execute" in "uAusgabeliste"';
               save_err(error_msg)
          end
          end;
     end
     until terminated
end;
Dabei ist die Prozedur "zeige_alle_listen" diejenige, die die Daten aktualisiert. "Exec" ist eine Boolean-Variable des Threads, die vom Hauptthread auf "true" gesetzt wird, damit der Thread "tliste" sofort (d.h. wie ihr erkennen könnt max. 10ms später ) aktualisiert. Gezeichnet wird das StringGrid per OwnerDraw. Funktioniert soweit auch wunderbar und nach außen hin fehlerfrei. Allerdings sehe ich in meiner Datei "errors.log" (So heißt das Log-File für sämtliche "unerwartete" Exceptions) ab und zu die Fehlermeldung "Ein Aufruf einer Betriebssystemfunktion ist fehlgeschlagen".

Ich habe jedoch keine Ahnung, was diese bedeutet bzw. wo sie genau herkommen könnte. Debuggen ist auch schwierig, da die Meldung nur sporadisch auftritt.
Wäre dankbar, wenn mir jmd. helfen könnte oder es zumindest versucht. Wenn nötig, kann ich euch noch die Prozedur, die die Daten aktualisiert und die, die sie zeichnet, posten.

Gruß
Michael
  Mit Zitat antworten Zitat
 


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 14:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz