Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok NapísalOffline : 29.05.2011 12:09

Dobrý deň.
Prosím vás potreboval by som poradiť.
Robím program, ktorý zobrazuje obrázky.Využívam pri tom aj Timer. Chcem aby si užívateľ sám zadal, po kolkých sekundách sa majú obrázky zmeniť no neviem ako na to.
Zatial som napísal toto:

var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin
Timer1.Enabled:=false;
tm:= tm+1;
V:=StrToInt(Edit1.Text);
if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
if tm = (7*V+1) then close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

end.




Možno že je to úplne zle, neviem, prosím vás pre to o radu ako to dosiahnuť.


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 12:35

Ved uz len za riadok:
Kód:
V:=StrToInt(Edit1.Text);

pridaj:
Kód:
Timer1.Intervar := V * 1000;


Urcite by som ti to ale oporucil este supnut do bloku try/except ak by bolo zadane nespravne cislo.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok Napísal autor témyOffline : 29.05.2011 14:11

Diki moc ale aj tak mi to nejde :( ked spustim program tak mi hned vyskoci chyba .... nevedel som ako to mam sem dat tak tu je link co mi vyskoci: http://imageshack.us/photo/my-images/807/chyba.jpg/
Vedel by si mi s tym pomoct?

...no a to co si mi odporucil tak nanestastie neviem ako sa to robi...


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 14:30

Ved prave to je chyba, ktora vznikne pri konverzii, co si mal obalit do bloku try/except. Nemam po ruke Delphi a uz dlho som v nom nerobil, takze skusim iba tak naslepo:

Kód:
var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin

    tm:= tm+1;

    try
        V:= StrToInt(Edit1.Text);
    except
        on E:exception do begin
            ShowMessage( 'Neplatne cislo!' );
            Timer1.Enabled := false;
            exit;
        end;
    end;

    Timer1.Intervar := V * 1000;

    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
    if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
    if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
    if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
    if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
    if tm = (7*V+1) then close;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Timer1.Enabled:=true;
end;

end.


Na zaciatku nastav v Object Inspectore Timer1.Enabled na false, ak nemas. Potom po kliknuti na Button1 sa spusti Timer1. Tie if-y si mozes zmenit na prepinac case, bolo by to prehladnejsie a tomu prepinaniu obrazkov som trocha nepochopil ako to riesis, takze som ti do toho nic nemenil.


Offline

Užívateľ
Užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 12.10.06
Prihlásený: 25.04.24
Príspevky: 20312
Témy: 79
Bydlisko: Banska Byst...
Príspevok NapísalOffline : 29.05.2011 14:32

taka chyba hodne casto skace, ked program spustis napr. s prazdnym polom na zadavanie a nemas osetrenu vynimku.

A k tomu try/except...delphi ma tak fasa spravenu napovedu aj s prikladmi, ze to musi chapat kazdy.







_________________
Ryzen 7 3700X | SilentiumPC Fera 3 | Asrock X570M Pro4 | Patriot Viper 4 Blackout 16GB DDR4-3600 CL17 | Gainward RTX4060 Ti Pegasus 8GB | Samsung 970evo Plus 250GB NVMe | Corsair MP510 1TB NVMe | Samsung 980 Pro 2TB NVMe | Corsair RM550x | 32" Samsung ViewFinity S60UA | 3x Noctua NF-S12B redux 1200 PWM
Xiaomi Mi 9 Lite 64GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok Napísal autor témyOffline : 29.05.2011 14:48

diki moc ... pomohlo to ... a hlavne to, ze som v Object Inspectore nastavil Timer na false ..... ale aj tak mi to nejde dobre - obrazky nehadze

Chcem to proste tak, ze ked si zadam do editu napr 2, tak kazde dve sekundy sa mi zobrazi iny obrazok, a ked prejdu vsetky tak sa program sam ukonci --- pomozete este?


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 14:54

Jasne, ze pomozeme. To som ti pisal, ze nechapem tomu postupu, ako ich menis. Uprav toto:
Kód:
    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
    if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
    if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
    if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
    if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
    if tm = (7*V+1) then close;

na toto:
Kód:
    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = 2 then image1.Picture.loadfromfile('2.bmp');
    if tm = 3 then image1.Picture.loadfromfile('3.bmp');
    if tm = 4 then image1.Picture.loadfromfile('4.bmp');
    if tm = 5 then image1.Picture.loadfromfile('5.bmp');
    if tm = 6 then image1.Picture.loadfromfile('6.bmp');
    if tm = 7 then begin
        Timer1.Enabled := false;
        tm := 0;
        exit;
    end;


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 29.05.2011 14:59

s delphi nerobím, ale jedna vec mi nedá pokoj - prečo Fico neodporúčaš použiť "else if"? Alebo ešte lepšie "switch", keďže tento príklad si o to priam žiada...? V teórii by mali byť oba prípady rýchlejšie ako toto.. (jasné, možno v tomto konkrétnom prípade by to bolo zanedbateľný zisk, ale nie je lepšie sa to naučiť raz a poriadne?)







_________________
C#, PHP, ...
Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 15:06

Fico píše:
Tie if-y si mozes zmenit na prepinac case, bolo by to prehladnejsie a tomu prepinaniu obrazkov som trocha nepochopil ako to riesis, takze som ti do toho nic nemenil.


Nenapisal som mu presnu syntax, lebo som si nebol isty, aka je - som "preuceny" na C syntax.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok Napísal autor témyOffline : 29.05.2011 15:46

Obrazky vsak stale nejdu same od sema .... ked vsak klikam na tlacidlo po hodne dlhej chvili sa zmenia ... ale naozaj musim dost dlho klikat .... neviete co by s tym mohlo byt ?

Tu je cely zdrojovy ako ho mam:

var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin
Timer1.Enabled:=false;
tm:= tm+1;
try
V:= StrToInt(Edit1.Text);
except
on E:exception do begin
ShowMessage( 'Neplatne cislo!' );
Timer1.Enabled := false;
exit;
end;
end;
Timer1.Interval := V * 1000;
if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
if tm = 2 then image1.Picture.loadfromfile('2.bmp');
if tm = 3 then image1.Picture.loadfromfile('3.bmp');
if tm = 4 then image1.Picture.loadfromfile('4.bmp');
if tm = 5 then image1.Picture.loadfromfile('5.bmp');
if tm = 6 then image1.Picture.loadfromfile('6.bmp');
if tm = 7 then begin
Timer1.Enabled := false;
tm := 0;
exit;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

end.


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 15:59

1.) Videl si niekde v mojom kode, aby som ti tam dal do tela timer-u, aby sa ti hned po starte vypol?
Kód:
procedure TForm1.Timer1Timer(Sender: TObject);
var
    V:integer;
begin
    Timer1.Enabled:=false;

Cize odstran riadok Timer1.Enabled:=false; a pozri si este raz pozornejsie, ako som ti to napisal predtym.

2.) Ked vkladas nejaky kod tu na forum, tak ho cely oznac a hore na paneli mas znacku "code", klikni na nu aby bol kod lepsie citatelny.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok Napísal autor témyOffline : 29.05.2011 16:18

Aha dakujem skusim to .... to som mal ja najprv tak spravene no potom som to musel v objectinpexctore vypat a zabudol som to dat prec ... vdaka za radu budem to tak robit

// pridané po 16 minútach od posledného príspevku

diki moc uz to slape jak hodinky :D

...este by som mal jednu otazku ... mam jeden Form na nom edit a tlacitko. do editu si zadam nejaku hodnotu. Ked kliknem na tlacitko tak sa mi vyvola druhy Form. na nom mam dalsie tlacitko, pod ktorym mam uz program. ako mam urobit aby si program zobral hodnotu z editu, ktory je na prvom Form-e?? Da sa to vobec nejako? alebo ten edit musim mat len na tom forme kde mam aj tlacitko s programom


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 25.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 29.05.2011 16:25

Jasne, da sa to. Do uses jednoducho pridaj unit s druhym formularom, teda napr sme v Unit2:
Kód:
uses Form1;

a potom snim pracuj napr takto:
Kód:
procedure TForm2.Button1Click(Sender: TObject);
var
   nejake_data: string;
begin
    nejake_data := Form1.Edit1.Text;
end;


Nieco podobne sa riesilo tu, mrkni na to:
http://www.pcforum.sk/post-vp1035469.html#1035469


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1
Príspevok Napísal autor témyOffline : 29.05.2011 17:27

Diki ide to. ... heh ale ved to je pochopitelne :-D


Odpovedať na tému [ Príspevkov: 14 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. píše ´u miesto ú...

v Operačné systémy Microsoft

2

454

09.04.2013 8:47

JTB Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. ako napisem ů

v Krčma

17

24305

09.05.2011 15:02

Daron Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Winamp, lišta ako u WMP

v Audio programy

2

714

18.10.2008 14:30

Zdravotnik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako zmenit zavadzac u ubuntu

v Operačné systémy Unix a Linux

4

811

19.10.2008 13:17

dadmtb Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako sa zbavit tranformation pack-u

v Ostatné programy

3

388

24.07.2011 19:53

harry44 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako hromadne upravit tagy u MP3

v Audio programy

2

1300

16.07.2009 21:14

Horalka Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako na zakladne nastavenie BIOS-u

v Intel čipové sady

5

961

21.12.2011 9:25

KocuR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako sa zbaviť problémových dvojklikov u myší

v Externé zariadenia

9

1905

28.05.2013 18:17

KocuR Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako je riešeny zvuk u TV karty ?

v Rozširujúce karty

8

961

26.10.2008 18:40

jutes Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. WAN - ako to vlastne u mňa funguje?

v Poskytovatelia internetu

7

417

14.07.2015 12:49

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako naimportovať adresáre /kontakty/ do Gmail-u

v Sieťové a internetové programy

0

499

13.08.2008 20:38

hornet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako preinštalovať Windows, ktorý je v notebook-u

v Notebooky a netbooky

10

3245

16.06.2013 0:19

mesiah Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako na win 7 u notebooku Asus M51Ta

v Články

7

2854

27.11.2011 16:15

Qpkqkma Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako je to s ovladacmi u SATAII HDD?

v Pevné disky a radiče

10

621

06.09.2007 17:50

Jaro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. V com nahrat k mpg-u mp3 ako podmas?

v Video programy

1

644

07.01.2008 18:56

mimkork Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako dosiahnut aby led dioda hdd svietila u sata diskoch

v Pevné disky a radiče

3

726

29.10.2007 17:39

Holup Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra