Szia Tamas!
>Hogyan lehet Delphi 3-ban egy exe fajlt elinditani?
>Pl formon: Edit1 (eleresi ut es fajlnev) Button1 (indito)
> Edit1.Text :='C:\jatek\winmine.exe'
> Button1 megnyomasara elindul a winmine
Kerdesedre valaszolva a Delphi 3.0 Standard tartalmaz egy FmxUtils.pas
nevu allomanyt. Ebben van nehany specialis filekezelo rutin. Ami neked
kell belole az az ExecuteFile fuggveny. Helye a Delphi
3/Demos/DOC/FILMANEX konyvtar. Ha nem talalod, akkor elkuldom.
Meghivasa:
ExecuteFile(FileName, Parameterek, Konyvtar ,SW_SHOW);
A peldaul FileOpenDialog ablakkal megkapott teljes utvonalat bontsd szet
az ExtractFilePath, ExtractFileName fuggvenyekkel. Ezek szabvany Delphi
rutinok, a Helpben szerepelnek. A parameterkent szereplo SW_SHOW konstanst
is megtalalhatod a Helpben.
Ertheto volt :)
RIA
|
Sziasztok!
> Ket viszonylag egyszeru megoldast tudok javasolni, mindketto VESA-s
> (Video Bios Extensiont (VBE) hasznal). 1. VESA megszakitasokkal (ezek is
> INT10h-k) kell videomodot valtani, mert az elvileg MINDEN VESA-s kartyan
Szerintem jobban jarsz, ha nem direktbe valtasz videomodot, hanem megadod
az x,y,bpp-t es kikeresed. (AX=4f00, ES:DI-512 byteos buffer) Ez visszaad
egy VBEInfoBlock structot, ebben benne van a VideoModePtr mezo, ami egy
far pointer a tamogatott videomodok listajara, (minden mod egy word, a lista
vegen -1). Utana vegiglepkedsz a modokon (ax=4f01h, cx=mode, es:di-256
byte-os buffer) Ez visszaadja az adott mod ModeInfoBlockjat. Ebben van
[XY]resolution, bpp meg miegyeb. Ha megfelel, akkor valtsal modot.
> az aktualis bankok kozott is VESA hivasokkal valaszthatsz (nem VESA-s
> karyaknal ez kartyaspecifikus). Ez a lassabb. 2. Azonban valhatsz egybol
Ez igy igaz. Jo lassu. Bar attol fugg, mit irsz. Pl. egy poly-filler nem
nagyon erzi meg ;) De van egy gyorsabb is: a modeinfo visszaadja a lapozo
rutin direkt cimet is (WinFuncPtr).
> Linear Frame Buffer-be is, ehhez minimum VBE 2.0 kell (osszes mai kartya
> rohogve tudja), es akkor egyben erheted el a teljes videomemoriat. Azt
> nem tudom, hogy az A0000-tol kezdve-e, ki kell probalni.
A modeinfo-ban van egy PhysBasePtr, oda rakja. Ezt csak vedett modbol
lehet hasznalni, ugyhogy a Turbo Pascal nem fogja tudni. Esetleg a Free
Pascal? Ezt meg be kell mappolni vhova a cimtartomanyba (DPMI), es a vegen
lesz egy pointered az egesz videomemoriara. Ha mar VBE2, akkor lehet kerni
pmode interface-t, igy direktbe hivogathadod pl. a SetDisplayStart-ot, nem
kell intekkel szorozni.
> RGB-re, tehat: rrrrrrrrggggggggbbbbbbbb adja a bajtot. 24 bitesnel ezt
> a bajtot beirod. 32 bitesnel szinten, de amit utana irsz, az lehet
> barmi, mar nem hat a szinre. Ezt tapasztaltad te is. 16 bites modoknal
> igy nez ki: rrrrrggggggbbbbb (5 red, 6 green, 5 blue)
A mar sokat emlegetett modeinfoban van meg az r,g,b,a mezok kezdete es
hossza is. ;)
Sajna nem tudom, hogy a ket strukturaban mi hanyadik bajton kezdodik, de
keress ra a neten vmilyen vbe doksira. Esetleg ha irsz egy mailt, akkor
tudok kuldeni. Van meg c++ pmode "peldakod" is ;)
Udv/Gabor
|
Udv Mindenkinek!
irta:
>Delphi 5 -ben irok egy progit,mar majdnem el is keszult, de csak 1
>ablakos! En pedig meg szeretnem csinalni azt,hogy ha rakattintok
>egy gombra,akkor egy uj ablak (Form) jojjon elo,amit szepen
>megint ki lehet csinositani.Szoval azt szeretnem tudni,hogy
>pontosan hogy is lehetne ezt megvalositani.
En ugyan Delphi 3-at hasznalok, de ez biztosan nem valtozott.
Eloszor add hozza az alkalmazashoz az uj formot.
Ez 3.0-ban az eszkoztar "New Form" gombjaval, vagy a
File->New Form menuponttal erheto el.
Meghivasa ketfele modon tortenhet: modalis, vagy nemmodalis.
Modalis eseten, amig be nem zarod, nem tudsz mas ablakra
valtani.
Ha a form neve "Ujform" lesz, megjelenitese es bezarasa az
alabbi modon tortenik:
Modalis:
Ujform.ShowModal;
Ujform.Free;
Nemmodalis:
Ujform.Show;
Ujform.Close;
Remelem, segitettem.
KASI
|