Jump to content
GSForum - Segélyvonal

Delphi kezdõknek


Cheater

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

Link to comment
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 :)

Link to comment
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

Link to comment
Share on other sites

  • 2 weeks later...
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!

Link to comment
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é:

Link to comment
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)

Link to comment
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?

Link to comment
Share on other sites

Calyd

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

Link to comment
Share on other sites

  • 2 weeks later...
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?

Link to comment
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)

Link to comment
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 :)

Link to comment
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ó...

Link to comment
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.

Link to comment
Share on other sites

  • 3 weeks later...
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?

Link to comment
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.

Link to comment
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 :)

Link to comment
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?

Link to comment
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.

Link to comment
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.

Link to comment
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ó...

Link to comment
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!!!

Link to comment
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:

Link to comment
Share on other sites

  • 3 weeks later...
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.

Link to comment
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!

Link to comment
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:

Link to comment
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...