AGB  ·  Datenschutz  ·  Impressum  







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

Mehrere Container für mehrere Threads?

Ein Thema von TheMiller · begonnen am 28. Feb 2008 · letzter Beitrag vom 28. Feb 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#11

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 16:28
Ich depp

Jetzt weis ich wie du das gemeint hast. So mache ich es doch auch mit meinen PlugIns etc.

Ich werde es mal ausprobieren.

Zu dem Form4.Handle. Was wäre denn der Unterschied, außer, dass einmal Form4 fehlt und einmal nicht
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 16:36
Zitat von DJ-SPM:
Zu dem Form4.Handle. Was wäre denn der Unterschied, außer, dass einmal Form4 fehlt und einmal nicht
Der Unterschied ist derzeit (bzw. wenn du nur ein Form4 hast) Null.

Dass die VCL diese "blöde" globale Variable dahinsetzt, ist total besch****. Das verleitet jeden Anfänger dazu, sie zu benutzen.
Es ist ja zum Beispiel kein Problem aus TForm4 zwei Formulare zu instanzieren. Und du würdest immer nur das HAndle aus dem Formular bekommen, welches in der globalen Variablen Form4 gespeichert ist. Du bekommst Form4 automatisch mit in deine Methode (es heißt dann nur self und kann weggelassen werden). Deswegen kannst du ja problemlos aus einer Methode auf alle Felder des Objektes zugreifen. Und genau das amcht auch den Unterschied von Methoden zu einfachen Funktionen/Prozeduren aus.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#13

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 16:38
Achso. Ja, aber das mache ich ja nicht. Aber gut, ich werde es ändern und versuchen mir anzugewöhnen. Kann mir irgendwann vielleicht mal mehrere Stunden Suche sparen.

Ich spiele jetzt noch ein bissl mit meinen Containern rum!

Ich danke dir jedenfalls erstmal ganz viel!
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#14

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 17:02
Hey!

Noch eine Frage: Ich habe nun die Liste erstellt und folgendermaßen ein Object (TContainer) angefügt:

Delphi-Quellcode:
var
  SQL: TSQLThread;
  Data: TContainer;
  ContId: Integer;
begin
  Data:=TContainer.Create;
  ContId:=FContainerHolder.Add(Data);
  SQL:=TSQLThread.Create(True);
  SQL.FreeOnTerminate:=True;
  SQL.postvars:=False;
  SQL.FHndl:=Handle;
  SQL.DataCode:=1;
  SQL.DataContainer:=TContainer(FContainerHolder.Items[ContId]);
  SQL.Resume;
Aber woher weis meine CallBack-Funktion bzw. die Prozedure, die die Daten behandeln soll, aus welchem Container sie sie nehmen soll? Ich könnte es mehr Message machen, aber WParam und LParam sind leider schon belegt. Was mach ich jetzt?
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#15

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 19:21
Wozu benutzt du WParam und LParam denn?
Ich denke, du könntest dir einen Record definieren, den in den Speicher packen, bei SendMessage einen Zeiger dahin mitschicken und dann beim "Empfänger" den Record einlesen, und nach SendMessage im "Sender" den Speicher wieder freigeben.
Und in diesem Record würdest du dir Felder definieren, die alle Infos über die "Nachricht" enthalten.
Oder halt einen Zeiger auf das Container-Objekt oder irgendwie so, da sollten einem doch keine Grenzen gesetzt sein?

HTH

Edit: Sehe gerade, die erste Frage ist wohl vermutlich überflüssig...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#16

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 19:24
Ich habe WParam dafür benutzt um zu identifizieren, ob ich Daten senden oder empfangen möchte. Ich habe aber jetzt zwei Messages gemacht, WM_GETCALLBACK und WM_POSTCALLBACK.

Dadurch wurde WParam frei und ich konnte es mit der Container-ID belegen.

Danke für eure Hilfe!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 20:32
Ansonsten kannst du auch überlegen, ob du den gesamten Bereich von wparam oder Lparam brauchst. du kannst ja ansonsten das hi- und loword der Parameter mit verschiedenen Zahlen belegen. Oder du änderst die Messagenummer.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#18

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 20:50
Hm, so passt das eigentlich super. WParam ist einfach die ContainerID und LParam ist die Indexnummer, welche Prozedur aufgerufen werden soll (Case of). Mehr brauche ist nicht. Und wie gesagt. Ich habe eine Message für den Datenempfang und die Anzeige und eine Message für's Daten senden und deren Rückgabewert (Erfolg, Fehlercode etc)

Nur interessehalber: Was ist das hi- und loword der Parameter?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 21:18
Ich habe mir schon gedacht, dass es so passt. Nur für den Fall, dass du es mal anders benötigst.

Du kannst doch bei TMessage wparamHi und wapramLo nutzen. Das sind halt von dem 32bit-Wert die oberen bzw. die unteren 16Bit.
Zusammensetzen auf der Send-Seite kannst du es mit
Delphi-Quellcode:
wparam:=(hiword shl 16)+loword;
postmessage(...,wparam,...);
//und dasselbe geht auch für Lparam.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#20

Re: Mehrere Container für mehrere Threads?

  Alt 28. Feb 2008, 21:24
Gut - jetzt werde ich es nicht brauchen. Vielleich aber später mal. Finde die jetzige Lösung eigentlich sau gut

Jedenfalls vielen Dank. Habe ziemlich viel gelernt!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 11:15 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