| | |
| 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 Bydlisko: KK/PP/BA | Napísal F3RY: 21.12.2012 20:24 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 22.12.2012 11:01 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 22.12.2012 11:09 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 22.12.2012 11:32 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 22.12.2012 12:53 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 22.12.2012 13:02 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 22.12.2012 13:20 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 25.12.2012 18:34 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 25.12.2012 20:17 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 27.12.2012 23:11 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 28.12.2012 12:53 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 28.12.2012 15:49 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 28.12.2012 20:31 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 28.12.2012 21:12 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 29.12.2012 10:34 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 29.12.2012 22:34 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 30.12.2012 17:18 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 11.01.2013 1:39 | |
|
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ý: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 11.01.2013 10:12 | |
|
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 Bydlisko: KK/PP/BA | Napísal autor témy F3RY: 11.01.2013 17:04 | |
|
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 |
---|
| Lazarus OOP smernik v Delphi, Visual Basic | 0 | 522 | 30.03.2014 1:56 F3RY | | Premenne v PHP, ASP | 7 | 756 | 17.11.2007 21:18 PHP zaciatocnik | | premenné :D v PHP, ASP | 4 | 503 | 20.11.2008 16:33 pa3ck | | php premenne v PHP, ASP | 7 | 851 | 06.06.2008 14:33 Tominator | | PHP premenne v PHP, ASP | 3 | 537 | 11.07.2009 13:39 KViki | | Systemove premenne v PHP, ASP | 4 | 678 | 14.06.2010 19:53 ricco24 | | GET premenne v PHP, ASP | 8 | 619 | 30.04.2011 22:17 emer | | SQL a premenné v Databázy | 2 | 602 | 15.05.2012 22:37 S-player | | Jquery globalne premenne v JavaScript, VBScript, Ajax | 0 | 580 | 30.01.2011 13:54 DeaDMan | | funkcie a premenné v JavaScript, VBScript, Ajax | 6 | 591 | 10.04.2009 9:34 Tominator | | Systémové premenné win7 v Operačné systémy Microsoft | 4 | 912 | 24.03.2013 0:19 eMp | | pomoc s php-premenne v PHP, ASP | 2 | 447 | 10.09.2010 17:04 DeaDMan | | Odstrániť premenné z URL v PHP, ASP | 4 | 642 | 31.03.2011 12:28 riki137 | | premenne v kode PHP v PHP, ASP | 1 | 341 | 10.02.2015 15:36 killer | | ako ziskat vsetky premenne v PHP, ASP | 15 | 877 | 24.01.2011 16:59 emer | | Lazarus v Delphi, Visual Basic | 2 | 1710 | 03.03.2010 15:50 mathio |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|