AGB  ·  Datenschutz  ·  Impressum  







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

Query innerhalb ein Threads nutzen ?

Ein Thema von pronny31 · begonnen am 15. Feb 2008 · letzter Beitrag vom 15. Feb 2008
Antwort Antwort
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#1

Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 10:49
Wie kann man eine Query innerhalb eines Threads nutzen ?

folgendes habe ich verwendet nur kommt ständig eine Speicherzugriffsverletzung !


Delphi-Quellcode:

type
  Test = class(TThread)
  a1 : Integer;
  Query1 : TIBQuery;
  Datenbank : TIBDatabase;
  Transaction : TIBTransaction;

  private
    { Private-Deklarationen }

  public
    constructor create(Art : Integer; Datenbankkomp : TIBDatabase); overload;

  protected
    procedure Execute; override;
 
end;

var
  Test1 : Test;
  U_Datum : Tdate;
  U_Fach : Integer;
implementation

{$R *.DFM}

constructor Test.create(Art : Integer; Datenbankkomp : TIBDatabase);
Begin
  a1 := Art;
  Datenbank := Datenbankkomp;
  inherited create(false);

End;

procedure Test.Execute;

begin
  Query1.text := 'Egal'; // Hier bekomme ich eine Speicherzugriffsverletzung !
  sleep(10000);
end;

end.
Das Hauptformular und den Button der den Thread erzeugt habe ich mal weggelassen !
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 11:03
Hast du das Objekt irgendwo initialisiert?
(Wahrscheinlich brauchst du im Thread auch noch so etwas wie CoInitialize.)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#3

Re: Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 11:05
Ich gebe dir mal mein ButtonClick procedure :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  U_Datum := MonthCalendar1.Date;
  Test1 := Test.Create(2,IBDatabase1);
end;
reicht des ?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 11:22
Du musst das Query Initialisieren/instanzieren:
Query1:=TIBQuery.create(); Und übergebe am besten keine Objekte über Threadgrenzen. Du solltest dir besser gleich angewöhnen alles, was die Datenbank betrifft an Objekten komplett und ausschließlich im Thread zu erledigen.
Zur Vereinfachung leg dir ein DataModul an, welches du nur im Thread benutzt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
pronny31

Registriert seit: 8. Okt 2007
97 Beiträge
 
#5

Re: Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 11:27
Des wars schon danke hat funktioniert !!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Query innerhalb ein Threads nutzen ?

  Alt 15. Feb 2008, 11:28
Zitat von sirius:
Und übergebe am besten keine Objekte über Threadgrenzen. Du solltest dir besser gleich angewöhnen alles, was die Datenbank betrifft an Objekten komplett und ausschließlich im Thread zu erledigen.
Zur Vereinfachung leg dir ein DataModul an, welches du nur im Thread benutzt.
Ergänzend wäre noch zu hinterfragen ob die eingesetzten Komponenten überhaupt Thread-Safe von sich aus sind oder ob es trotz aller sonstigen Fehlervermeidungen kracht da keine Verbindungen aus 2 verschiedenen Threads behandelt werden können.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:55 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