Jump to content

Toljátok a bucira a sapit! Éljen a GSF hagyomány! :D

Cheater

Delphi kezdõknek

Recommended Posts

Cheater

Én is kezdõ vagyok és arra lennék kívácsi, hogy honnan lehet valami forrásanyagot letölteni amibõl az ember elkezdheti tanulni ezt a programnyelvet.

Nameg milyen programmal érdemes írni meg ilyesmi, mert az iskolában ezt a programnylevet fogjuk tanulni és kíváncsi lennék rá, hogy mégis mire számítsak, ezért egy kicsit elõre tanulnék :D

Share this post


Link to post
Share on other sites
Calyd

Szerintem nyugodtan írhattad volna a Delphi 2005 használata topicba is, mindegy.

Nameg milyen programmal érdemes írni

 

Ezt hogy érted? A Delphi egy programnyelv, ebben lehet programokat írni.

 

Segédanyag: szerintem elég jól használható a help, leszámítva egy-két szintaktikai hibát. De van valami iszonyat vastag Delphi könyv is, abból tuti megtanulsz.

 

Elõre tanulással vigyázz egy kicsit. Lehet, sõt hasznos is, de el lehet követni azt a hibát, hogy megtanulsz programozni úgy, hogy nem érted valójában mit miért csinálsz. Ilyenkor szoktak lenni 800-900soros programkódok, amiket legtöbb esetben le lehet rövidíteni 200-300ra is, és hatékonyabbra is.

Nem elrettenteni akarlak, csak javallanám, hogy megértéssel, elgondolkodással programozz, ne csak eszetlenül :)

 

 

De, hogy valami [talán] hasznossal is ellássalak: link :)

Share this post


Link to post
Share on other sites
DonTomika

Üdv!

 

Jó könyv (azt hiszem, mert csak hallomásból ismerem) a "Delphi 7 Mesteri Szinten".

 

Na meg egy link: www.torry.net

Share this post


Link to post
Share on other sites
wizard

Sziasztok!

 

Tudja valaki a köv. probléma megoldását?

 

Van egy Form1-em, rajta egy button.

Szeretném, ha a gomb megnyomásával elõjönne a Form2,

és bezáródna a Form1.

 

A button-ra írt form2.showmodal; próbaltam,

de így mögötte marad a Form1.

 

Elõre is Kösz!

Share this post


Link to post
Share on other sites
wizard

Aki teljesen kezdõ, annak

Sas Tibor: Delphi abszolút kezdõknek címû könyvét ajánlanám.

Én is ezzel kezdtem!!! :punk:

 

A következõ szintet talán ezekbõl kellene elsajátítani:

 

Benkõ Tiborné

Programozási Feladatok és Algoritmusok DELPHI Rendszerben

 

 

Dr. Tamás Péter, Tóth Bertalan, Kuzmina Jekatyerina

Programozzunk Delphi 7 Rendszerben

 

Baga Edit

Delphi másképp

 

 

A Delphi 7 Mesteri Szinten I - II-t

én nem ajánlanám egyik kezdõnek sem. :nemoké:

Share this post


Link to post
Share on other sites
DonTomika
Van egy Form1-em, rajta egy button.

Szeretném, ha a gomb megnyomásával elõjönne a Form2,

és bezáródna a Form1.

Ezt rakd a Button OnClick-jébe:

 

Form2.Show;

Form1.Hide;

 

(ez csak eltünteti a form1-et)

 

Form2.Show;

Form1.Close;

 

(ez be is zárja, de vigyzázz, ha a MainForm a Form1, akkor a programból is ki fog lépni, ezért szvsz inkább a hide-ot használd)

Share this post


Link to post
Share on other sites
wizard

DonTomika!

 

Kösz az infokat! Sokat segítettél. :olé: :olé:

 

Lenne még 1 kérdésem:

 

Ha a kész projektemet .exe-vé alakítom, akkor a programom

bal felsõ sarkában megjelenik egy égõ fáklyát jelképezõ ikon.

(A filekezelõben szintén ez az ikon szerepel a file neve mellett is.)

Hogyan lehet ezt lecserélni?

Share this post


Link to post
Share on other sites
Calyd

Project menü Project options pontjánál tudsz megadni ikont, és más projectnevet.

Share this post


Link to post
Share on other sites
Calyd

Gondolom sokan használátok az Animate komponenst, úgyhogy kéne egy kis help: nekem sehogy sem akar megnyitni avi-t, pedig elvileg arra "szakosodott" :) A probléma igazából ott van, hogy egy MediaPlayer komponensben megnyitott avi van lejátszatva az Animate-ben, és szeretnék tudni "ugrálni" is a filmben, de az animate seek-je meghal.

Mivel MediaPlayerben nyitom meg a filet, és az Animate csak lejátszik, így az Animatebe tulajdonképpen nincs is file betöltve - nem tudom miért, szerintem ennek így semmi értelme... :pislog: Erre akkor jöttem rá, amikor megpróbáltam használni a Seeket. Kiírta, hogy nem tud megnyitni avit. Mondom "mi a fene, hát már meg van nyitva". Hát nincs. :) És az Animate nem tud megnyitni avit. Próbáltam úgy is, hogy amikor a MediaPlayer kap egy filenevet az OpenDialogtól, akkor kapja meg ezt a nevet az Animate is, de meghal. Próbáltam Object Inspectorból direktbe megadni, de nem nyit meg avit, pedig elvileg csak azt tud.

 

Valami a komponensben lehet, vagy csak nem jól használom?

Share this post


Link to post
Share on other sites
DonTomika

Szvsz nem jól használod. Az Animate komponens nem egészen normális AVI videók lejátszására szolgál. Arra inkább a MediaPlayer jó, vagy a Windows Media Player ActiveX-ként. (Component/Import Type Library..., aztán a Windows System32-jébõl betöltöd a wmp.dll-t, majd Install gomb, azt hiszem)

Share this post


Link to post
Share on other sites
Calyd

Jó. De a MediaPlayer meg ebben jeleníti meg az avit. Viszont a MP-ben nem találtam olyan opciót, hogy ugrálni tudjak a megnyitott fileban. Felõlem erre is mondhatsz megoldást :)

Share this post


Link to post
Share on other sites
DonTomika

Áljunk meg egy szóra! :!:

Ha jól értem, akkor a MediaPlayer-rel megnyitod az avit, és az Animate komponenst állítod be a MediaPlayer Display propertyjéhez.

Ez így nem jó!!! A Display-hez teljesen mindegy, hogy mit állítassz be, az csak a megjelenítésre lesz használva, így az Animate seekjét ne is próbáld használni!. (A Display-hez akár egy sima panel is kerülhet)

Amúgy meg a MeidaPlayer.Position property szvsz pont az ugrálásra jó...

Share this post


Link to post
Share on other sites
Calyd

Az világos, hogy csak megjelenít, ezért gondoltam, hogy az Animateben is meg kéne nyitni a filet. És nem találtam a MP-helpben olyat, ami nekem kellett volna. Panelt nem szeretem :)

De a .Position jó lesz, kösz.

Share this post


Link to post
Share on other sites
wizard

Sziasztok!

 

Van egy olyan eljárásom, ami a kivon nevû gomb megnyomásával

az edit1-ben es edit2-ben megadott számokat kivonja

egymásból, és az eredményt közli az edit3-ban.

 

procedure TForm1.kivonClick(Sender: TObject);

var A,B,C:integer;

begin

A:=StrToInt(Edit1.Text);

B:=StrToInt(Edit2.Text);

C:=A-B;

Edit3.Text:= IntToStr©;

end;

 

Eddig tökéletesen mûködik.

 

Annyit akarok változtatni rajta, hogy az Edit1-be

csak 1 és 100 közötti számot lehessen beírni.

 

Pascal-nál ezt valahogy így oldanám meg:

 

repeat

gotoxy(1,1); clreol;

gotoxy(1,1); write('A: '); readln(s);

val(s,n,kod);

until (kod=0) and (n>=1) and (n<=100);

 

Delphinél viszont a repeat-until páros

használatánál elszáll az egész progi.

 

Így maradt az "if A<0 then

begin

showmessage ('Üzenet');

end;"

 

 

Van valakinek ötlete?

Share this post


Link to post
Share on other sites
arpsoft

Használj spinner-t a textbox helyett. Abban be lehet állítani a határértékeket.

Ha nincs ilyen direktbe beépítve a Delphi-be, akkor ActiveX-ként is berakhatod.

Share this post


Link to post
Share on other sites
Calyd

Delphi 7 Enterpriseban tuti van ilyen, de szerintem D5-ben is van. De nem is feltétlenül kell. Le tudod ellenõrizni sima szövegként is: '1'<=x<='100' ez szövegnél is mûködik ASCI alapján ha jól emlékszem. De spin-edit kicsit dizájnosabb valóban :)

Share this post


Link to post
Share on other sites
wizard
Annyit akarok változtatni rajta, hogy az Edit1-be

csak 1 és 100 közötti számot lehessen beírni.

 

Arra rájöttem, hogy 0 és 100 között mûködik mask edittel is.

Csak negatív számokat szintén tudok használni ezzel.

Ezen keresztül nem lehet valahogyan trükközni?

 

Amúgy jelenleg Delphi3-at használok, és a komponens

palettán nem találom sehol sem a spin-edit-et.

Lehet, hogy csak magasabb verziókban van?

Share this post


Link to post
Share on other sites
Calyd

Ha már tényleg nagyon profin meg akarod csinálni, szerintem ez egy jó megoldás lenne:

Keypress event:

- az eljárás elején ellenõrzöd, hogy a "key" változó benne van-e a '0'..'9' halmazban. Ha jól emlékszem akkor a key karakterként van deklarálva, így valami hasonló módon tudnád ezt leírni: If key in '0'..'9' then seged:=Edit.TExt+key. Itt azt is le tudnád ellenõrizni, ha az elsõ karakter (ha van) az 0-e vagy sem.

- utána ha StrToInt(seged) in 1..100 akkor Edit.Text:=seged

 

Ezt nem próbáltam ki, de szerintem mûködik a dolog. És így kiküszöbölöd a konvertálási hiba ellenõrzését, mert csak olyan karaktereket fogsz beírni, amik átalakíthatók.

Share this post


Link to post
Share on other sites
arpsoft

Evvel csak az a gond, hogy az értékadással eltolod a kurzort is az aktuális pozíciójából. Tehát középre nem fogsz tudni folyamatosan írni, mert elugrik a második karakter elõtt a végére.

Share this post


Link to post
Share on other sites
Calyd

Ez tény, de szám beírásánál nem feltételeztem, hogy ilyet akar a felhasználó...

Share this post


Link to post
Share on other sites
wizard

Delphi3-ban is van SpinEdit csak a SpinButton miatt elsiklottam mellette. Sorry.

Kipróbáltam. Tényleg jó dolog, mert Van MaxLength, MaxValue és MinValue tulajdonsága.

 

A számok "léptetése" is jó dolog + nem enged mindenféle karaktert beírni.

Tehát nem csak 1 és 100 közötti számot adhatok meg neki

intervallumnak, hanem akár -100 + 100 közöttit is.

Erre tényleg nagyon jó.

 

Idõközben beleütköztem egy olyan problémába, hogy -100 +100

között engedjen mindent, csak a 0-t ne.

 

Maszkedittel így oldottam meg:

 

maszk beállítása pl: (!#9999;1;_)

OnExitnél végrehajtok egy ellenõrzést:

 

If StrToInt(MaskEdit1.Text)<-100 Then MaskEdit1.Text:='-100';

If StrToInt(MaskEdit1.Text)>100 Then MaskEdit1.Text:='100';

If StrToInt(MaskEdit1.Text)=0 Then

Begin

Showmessage('Nem írhatsz be nullát');

MaskEdit1.SetFocus;

End;

 

 

Köszönöm az eddigi segítséget!!!

Share this post


Link to post
Share on other sites
Calyd

Az elágazásokat ha összevonod, akkor hatékonyabb programot kapsz. Ez ebben az esetben nem túl sok idõ amit nyersz, de érdemes rászokni. Tehát ha egy szám nem kisebb -100-nál, az definíció szerint -100-tól nagyobb-egyenlõ, vagyis értelmes lehet rá a feltétel, hogy nagyobb-e 100-nál.

 

[if StrToInt(MaskEdit1.Text)<-100

Then MaskEdit1.Text:='-100'

Else If StrToInt(MaskEdit1.Text)>100

Then MaskEdit1.Text:='100'

Else If StrToInt(MaskEdit1.Text)=0 Then ...]

 

De nem értem, hogy ha a SpinEdit-et így megkedvelted, akkor miért nem tudod megoldani ott is egy OnExit-el a 0 ellenõrzését? :hááát:

Share this post


Link to post
Share on other sites
wizard

Mert kényelmes ember vagyok! :D

 

De nem egyszerûbb lenne azt is az Object inspectorból?

Sohasem gondolnak rám ezek a fejlesztõk ott a Borlandnál!!! :)

 

Viccet félretéve: Természetesen az általad javasolt is egy jó megoldás.

Share this post


Link to post
Share on other sites
wizard

Sziasztok!

 

Nemrégiben elkezdtem írni egy progit.

Van 1 táblázatom. (StringGrid)

Elsõ sorában random számok. Ezek az X értékek.

Második sorában egy függvény. Ezek az Y értékek.

 

Ezeket kellene valahogy ábrázolnom egy koordináta rendszeren.

 

El is kezdtem leprogramozni hozzá a grafikont.

De már akkor is terjedelmes volt a kód, amikor még csak

a 2 egymást metszõ vonal volt, és a rovátkák.

 

A minap az ActiveX-nél rátaláltam egy Chartfx nevû dologra.

Valami "függvényvarázslónak" tûnik, de nem nagyon igazodtam el rajta.

Van egy olyan érzésem, hogy ez nagymértékben megkönnyítené

a programom írását.

 

Tud valaki egy jó könyvet vagy egy linket ajánlani a témához? :ötlet:

 

Az a gáz, hogy a könyvek nagy részében szinte mindig ugyan az van:

Pascal és object pascal alapok, komponenslista standard & additional

kivesézése, egy kis kivételkezelés, néha kis Assembly, aztán SQL ezerrel.

Eddig csak Füzi János: Grafikai Alkalmazások Delphi Nyelven c. könyve volt

kivétel, de az meg erõsen 3D-s grafika. A Chartfx-rõl viszont sehol sem tettek említést.

 

Elõre is köszönöm!

Share this post


Link to post
Share on other sites
Calyd

Nem tudom mit írtál a kódba, és hogy mit értesz terjedelmes alatt. A sima Image (vagy melyik, már fene emlékszik) komponensel lehet pontonként rajzolni, gondolom ezzel csináltad. Nagyon szép függvényeket lehet vele kirajzolni, ügyes módszerrel még térbelinek tûnõen is tudod ábrázolni a függvényt. Mi csináltunk ilyen függvényábrázolót a suliban, egy srác meg pont Delphiben csinálta, és egyáltalán nem lett nagy a kód.

 

Amúgy függvényábrázoláshoz ajánlom a Lengyel-forma ismeretét (ha esetleg még nem ismernéd). Ez egy kifejezés-rendezõ eljárás, ami elég szokatlan viszont sokkal kezelhetõbb formára hozza pl a matek kifejezéseket. Én két formáját ismerem: postfix (a+b :nyíl: ab+) és prefix (a+b :nyíl: +ab). Persze igazán jó kihasználásához dinamikus memóriahasználatra van szükség, és veremre.

 

Bocs, könyvet nem tudok ajánlani. Help nem elég? Szokott segíteni... :hááát:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...