AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] trace/breakpoint trap (5)

Ein Thema von Devil1925 · begonnen am 27. Nov 2017 · letzter Beitrag vom 27. Nov 2017
 
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#1

[FMX] trace/breakpoint trap (5)

  Alt 27. Nov 2017, 09:06
Guten Morgen Community!
Ich habe hier ein Interessantes Phänomen:
Ich öffne eine Query in einem Thread. Dann versuche ich im Synchronize auf diese Query zuzugreifen und die Daten zu verwenden:

Delphi-Quellcode:
procedure TLoadingThread.Sync;
Begin
  FrmKundenwahl.L_Treffer.Text := IntToStr(ThreadQuery.RecordCount) + ' Treffer';

  ThreadQuery.AfterScroll := FrmKundenwahl.QueryAfterScroll;

  FrmKundenwahl.BS_Vorschau.DataSet := ThreadQuery;
  FrmKundenwahl.BS_Vorschau.DataSet.Open;
End;
Das ganze funktioniert auch bei einem ersten Durchlauf wunderbar. Die Anzahl der Datensätze wird mir korrekt angezeigt und die Daten auch in dem Entsprechenden Grid.

Rufe ich das Ganze aber ein zweites mal auf (im Thread selber wird die Query komplett neu erstellt), Tritt beim Debuggen folgender Fehler auf:
Code:
 Projekt hat die Exception-Klasse trace/breakpoint trap (5) ausgelöst.
Der Fehler tritt an folgender Stelle auf:
Delphi-Quellcode:
 
  FrmKundenwahl.L_Treffer.Text := IntToStr(ThreadQuery.RecordCount) + ' Treffer';
Wenn ich die Anwendung ohne zu Debuggen durchlaufen lasse, werden auf Android keine Daten angezeigt, und die App läuft weiter. Auf iOS hingegen stürzt die App in diesem Fall mit einer Zugriffsverletzung ab.

So sieht der Thread aus:
Delphi-Quellcode:
type TLoadingThread = class(TThread)
  private
    ThreadQuery:TUniQuery;
    ThreadFilter, ThreadStation:String;
    ThreadConn:TUniConnection;
  protected
    procedure Execute; override;
  public
    property Filter : String read ThreadFilter write ThreadFilter;
    property Station : String read ThreadStation write ThreadStation;
    procedure Sync;
  end;

procedure TLoadingThread.Execute;
begin
  Try
  if ThreadQuery <> nil then
  Begin
    ThreadQuery.Free;
    ThreadQuery := nil;
  End;
  if ThreadConn <> nil then
  Begin
    ThreadConn.Free;
    ThreadConn := nil;
  End;

  ThreadConn := TUniConnection.Create(nil);
  ThreadConn.ProviderName := 'SQL Server';
  ThreadConn.Server := MSSQLHost;
  ThreadConn.Username := MSSQLUser;
  ThreadConn.Password := MSSQLPass;
  ThreadConn.Database := MSSQLDB;

  SQLExec(ThreadConn, 'if Object_ID(''MOBILE_Kunden_'+ThreadStation+#39+') is not null Drop Table MOBILE_Kunden_'+ThreadStation);
  SQLExec(ThreadConn, 'Select distinct Kunden_Nr as kdn, Sortierfeld as Sortierfeld_Vorschau, Name1 as Name1_Vorschau, Strasse as Strasse_Vorschau, PLZ as PLZ_Vorschau, Ort as Ort_Vorschau, 1 as Selected into MOBILE_Kunden_'+ThreadStation+' from Kundenst where '+ThreadFilter);

  ThreadQuery := GetQuery(ThreadConn, 'Select name1_Vorschau as Name1, kdn, Sortierfeld_Vorschau as sortierfeld, Strasse_Vorschau as strasse, PLZ_Vorschau as plz, Ort_Vorschau as ort, selected from Mobile_Kunden_'+ThreadStation+' order by Sortierfeld');
  except
    on E : Exception do ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
  end;

  Synchronize(Sync);
end;
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.

Geändert von Devil1925 (27. Nov 2017 um 09:12 Uhr)
  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 00:32 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