Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Treba pridať Unit, kde sa nachádza Form1 - u Teba zrejme Unit1... Pochopiteľne ,ak chceš odkazovať n…
pme 10.08.2012 19:02
pme
No když odeberu s toho Form1(Unit1) s uses Unit2 a přidám do vlákna(Unit2) ,jak poradil pme, tak to… nový
Mireček 10.08.2012 20:31
Mireček
Prostě potřebuji Form1 (Unit1), kde je button a edit. Při kliknuti na button vytvořím a spustím vlák… nový
Mireček 10.08.2012 20:39
Mireček
daj sem kompletny program (taky stav ktory sa da prelozit) a napis ze co nefunguje P.S. nemusis upl… nový
MM.. 10.08.2012 21:01
MM..
Takže chceš z Unit1 používať Unit2 (kvôli spusteniu vlákna) a z Unit2 chceš používať Unit1 (kvôli pr… nový
los 10.08.2012 21:42
los
Takže chceš z Unit1 používať Unit2 (kvôli spusteniu vlákna) a z Unit2 chceš používať Unit1 (kvôli pr… nový
pme 10.08.2012 21:56
pme
Aha, áno, keď to dá do implementation, tak mu to dovolí. Edit: Ale aj tak bude lepšie to oddeliť, i… nový
los 10.08.2012 22:02
los
Pro MM: Není kompletní program, jen se učím a zkouším Pro los: píšete ‘’’ mohol by si to dať do jedn… poslední
Mireček 11.08.2012 08:18
Mireček

Treba pridať Unit, kde sa nachádza Form1 - u Teba zrejme Unit1... Pochopiteľne ,ak chceš odkazovať na nejakú triedu, objekt, premennú atď, ktorá sa nachádza inde
než je unit v ktorom odkazuješ...

unit Unit2;

interface

uses ......, Unit1;

No když odeberu s toho Form1(Unit1) s uses Unit2 a přidám do vlákna(Unit2) ,jak poradil pme, tak to funguje a mužů s vlákna přistupovat do Form1.

Když nechám ve Form1(Unit1) v uses Unit2 a ve vláknu(Unit2)bude v uses Unit1
tak mi delphi vyhodí [DCC Fatal Error] Unit1.pas(7): F2046 Out of memory.

Když s Form1(Unit1)odeberu Unit2 tak zas Form1 nevidí vlákno a tudíž ho s Form1 nemohu spouštět.

Nějak to mam poplantane :-/

Takže chceš z Unit1 používať Unit2 (kvôli spusteniu vlákna) a z Unit2 chceš používať Unit1 (kvôli prečítaniu hodnoty z TEdit). Z toho ti vznikne kruhová referencia medzi unitmi, čo ti kompilátor nedovolí.

Preto to musíš vymyslieť tak, aby to nebolo takto vzájomne závislé. Resp. mohol by si to dať do jednej unity a použiť forward deklaráciu, ale to by bolo zbytočne neprehľadné.

ThreadObject je objekt, ktorý vytváraš vo Form1. Takže najjednoduchšie bude, keď pri inštancovaní objektu pošleš do konštruktora hodnotu z toho TEditu, napr. vlakno.Create(Form1.edit.text, CreateSuspended). V konštruktore thread objectu si ju zapamätáš v členskej premennej a následne ju použiješ vo vlakno.Execute.

Takže chceš z Unit1 používať Unit2 (kvôli spusteniu vlákna) a z Unit2 chceš používať Unit1 (kvôli prečítaniu hodnoty z TEdit). Z toho ti vznikne kruhová referencia medzi unitmi, čo ti kompilátor nedovolí.

Samozrejme, že dovolí...

Pro MM: Není kompletní program, jen se učím a zkouším
Pro los: píšete ‘’’ mohol by si to dať do jednej unity’
Vlákna, které jsou v jedné unit jsem zvládl, i vlákna ve funkci.
Rad bych i toto vyřešil a uměl.
Nevím jak u Vás ale tady venku chčije.
Neměl by někdo čas udělat nějaký malý přiklad.
Form (Unit1), kde bude button a třeba edit.
Při kliknuti na button by se spustilo vlákno, které je v Unit1 a třeba zapsalo něco do toho editu.
Pro profika bych řek brnkačka na par minut, ne.

Zpět do poradny Odpovědět na původní otázku Nahoru