AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Synchronisierungsfehler zweier Formulare

Ein Thema von newbieuser · begonnen am 10. Aug 2017 · letzter Beitrag vom 10. Aug 2017
Antwort Antwort
newbieuser

Registriert seit: 9. Aug 2017
2 Beiträge
 
#1

Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:14
Hallo an alle,

hab folgendes Problem beim Arbeiten mit zwei Formularen.

Ich erstelle im ersten Formular eine Datei (Frage.db), welche ein Kontingent an Fragen und Antworten enthält.
Diese soll im zweiten Formular ausgelesen werden und die Daten in einer Radiogroup angezeigt werden. An der Stelle kommt es zur Fehlermeldung
"Projekt hat Exception-Klasse ausgelöst mit der Meldung: CheckSynchronize from non-main thread". Das zweite Formular ist im Hauptformular in den uses mit eingebunden.

Hat jemand von euch Ideen zu dem Fehler bzw. wie man diesen beheben könnte?
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#2

AW: Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:15
Ich denke keiner von uns kann aus Kaffeesatz lesen.
Du musst uns schon zeigen, bei welchem Aufruf der Fehler stattfindet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.129 Beiträge
 
Delphi 12 Athens
 
#3

AW: Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:20
Was wo eingebunden ist (Uses), ist doch erstmal egal.

Zitat:
CheckSynchronize from non-main thread
Das Hauptproblem scheint zu sein, dass DU die VCL irgendwie in einem Thread aufrufst.

Oder versuchst du die VCL teilweise in einer DLL laufen zu lassen?

Zitat:
Delphi-Quellcode:
const
  SCheckSynchronizeError = 'CheckSynchronize wurde vom Thread $%x aufgerufen, der NICHT der Haupt-Thread ist.';

function CheckSynchronize(Timeout: Integer = 0): Boolean;
begin
  ...
  if TThread.CurrentThread.ThreadID <> MainThreadID then
    raise EThread.CreateResFmt(@SCheckSynchronizeError, [TThread.CurrentThread.ThreadID]);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (10. Aug 2017 um 13:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

AW: Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:20
"Projekt hat Exception-Klasse ausgelöst mit der Meldung: CheckSynchronize from non-main thread". Das zweite Formular ist im Hauptformular in den uses mit eingebunden.
Du scheinst mit Threads zu arbeiten. Beachte, dass alle Zugriffe auf VCL-Komponenten (auch Deine Formulare) nur über den Hauptthread der Anwendung erfolgen dürfen. Siehe: Delphi-Referenz durchsuchenSynchronize

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
newbieuser

Registriert seit: 9. Aug 2017
2 Beiträge
 
#5

AW: Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:25
An dieser Stelle taucht der Fehler auf:

Code:
assignfile(datei,'fragen.db');    
  reset(datei);
  i := 0;
  seek(datei,0);
  while not eof(datei) do            
  begin
    seek(datei,i);
    read(datei,datensatz);
    i := i+1;
    fragen[i].frage := datensatz.frage;
    fragen[i].antwort1 := datensatz.antwort1;
    fragen[i].antwort2 := datensatz.antwort2;
    fragen[i].antwort3 := datensatz.antwort3;
    fragen[i].loesung := datensatz.loesung;
  end;
  closefile(datei);

  radiogroup1.caption := datensatz.frage;
  rb1.caption := datensatz.antwort1;
  rb2.caption := datensatz.antwort2;
  rb3.caption := datensatz.antwort3;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.129 Beiträge
 
Delphi 12 Athens
 
#6

AW: Synchronisierungsfehler zweier Formulare

  Alt 10. Aug 2017, 13:28
Ich seh da gefühlt 200.000 Zeilen Code und finde die genannte eine "Stelle" nicht.

Und wo der Code drin ist, bzw. wo und wann er ausgeführt wird, ist auch nicht erkennbar.


PS: Die neuere SCheckSynchronizeError-Fehlermeldung ist da bissl aussagefähiger.
Zitat:
CheckSynchronize wurde vom Thread $%x aufgerufen, der NICHT der Haupt-Thread ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (10. Aug 2017 um 13:34 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:14 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