Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Autor | Správa |
---|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Zdravim, mohol by mi niekto prosim vysvetlit, ako sa pracuje s premennymi v triede? Premenna je deklarovana v triede, a v procedure sa s nou pracuje. Potreboval by som si zapametat jej stav. Cez funkciu to riesit nechcem, pretoze casom urcite pribudnu dalsie premenne. Dakujem za odpoved.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Uved nejaky konkretny priklad, lebo velmi nechapem, co presne chces spravit.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Kód: Thra = class sucet: integer; procedure pocitaj; ... end;
procedure Thra.pocitaj; begin ... sucet := sucet + pocitadlo; ... end;
potrebujem si ten sucet pamätat.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Ak vytvoris instanciu tejto triedy ( var hra: Thra ) tak sucet dostanes ako hra.sucet ( krajsie by bolo, keby sa to vracialo cez metodu, napr function VratSucet ), kazda instancia ma svoju vlastnu clensku premennu sucet ( hra1.sucet, hra2.sucet, atd ). Cize co presne potrebujes? Chces mat iba jednu premennu sucet aj napriek viacerym instanciam tejto triedy, alebo ako?
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Napriklad: Kód: { Thra }
Thra = class sucet: integer; procedure pocitaj; procedure vypis; end;
{ Thra }
procedure Thra.pocitaj; begin sucet := sucet + 10; end;
procedure Thra.vypis; begin ShowMessage(format('%d',[sucet])); end;
procedure TForm1.Button1Click(Sender: TObject); var hra: Thra; begin hra := Thra.Create; hra.pocitaj; hra.vypis; hra.Free; end;
Po kazdom zatlaceni buttonu malo by to davat cisla: 10,20,30... Stale tam je iba 10.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
1.) hra: Thra je lokalna premenna ( mas ju v metode Button1Click ), to znamena po skonceni metody sa automaticky premenna hra zo stacku zmaze a pri dalsom volani tejto metody sa uz vytvori nova premenna hra - preto tam mas stale 10. Najidealnejsim riesenim je spravit premennu hra globalnou. 2.) Clen sucet nemas nikde inicializovany, je len stastie, ze si ho delphi inicializuje na nulu. Vzdy, ked vytvaras triedy, je dobre spravit aj konstruktor danej triedy, kde bude inicializacia vsetkych datovych clenov ( v pripade, ze trieda obsahuje aj smerniky, je dolezity aj destruktor, v tomto jednoduchom priklade ale nutny az tak nie je ). Ak nevies pouzivat konstruktory, respektive ak si s nimi este nepracoval, tuna mas priklad: http://www.delphibasics.co.uk/RTL.asp?Name=Constructor
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Dakujem. Toto som potreboval. Tento kod som uviedol, len ako priklad, kedze som nevedel vyjadrit co vlastne chcem. Pracujem na jednom prejekte, a toto ma brzdilo.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Mal by som este nieco. Potrebujem na par sekund prerusit beh programu. Vo free pascale existoval prikaz delay. Lazarus ho nepozna. Pomocou timera to riesit nechcem, ak nemusim.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Najjednoduchsie je pouzit funkciu Sleep( milisekundy: word ); Tu mas aj ine sposoby, ale zrejme zbytocne komplikovane, ak sa jedna iba o jednoduche pozastavenie behu programu --> http://www.delphibasics.info/home/delph ... eepmethods
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Dakujem, toto som presne potreboval. Nechcem tu zakladat X tem, tak sa este tu nieco opytam. Projekt uz je nakodeny, ale definicie triedy treba prepisat do samostatneho Unitu. Problem je v tom, ze nepozna form1, image1... , pricom unit forms mam v novom Unite zadeklarovany.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Na pochopenie tohto problemu treba vidiet cely projekt, respektive by mali stacit dane dva unity - ten povodny, zrejme unit1 a ten novy, ktory vytvaras.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
kratka ukazka, ktora by mala nakreslit stvorec. Kód: unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, stvorec;
type
{ TForm1 } ...
var Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject); var stvorec: Tstvorec; begin Image1.Canvas.FillRect(Image1.ClientRect); stvorec := Tstvorec.Create; stvorec.kresli; stvorec.free; end;
{$R *.lfm}
end.
Unit - Stvorec Kód: unit stvorec;
{$mode objfpc}{$H+}
interface
{ stvorec } type Tstvorec = class procedure kresli; end;
implementation uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, Menus;
procedure Tstvorec.kresli; begin Form1.Image1.Canvas.Rectangle(20,50,100,130); end;
end.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
V unite stvorec pouzivas data z unitu Unit1, ten ale nemas includnuty, cize v prvom rade pridaj do uses v unite stvorec Unit1.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Teraz to funguje. Zaujmave je, ze som to skusal hned, ako prvu moznost a pisalo to chybu: Citácia: Circular unit reference to 'unit1'
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
To ti robilo preto, lebo si mal tie unity includovane cez uses v sekcii interface obidve. Ak mas aspon jedno includnutie v sekcii implementation, tak ti to robit nebude.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Dakujem, uz v tom mam jasno. Existuje nejaky prikaz na opetovne nacitanie aplikacie? pripadne jej obnovenie? Bolo by to jednoduchsie, ako to vsetko nulovat a prepisovat hodnoty. Pripadne, ci by si mi nevedel vysvetlit jednoduchy sposob, ako na "new game".
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Taketo veci sa idealne robia objektovo - vytvoris si objekt hra, ktora bude mat okrem tvojich tried a metod metody napr s nazvami Init a Free, pricom metoda Init bude obsahovat operacie potrebne pre zaciatok ( inicializacia premennych a dalsia potrebna funkcionalita ) a Free zase uvolni potrebnu pamat apod. Potom bude mat metody napr Run, Draw, Events. V metode Run budu volane postupne metody Event a Draw ( + nejake dalsie, podla potreby ), kde v Event budu osetrene vstupy z klavesnice, prepadne mysi a v Draw bude vykreslenie hry. Volanie metod Event a Draw bude v cykle s podmienkou na zaciatku, v ktorej sa bude testovat, ci hra ma pokracovat alebo nie. S takymto mechanizmom je potom uplne jednoduche hru zacat nanovo ( bud vhodnou metodou, alebo rovno uvolnenim instancie triedy a opatovnym alokovanim, ale krajsia je skor ta prva moznost ). Pre inspiraciu sa mozes pozriet na tento clanok, je to v Cecku a pouziva kniznicu SDL, ale ide iba o princip, snad sa to da pochopit aj bez znalosti jazyka C: http://www.sdltutorials.com/sdl-tutorial-basics
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Existuje v delphi nejaky nastroj podobny HREFu? Mysli, ze tam bude text, a po kliknuti spusti prehliadac so zadanou webovou adresou. Ja som nasiel len akesi 50 riadkove kody Dufam, ze sa to da lahsiu cestou.
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Registrovaný: 11.01.09 Prihlásený: 24.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
Staci ti TLabel a pri jeho metode OnClick das otvorenie weboveho prehliadaca s danym linkom ( vid temu nizsie ). Cela veda, naco to komplikovat. simulacia-quot-klik-na-link-quot-vt83947.html#p741484
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
Vdaka, presne toto som hladal
_________________ HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro
Boh je reálny, pokial nebol deklarovaný ako integer |
|
Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Delphi, Visual Basic | 0 | 571 | 30.03.2014 1:56 F3RY | | v PHP, ASP | 7 | 812 | 17.11.2007 21:18 PHP zaciatocnik | | v PHP, ASP | 4 | 719 | 14.06.2010 19:53 ricco24 | | v PHP, ASP | 8 | 664 | 30.04.2011 22:17 emer | | v PHP, ASP | 4 | 534 | 20.11.2008 16:33 pa3ck | | v PHP, ASP | 7 | 884 | 06.06.2008 14:33 Tominator | | v PHP, ASP | 3 | 567 | 11.07.2009 13:39 KViki | | v Operačné systémy Microsoft | 4 | 946 | 24.03.2013 0:19 eMp | | v Databázy | 2 | 630 | 15.05.2012 22:37 S-player | | v JavaScript, VBScript, Ajax | 0 | 614 | 30.01.2011 13:54 DeaDMan | | v JavaScript, VBScript, Ajax | 6 | 635 | 10.04.2009 9:34 Tominator | | v PHP, ASP | 1 | 372 | 10.02.2015 15:36 killer | | v PHP, ASP | 15 | 929 | 24.01.2011 16:59 emer | | v PHP, ASP | 2 | 476 | 10.09.2010 17:04 DeaDMan | | v PHP, ASP | 4 | 689 | 31.03.2011 12:28 riki137 | | v Delphi, Visual Basic | 2 | 1745 | 03.03.2010 15:50 mathio |
|