Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 27. 10. 2011 18:51

Anna.Newton
Zelenáč
Příspěvky: 10
Reputace:   
 

Delphi7

Zdravím. Začali jsme v informatice programovat v Delphi7. Jelikož jsem teprve na ZŠ a dělala jsem s tím poprvé, poněkud mě to vyděsilo. Na začátku jsou vždycky zmatky...
Já jsem si Delphi7 stáhla a vykutila to, co jste se zatím učili- sčítání, odčítání, určení většího čísla,... Takové základy.
Jen nevím, jak vytvořit situaci, kdy se bude zadávat heslo, stvrdí se tlačítkem a pak se objeví zda je správné či není.
Asi jsou tam nějaká nové výrazy, které neznám.
Mohla bych Vás prosím poprosit, jestliže v Delphi7 umíte programovat a znáte postup pro tento příklad, zda by jste mi nepomohli?
Děkuji :)

Offline

 

#2 27. 10. 2011 21:04 — Editoval frank_horrigan (27. 10. 2011 21:21)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Delphi7

Ahoj,

já jsem céčkař, takže konkrétní kód ti nedodám (udělal bych ti v tom ještě větší hokej než v tom máš), ale zkusím ti navrhnout toto:

cykly jste se učili? Pole znaků (nebo řetězcovou proměnnou) si deklarovat umíš? Stejně tak číst/psát na standarní proud (funkce readln, resp. writeln to dělaly v Pascalu, (který si pamatuju velmi matně), což je vlastně předchůdce Delphi)

Pokud odpovědi zní ano, tak si načti to heslo, které zadáš z klávesnice, a pošleš (enterem) na standardní vstupní proud, které si uložíš do pole znaků, nebo proměnné typu string (popřípadě jak jste se to učili)

"Správné" heslo budeš mít v jiné proměnné (pokud to děláš přes pole, tak by mělo být ideálně stejně velké).

Potom si zkonstruuj cyklus (repeat - until, pokud mně paměť neklame), který bude číst znak po znaku a porovnávat znakové hodnoty obou polí. Pokud se znak na nějaké pozici znaky zadané a "správné" budou lišit, tak cyklus můžeš násilně ukončit, a vypsat hlášku, že heslo není správné. V případě, že jsou obě pole totožná, tak se cyklus provede celý .

Když se provede celý (to zjistíš tak, že iterační proměnná se bude rovnat mezní, při které cyklus končí "sám"), tak můžeš vypsat hlášku, že hesla se shodují. V případě, že se neprovedl celý (byl násilně ukončen, viz výše (C má na to příkaz break)), tak je jasné, že se hesla neshodují, a můžeš nechat vypsat hlášku o tom, že heslo bylo zadáno špatně. Pak můžeš vrátit řízení začátku programu, který umožní zadat heslo znovu (ale to už nemáš zadáno, leda by sis chtěla "šplhnout")


Hope it helps


P.S. určitě jsou tu kolegové od Delphi, přesto kdybys chtěla okomentovaný céčkový kód, tak řekni, dám ti ho sem (pokud ti v tom neudělá víc zmatků)


EDIT: jinak, jestli to po tobě učitel/ka chce, měla by Ti buď poskytnout materiály ke studiu (viz ty nové příkazy, cykly, funkce pro I/O), nebo Tě, potažmo celou třídu to "nějak" vysvětlit.. Neměl/a by po vás chtít něco, co jste se neučili.

Na druhou stranu, základy Delphi jistě najdeš i pomocí Google, některé a zdařilé jsou i v češtině (počítačovou "latinu"  (jazyk anglický) ti ještě doporučovat nebudu)

EDIT2: ještě jeden nápad, možná jednodušší - ale to už si sám nejsem jistý - nemá Delphi na porovnávání řetězců nějakou knihovní funkci, podobně jako C strcmp(*char, *char) ?

EDIT3: Tady je poměrně zdařilý seriálek o základech Delphi, máš-li o programování  tomto jazyce zájem, tak doporučuji projít.Odkaz Celkově, server builder.cz je dle mého hodnocení velmi kvalitní znalostní databáze, pro ty, co neumí pořádně anglicky jasnou volbou (nedělám reklamu, nemám tam majetkové nebo jiné zájmy, vše je IMO)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#3 27. 10. 2011 22:42 — Editoval Pavel Brožek (27. 10. 2011 22:47)

Pavel Brožek
Místo: Praha
Příspěvky: 5694
Škola: Informatika na MFF UK
Pozice: Student
Reputace:   194 
 

Re: Delphi7

Ahoj,

↑ Anna.Newton:

frank_horrigan předpokládá, že vytváříš konzolovou aplikaci (tj. vypadá jako příkazový řádek). Pokud ale chceš tvořit aplikaci s oknama (vzhledem k tomu, že se má odeslání hesla potvrdit tlačítkem, tak bych se k tomu přikláněl), tak postupuj asi takto:

- na plochu okna vlož komponenty button a edit.
- v object inspectoru nastav komponentám potřebné vlastnosti (např. tlačítku nápis, zobrazování hvězdiček místo písmen u hesla…)
- označ si tlačítko a v object inspectoru si otevři events (události), dvakrát klikni na prázné políčko u OnClick, tím se ti do kódu přidá funkce, která se spustí při stisknutí tlačítka.
- Do té funkce dej něco jako

Code:

if (edit1.text = "mojetajneheslo") then
  ShowMessage("Správné heslo")
else
  ShowMessage("Špatné heslo");

Kód je snad tak jednoduchý, že mluví sám za sebe.

Offline

 

#4 27. 10. 2011 23:07 — Editoval frank_horrigan (27. 10. 2011 23:08)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Delphi7

↑ Pavel Brožek:

To jsem předpokládat musel, protože okenní aplikaci bych sice dal dokupy v C (WINAPI), ale jak sám víš, tak je kolem toho spousta "bezcenné" režie, ať už registrace samotného okna, smyčka událostí, registrace "okna" tlačítka a toho edit-boxu, apod :) Snažil jsem se to zjednodušit na konzolovku, nepředpokládám (resp. to může být mojí nezalostí delphi), že by je nutili plnit nějaké struktury WNDCLASS, a volaly nějaké funkce, o kterých nemají ani páru, jak to vlastně funguje a proč :)

Avšak kolem tvého postupu - soudím, že je to jednoduché, a řeší se to graficky, pomocí nějakého (příslušného) grafického editoru vzhledu, kdy si naházíš na okno editbox, nastavíš mu vlastnosti (jen čísla, povolenou délku, hvězdičky/tečky místo textu apod), jako reakci na tlačítko odešleš zprávu (na smyčku událostí), konkrétně WM_COMMAND se spodním slovem wParam rovným identifikátoru tlačítka, jak si to pojmenuješ..., která to sama vyhodnotí a vrátí MessageBox
Avšak, tato diskuse je nad rámec této diskuse a chudinka Anna myslím, že nám (mně) rozumí každé páté slovo, a to ještě blbě.

Na závěr jeden dotaz: to to Delphi má opravdu tak jednoduché konstrukce, nebo já celou dobu programuju (okenní aplikace, pomocí Win32 API (občas MFC, ale z toho nejsem odvařený (ze své lenosti) objektové programování, hold stará škola) zbytečně složitě? (Nemám rád služby jako WinForms, apod, páč s sebou tahají spoustu bordelu, nelíbí se mi, když "prázdná" aplikace ve Forms zabírá sama o sobě 10 MB paměti)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

#5 27. 10. 2011 23:10 Příspěvek uživatele Pavel Brožek byl skryt uživatelem Pavel Brožek. Důvod: Pošlu PM, ať je to tu pro Annu trochu přehledné.

#6 28. 10. 2011 10:08

Anna.Newton
Zelenáč
Příspěvky: 10
Reputace:   
 

Re: Delphi7

Děkuji Vám za pomoc, vyzkoušela jsem ten druhý postup a výsledkem bylo přesně to, co jsem chtěla.
Já vím, působím jak trdlo, když koukám na postupy a říkám si, co to zase je :D Ale každý se jednou učí.
Máme totiž učitele, který po nás ihned chce, abychom se to nějak pokusili sestavit, aniž by nám vysvětlil co určité výrazy znamenají. Já bývám nerada ve škole za blbce, tak jsem si řekla, že to musím nějak doučit :) Jdu teda podívat na ten odkaz o Delphi7, snad se něco nového přiučím a už mi to nebude dělat problémy. Ještě jednou Vám oběma moc děkuji.

Offline

 

#7 30. 10. 2011 16:09

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Delphi7

Zdravím frank_horrigan,
GUI (desktopové aplikace) v čistém C? A v čem pracuješ? Používáš framework, QT framework?


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#8 31. 10. 2011 12:33 — Editoval frank_horrigan (31. 10. 2011 12:34)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Delphi7

↑ RePRO:

Možná budu působit poněkud archaicky, samozřejmě existuje i spousta "udělátek" a podobých záležitostí, ovšem, a to je hlavně dáno důvodem, aby program dělal přesně to, co se mu řekne (a žádný věci kolem toho "navíc"), tak to dělám v čistém C za použití čistého Win32 Api. Moje aplikace nedisponují přílišnou grafickou krásou (ono to ani dost dobře nejde), ale po funkční a rychlostní stránce věci (o kterou jde mým klientům obvykle hlavně), tak nemají konkurenci. Stran grafické krásy - na tom příliš (a obvykle) klientům nezáleží, mají představu hlavně "jak to pracuje" než "jak to vypadá".
Proto čisté céčkové API, které s sebou netahá tuny bordelu, ale dělá jen to, co se mu nakóduje (já vím, je to pracný, často až zbytečně moc), obsluhuje každou událost, kterou obsluhovat má zvlášť, plus u režijního kódu, kterého je tam tuna mám samozřejmě headery (vlastní), které na příslušné místo includnu.

Takže, funguju trochu jako dinosaurus, vím o tom, ale nevadí mi to a dokud na mně trh (požadavky klientů) a konkurence nebude tlačit, abych začal psát aplikace v něčem jiném ("lepším"), tak tak činit zatím nebudu

EDIT: jinak apliakce vyvíjím ve Visual Studiu. Jo, ještě jsem opomněl - dialogové prvky, resp. jejich grafiku řeším samozřejmě graficky, pouze pak obsluhuju zprávy prvků v proceduře okna dialogu


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson