-
        

Ergebnis 1 bis 6 von 6

Thema: C++ Builder 5 + Threads + Objekte

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208

    C++ Builder 5 + Threads + Objekte

    Anzeige

    Hallo liebes Forum,

    ich versuche gerade meine ersten Schritte in Threads, klappt alles ganz gut (zB 2,3 Zähler laufen lassen). Nur meine Frage ist, kann ich in diesem Thread auch Objekte erzeugen ? zB. eine Listbox? und kann ich dann im Hauptformular auf dieses Zugreifen?

    zB im Thread nen Edit Feld mit "hallo + Zählervariable".
    Der thread wird gestartet und es beginnt im thread mit "Hallo1, Hallo2,usw"
    Und in der Hauptform soll dann zB bei Knofpdruck der Text dieses Editfeldes geholt zu werden und zB wo anders angezeigt oder verarbeitet werden?

    das is das was ich glaube zu wissen:

    Definition in der Thread Klasse:

    Code:
    __published: 
            TEdit *Edit1
    ;

    Damit ich extern zugreifen kann am ende:
    Code:
    extern PACKAGE TThread1 *TThread_1;
    so, im execute kann ich dann normal zugreifen: EDit1->Text="Hallo";
    und im Hauptformular siehts dann so aus:

    Code:
    TThread1 *temp; 
    //zugriff?? 
    temp->Edit1->Text ??

    hoffe ich habe mich gut ausgedrückt und hoffe die frage is nicht all zu blöd.
    Bei der Suche nach Threads habe ich immer starten und beenden gefunden, dass klappt ja

    lg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    In einem Thread läuft exakt die Funktion, die Du bei der Erzeugung des Threads angegeben hast. Alles was innerhalb dieser Funktion passiert (andere Funktionen aufrufen, Objekte erzeugen/löschen, ...) läuft im selben Threadrahmen.

    Wenn Thread B auf erzeugte Objekte von Thread A zugreifen will müssen die zumindest die Adressen der Objekte kennen. Wenn Thread A Methoden eines Objektes aufruft, das in Thread B erzeugt wurde, laufen die Methoden dennoch im Rahmen von Thread A.

    Ich hoffe, das war einigermaßen verständlich erklärt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    Also ich würde im Hauptprogramm die Listboxen anlegen und über den globalen Form-Pointer im Thread die Listbox füllen ...
    Ein Thread ist unabhängig von den Forms und dient z.B. für die Abarbeitung der seriellen Schnittstelle o.ä. Vorteil ist, er läuft quasi parallel, eine Delay-Funktion innerhalb des Threads behindert nicht das Hauptprogramm. Die Delayfunktion innerhalb der Loop des Threads ist ein muß !!! Sonst bekommt der Thread 99% Programmlaufzeit und wirkt behindernd !!!

    Dein Beispiel zeigt mir noch nicht, wofür Du Threads nutzen willst, zur normalen Interaktion mit dem User ist dies m.E. nicht nötig.

    Zur Info- ich nutze Borland Builder 5 schon lange kommerziell für meine Kundensoftware. Threads nutze ich wie oben erläutert nur, um mit Hardware via Serielle zu Kommunizieren.

    Viel Erfolg,
    Vajk
    Ich kann mir keine Signatur leisten - bin selbständig!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    33
    Beiträge
    208
    Zur Info- ich nutze Borland Builder 5 schon lange kommerziell für meine Kundensoftware. Threads nutze ich wie oben erläutert nur, um mit Hardware via Serielle zu Kommunizieren.
    genau das will ich.. ich will ne hauptfrom (grafisch meist) und nebenbei eben die Schnittstelle auf Daueraktivität (eben wie es mein Protokoll benötigt).

    ich hab es geschaft in der Hauptform die Listbox zu füllen, daher mal die frage, giibts es einen event dafür, wenn ein item hinzugefügt ist?

    Bis jetzt habe ich ne listbox, die per timer alle zB 1 sek abgearbetit wird, jedoch bekamm ich die items selbst heraus.. nur gesamtter text (Item 1||Item2 bla bla).

    und wie gesagt, genau dafür brauch ich dne thread..
    lg

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.05.2006
    Ort
    Pfalz
    Beiträge
    154
    Die VCL von Borland nicht Threadfest.
    Also am besten aufpassen und solche Objekte nur im Hauptthread bearbeiten.
    Das heißt nicht das es nicht gutgehen kann, nur gibts keine Garanite das es immer klappt.

    Babbage

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    nein, es gibt kein Event, daß die Listbox gefüllt wurde - weil das (Haupt-)Programm sie (sein Kind) ja selbst füllt. Dein Event kannst Du Dir jedoch im Fall der Füllung locker selbst erzeugen Die gute alte WM_MESSAGE

    Du könntest jedoch einfach die ListBox->Count periodisch abfragen ... ich würde jedoch eine Hauptfunktion aufrufen ...
    Ich kann mir keine Signatur leisten - bin selbständig!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •