Hollosi Information eXchange /HIX/
HIX CODER 700
Copyright (C) HIX
2000-01-13
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 Re: Win32 API kerdes (mind)  15 sor     (cikkei)
2 Re: pascal (mind)  15 sor     (cikkei)
3 Moderalas (mind)  61 sor     (cikkei)
4 Delphi indexeles, email, printer (mind)  27 sor     (cikkei)
5 pascal + hang (mind)  13 sor     (cikkei)
6 Ctrl+Alt+Del letiltas Win95 alatt ? (mind)  15 sor     (cikkei)
7 GetActiveWindow() (mind)  13 sor     (cikkei)
8 pascal (mind)  11 sor     (cikkei)
9 Re: pascal (mind)  11 sor     (cikkei)
10 Re: Win32 API kerdes (mind)  10 sor     (cikkei)
11 Re: Eger eltuntetes!? (mind)  12 sor     (cikkei)
12 usb11.pdf (mind)  12 sor     (cikkei)
13 Re: Paletta, vonalhuzas (mind)  130 sor     (cikkei)
14 Masodik szuletesnap (mind)  18 sor     (cikkei)
15 8 kiralyno a sakktablan (mind)  18 sor     (cikkei)
16 Re: pascal (mind)  16 sor     (cikkei)

+ - Re: Win32 API kerdes (mind) VÁLASZ  Feladó: (cikkei)

Hi!

> hogyan lehet megtudni egy Win32-es rendszerben (mondjuk NT4),
> - hogy melyik az aktiv ablak (nem a sajat thread-eme mint a
>   GetActiveWindow(), hanem a tenylegesen aktiv)

Kicsit megteveszto a GetActiveWindow() neve...
Hasznald a GetForegroundWindow()-t.

> - mi az eger aktualis pozicioja.

Ebben nem vagyok 100%-ig biztos, de azt hiszem hogy a
GetCursorPos() adja meg.

Andras
+ - Re: pascal (mind) VÁLASZ  Feladó: (cikkei)

> Hogyan kell lekerdezni (dos unit) egy konyvtar (az alapkonyvtar, aminek
> nem
> tudni a pontos helyet (innen inditottak a program.exe-t)

A GetDir(0,string) az eppen aktualis konyvtart adja meg, de ha arra vagy
kivancsi hogy melyik konyvtarban van a program, akkor a FSplit()-tel
fel kell darabolni a ParamStr(0)-t.

> Hogyan lehet megtudni hogy ebben a könyvtarban milyen -.exe file-ok
> vannak?

Fajlok keresesere a FindFirst/FindNext hasznalhato. Megadod hogy *.exe,
attrib.-nak pedig anyfile-(directory+volumeid).

Andras
+ - Moderalas (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

Nehany megjegyzes a CODER moderalasaval kapcsolatban:

1. A pro/contra opensource, licenszszerzodesek, stb. temaju threadek
_offtopicok_ itt. A CODER egy technikai forum, temaja az (ugymond
"hardcore") programozas; kerdes -> valasz -> kommentar/uj kerdes/koszonet
-> stb. az idealis (de termeszetesen nem az egyetlen elkepzelheto) "minta".

Igen, ez egy kis, igen specializalt listanak indult egy "beavatott"
kozonseg szamara; Jozsi maskulonben bele sem egyezett volna, hogy
elinduljon. Az altalanos technikai/technologiai kerdesekre mar ott
volt (es meg mindit ott van) a HIX GURU, de a szoban forgo temak
zome szerintem meg oda sem valo. Ezek inkabb a HIX VITAra valok
(vagy akar egy CODER-FLAMEre) azt pont az ilyen "politizalasra"
csinalta Jozsi. (Egyebkent minek kulon CODER-FLAME? Aki szeretne ilyet,
iratkozzon fel a "linux-flame"-re...)

2. En szeret(t)em, hogy a CODER kicsi es koncentralt/atlathato.
Nem tudom, Ti hogy vagytok vele, de en orulok (orultem?) neki, hogy a
CODERt olvasva nem kell strapalnom a PgDn-t, magyarul azzal foglalkoznom,
hogy a szakmailag ertekes (vagy legalabbis a lista profiljaba illo)
cikkeket kivalogassam a sok "szellemi mago:mles" kozul (nem all
szandekomban megserteni senkit, de ez a (magan-)velemenyem); raadasul
zomeben olyan temakrol van itt szo, amiket masok masutt mar szamtalanszor
csontig (sot veloig) leragtak, nulla eredmennyel - a CODER sem produkalt
itt kulonbet.

3. _Nem_ arrol van szo, hogy megtiltjuk barkinek, hogy egy temarol
vitatkozzon, vagy hogy eloirjuk a temakat, amirol szabad diszkutalni.
Arrol sincs szo, hogy mi moderatorok ki akarjuk sajatitani a listat.
Vitatkozzatok, flameljetek, ahogy es amirol tetszik, csak ha
megkerhetjuk, ezt ne a CODERen tegyetek, ez maradjon meg technikai
listanak. (Vannak persze vitak, amik a CODERbe valok, pl. a multkori
'goto' thread.)

4. Errol (marmint a moderalasrol) _nem_ lesz itt vita thread, mert
azt mondani sem kell, hogy az aztan tenyleg offtopic: flamek/valaszok
ebben a temaban nem fognak megjelenni a CODERen. Ugyancsak nem fogok
privat levelezesbe bonyolodni senkivel ez ugyben. Nem szivesen ugyan
(oszinten szolva ezer jobb dolgom van), de hajlando vagyok arra, hogy
a moderalast megbeszeljuk a VITAn, arra az idore feliratkozok.
En biztos nem inditok errol threadet, ha valaki megteszi, irja meg,
hogy tudjuk.

<csendes megjegyzes>
Persze sokkal jobb lenne, ha a felek eleve az opensource stb.
threadeket vinnek at a VITAra, es ott csinalnak tovabb: a vitara
vagyoknak meglenne a diszkusszio, a vitara nem kivancsiak erintese
nelkul.
</csendes megjegyzes>

5. Higgyetek el, en ezt nem szarakodasbol irom. De: mar eleg regota
internetezek, es szamtalan listat lattam elfajulni, elvezhetetlenne valni.
Egy jo pelda erre a HIX GURU, a "linux-kernel", vagy barmelyik nagyobb
newsgroup. Ezt biztos tudjak azok, akik ezeket a listakat meg akkor
olvastak, amikor azokbol meg lehetett tanulni. Ne hagyjuk a CODERt
is igy elfajulni!

Barna
(moderator)
+ - Delphi indexeles, email, printer (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok

Delphi 3.0 adatallomanyban (TQuery) kellene
magyar ekezetes betuk szerint sorbarendeznem
nevlistat. Van erre valami lehetoseg vagy le kell
programozni es egy masik mezot hasznalni
indexmezonek?

Szinten Delphi 3.0, NT4 alol kellene programbol
A user altal megadott szoveggel emilt kuldenem
fix cimre.

Delphi 3.0 standard gyakran osszeugrik az
NT4 nyomtatoszerverevel. Nem nyomtat,
elszall a progi (printer index out of range) uzenettel
vagy eppen letiltja a nyomtatoelerest azon
a gepen. Kerdesem, hogy a kesobbi verziok jobbak-e
mar ebbol a szempontbol, vagy a Delphi 4.0 standard
is ilyen butuska ;-))
Egyszer mar kaptam javitofileokrol cimet, de igazan
nem segitettek, a hibauzenet ritkabban jon, de a
tobbi maradt :-(

Koszonom a segitseget

          RIA

+ - pascal + hang (mind) VÁLASZ  Feladó: (cikkei)

Hello Coderek,

  Nos Pascalbol lehet adott lemezszektort irni olvasni ASM nelkul?
  Ha nem, akkor leci irjatok nekem egy procedurat mert nem ertek
  assm-ul. Koszke.

  Meg kene nekem valami hangot (wave v. voc) lejatszo forras
  pascalhoz, vagy c-hez vagy mindegy... csak kicsi legyen, es
  parameterezheto... ha a forras sincs, az se nagy baj....

Best regards,
------------- Hungarian News member --------------
 Jonowsky                mailto:
+ - Ctrl+Alt+Del letiltas Win95 alatt ? (mind) VÁLASZ  Feladó: (cikkei)

> Felado :  [Hungary]
> Temakor: Re: Ctrl+Alt+Del letiltas Win95 alatt ?  ( 4 sor )
> Idopont: Tue Jan 11 12:25:02 EST 2000 CODER #699
> - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> Egyszeruen ra kell engedni az alkalmazas-ablak handle-jere
ShowWindow()-ot,
> SW_HIDE parameterrel.
>
>Gabor

Nem, az csak a TaskBarrol tunteti el az alkalmazas ikonjat, de a
Ctrl+Alt+Del -nel ott lesz.

joco
+ - GetActiveWindow() (mind) VÁLASZ  Feladó: (cikkei)

Azt hiszem, ha SetActiveWindow()-ot hasznalsz, az viszaadja az elozo ablak
handlerjet.
Igy hat a modszer egyszeru:
- csinalsz egy SetActiveWindow()-ot.
- megkapod a regi aktiv ablak handlerjet.
- ezutan pedig visszaalitod ezt aktivra.

Egy masik modszer, hogy FindWindow()-al felsoroltatod az osszes ablakot ami
van a Desktopon.
Ezutan pedig IsWindowActive() vagy valami hasonlo fuggvennyel  lekerdezed
hogy o-e az aktiv ablak.

A kurzor poziciojat a GetCursorPos()-al kerdezed le ha jol emlekszem.
+ - pascal (mind) VÁLASZ  Feladó: (cikkei)

>Hogyan kell lekerdezni (dos unit) egy konyvtar (az alapkonyvtar, aminek nem
>tudni a pontos helyet (innen inditottak a program.exe-t)

A ParamStr[0] tartalmazza az EXE teljes eleresi utjat es nevet.

>Hogyan lehet megtudni hogy ebben a könyvtarban milyen -.exe file-ok vannak?

A fenti konyvtarban keresd meg az EXE-ket. Tekintsd at a FindFirst es FindNext
procedurakat a helpben.

Veres Sandor
+ - Re: pascal (mind) VÁLASZ  Feladó: (cikkei)

>Hogyan kell lekerdezni (dos unit) egy konyvtar (az alapkonyvtar, aminek nem
>tudni a pontos helyet (innen inditottak a program.exe-t)
Az inditasi/aktualis konyvtar (=alapkonyvtar?) es a programot tartalmazo
konyvtar nem feteltlenul ugyanaz. Elobbit a GetDir(0,S)-sel, mig utobbi a
ParamStr(0) lekerdezesevel tudhatod meg.

>Hogyan lehet megtudni hogy ebben a könyvtarban milyen -.exe file-ok vannak?
A FindFirst() es FindNext fuggvenyek kornyeken nezzel szet es foleg olvass
el eloszor egy Turbo Pascal konyvet!

Gabor
+ - Re: Win32 API kerdes (mind) VÁLASZ  Feladó: (cikkei)

>Lehet, hogy en vagyok bena, de sehol sem talalok ra modszert,
>hogyan lehet megtudni egy Win32-es rendszerben (mondjuk NT4),
>- hogy melyik az aktiv ablak (nem a sajat thread-eme mint a
>  GetActiveWindow(), hanem a tenylegesen aktiv)
GetForegroundWindow()

>- mi az eger aktualis pozicioja.
GetCursorPos()

Gabor
+ - Re: Eger eltuntetes!? (mind) VÁLASZ  Feladó: (cikkei)

>ObjectWinfos-ban programozok, de nem talalom, hogy hogyan lehet eltuntetni
>az egerkurzort. A formajat az ablakomban meg tudom
>altoztatni( LoadCursor(...) ), de eltuntetni nem. WinAPI megoldas is
>erdekel!
Elrejteni es megjeleniteni a kurzort a ShowCursor() API fuggvennyel tudod,
de ovatosan banjal vele, mert egyreszt globalis tulajdonsag, masreszt lehet,
hogy osszeakadsz az objektumokkal ha azok is maceraljak. Ha egy adott
kontrollban nem akarod, hogy latszodjon a kurzor akkor sokkal praktikusabb
ha annak a megfelelo tulajdonsagat egy "ures" (egyetlen bekapcsolt allapotu
pixelt sem tartalmazo) kurzorra allitod.

Gabor
+ - usb11.pdf (mind) VÁLASZ  Feladó: (cikkei)

Hello!

Bocs nem tudom ki kerdezte (Outlook strikes again)
de itt van egy par link ami mukodik:

http://kbs.cs.tu-berlin.de/~stewe/pct/usb11.pdf
http://www.ee.technion.ac.il/~dgluskin/044800/usb11.pdf
http://www.powies.net/pc-technik/pdf/usb11.pdf

Udv.

Attila Voros, Chief Engineer, ISDgames
+ - Re: Paletta, vonalhuzas (mind) VÁLASZ  Feladó: (cikkei)

On 11 Jan 00 at 8:50, Dudás József wrote:

> A vonalhuzo rutint sokan kertek... itt egy osszefoglalo:
>
> A Bresenham vonalhuzo algoritmus pascal implementaciojat Toth Arpi
> (?)-tol kaptam. Egy kis modositast is beiktattam mert volt valami
> olyan resze, aminek nem jottem ra az eltermere... :)

Pedig bizonyara ugy volt a jobb! Nem tudom, milyen volt az a rutin,
de ez a modositott nem valami jo most. Nem probaltam ki, de bizonyara
tul vastag vonalat huz, mert vagy csak x-szel, vagy csak y-nal lep
egyszerre (vagyis nem tud ferden lepni), azonkivul mindenfelekeppen
lep a laposabb iranyba rogton az elso vagy masodik pixel utan, akkor
is, ha nagyon lapos az egyenes.

Nem biztos am, hogy mindezek a hianyossagok a 'javitasodtol' kerultek
be, lehet, hogy ilyen tulajdonsagu volt mar az eredeti rutin is,
viszont akkor az nem igazi Bresenham.

> A Bresenham algoritmuson kivul a procedura elejen meg egy y1>y2
> ellenorzes is van ... tehat ha biztosakk vagyunk benne, hogy az
> y2-onk mindig nagyobb mint az y1 akkor azt a reszt kihagyhatjuk.

Nincsen ra szukseg maskor sem, csak valahogy belekerulhetett egy 0 a
negativ elojel helyett itt:

>  if Y1 > Y2 then Ys := 01;

Szoval 01 helyett -1 kell oda, es kihagyhatod az elejerol a
csereberet.

> Ezenkivul kaptam meg Sting-tol egy angol nyelvu doksit, amiben
> levan irva az algoritmus elmeleti oldala, <...> de mivel a szoveg
> nagysaga meghaladja az coder kereteit <...>

El lehet azt mondani rovidebben is :)

Szoval a lenyeg a kovetkezo: (x1,y1) es (x2,y2) a ket pont,
tavolsaguk dx=x2-x1, dy=y2-y1. A ket pont relativ helyzete szerint 8
reszre oszthatjuk a sikot a szerint, hogy a ket tavolsag kozul
melyik milyen elojelu, valamint melyik a nagyobb abszolut erteku.
Tegyuk fel az egyszeruseg kedveert, hogy dx es dy is pozitivak, es
hogy dx > dy. Vagyis az egyenes a legelso siknyolcadba esik:

(Fixed font-ra kell kapcsolni az abrahoz...)

            |
    \    6. | 7.    /
      \     |     /
   5.   \   |   /     8. nyolcad
     (x1,y1)| /
 ---------- * * ----------------> X
          / | \ * * *    1. nyolcad
   4.   /   |   \     * * *
      /     |     \         * *
    /  3.   |  2.   \          (x2,y2)
           \|/nyolcad \
          Y +       45 fok

(Akinek jobban tetszik, nyugodtan allitsa vissza a talpara a
koordinatarendszert :)

A koordinatarendszer kozepet az (x1,y1) kezdopontba tettem.

Mivel dx>dy, tipikusan x-szel fogunk jobbra lepkedni egyesevel, es
y-nal csupan neha-neha egyet lefele. Az 'idealis' helyzet az lenne,
ha minden x lepeskor y-nal pixelt tudnank rakni az interpolacioval
kijovo helyre, de sajnos csak az egesz pontokhoz van koordinatank.

A Bresenham algoritmus elso otlete az, hogy szamoljuk minden
lepesnel, hogy mennyi a hibaja annak, hogy az idealis helyzethez
kepest a legkozelebbi egeszre raktuk az y-t. Mindaddig, amig a hiba
kisebb 1/2-nel, addig nem kell y-t modositani, amikor pedig nagyobb
lesz, akkor kell atlepnunk a rakovetkezo y iranyu pixelre (amitol a
hiba 1-gyel kevesebb, negativ lesz, es abszolut ertekben megint
kisebb 1/2-nel).

A masik otlet, hogy meg lehet uszni a lebegopontos szamok
hasznalatat, sot, mint ki fog derulni, meg csak osztani (vagy
szorozni) sem kell. Nezzuk csak:

kezdeti hiba:                          H0 = 0
minden egyes lepeskor
1 pixellel jobbra lepve:               Xuj = Xmost + 1
az uj pixel helye elvileg ez lenne:    Yuj = Ymost + dy/dx
vagyis ha valtozatlanul hagyjuk y-t:   Huj = Hmost + dy/dx
 ... ekkorara modosul a hiba.

dx>dy, tehat dy/dx 1-nel kisebb szam. A hiba ennek egesz szamu
tobbszorose tud csak lenni, hisz minden lepesnel dy/dx-szel nol. Ha
tehat a hiba dx-szeresevel szamolnank, akkor a hiba erteke mindig
egesz szam lenne. Jeloljuk ezt E-vel, E=H*dx; Euj = Emost + dy.

Vagyis minden x lepesnel dy-nal novekszik a hiba. Az 1/2-nek ebben a
skalaban dx/2 felel meg, ehhez kell hasonlitani, hogy mikor lesz a
hiba ennel nagyobb. Amikor pedig y iranyba is lepunk egyet (mert
E>dx/2 lett), akkor a hiba 1-gyel, vagyis a skalankon dx-szel
csokken.

Ezzel keszen is vagyunk. C-szeru kodban:

  e=0;
  putpixel(x,y);
  while(nem_ertunk_a_vegere) {
    x++; e += dy;
    if (e > dx/2) {
      y++; e -= dx;
    }
    putpixel(x,y);
  }

Lehet azt is csinalni, hogy a hibaskalat eltoljuk dx/2-vel,
vagyis kezdetben 0 helyett e=-dx/2, igy akkor kell y (vagyis a
laposabbik) iranyba is lepni, amikor 0-nal lesz nagyobb a hibaertek.

Amit meg meg kell oldani, az a tobbi 7 siknyolcad kezelese. Egy
reszet el lehet intezni az elojelek hasznalataval x++ es y++ helyett
(x += sx; y += sy), de igy meg mindig csak 4 siknyolcadot fedtunk le.
A masik negyhez az x es y koordinatak szerepet kell felcserelni. Ezt
a legegyszerubbb ugy megtenni, hogy kulon rutin van a lapos, es kulon
a meredek egyenesekre :) A tegnapi rutin nem duplazta a kodot,
viszont azt hiszem, ennek a sporolasnak a kovetkezmenye a mar
emlitett tul vastag 45 fok kozeli vonal.

Istvan

Ui: majdnem István-t irtam a'-val. Tenyleg kerdojel lesz minden
ekezetes betubol mostantol kezdve? a'=á e'=é i'=í o'=ó u'=ú stb...
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:  --
+ - Masodik szuletesnap (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

Ugy gondoltam, tartom magam tavalyi jo szokasomhoz, es megint ezen az
szuletesnap-atlagon koszontom a Coder-t :)

Ha valaki nem tudna, a sztori ugyanis az, hogy a Codernek, ugyanugy,
mint a milleniumnak, legalabb ket szulinapja van :) Mig viszont a
milleniumot csak ezer evente lehet 2 Szilveszterkor is megunnepelni,
addig a Codert evente: Jan 4. az egyik szuletesnap (Coder_HU lista),
a masik pedig Jan. 23. (HIX-Coder lista). A ketto atlaga is nevezetes
szam: Jan 13-an erte el az elofizetok szama a 30-at. Marmint 98-ban.
Vagyis ugy ertem, hogy 1998-ban, ha mar a Millenium emlitese okan Y2k
kompatibilis akarok lenni :)

Most nem tudom, hogy eppen hany olvasoja van a HIX-Coder-nek, de
mindannyiotoknak boldog masodik szulinapot kivanok!

Istvan
+ - 8 kiralyno a sakktablan (mind) VÁLASZ  Feladó: (cikkei)

Sziasztok!

Egy aprocska kerdesem volna.

Egy kedves baratomnak keszitek egy algoritmust, aminek az a
feladata, hogy egy sakktablan elhelyezzen 8 kiralynot ugy, hogy
egyik kiralyno se usse a masikat.

Gondolom sokatoknak remlik, hogy mirol van szo.

A kerdesem csak annyi lenne, hogy ha valaki tudja, hogy mennyi
lehetseges megoldasa van a feladatnak, az kerem irja meg nekem.

Ha valakinek megvan a forras, annak nagyon orulnek.

(Pascal vagy C)

Elore is koszonom:  Misi
+ - Re: pascal (mind) VÁLASZ  Feladó: (cikkei)

Lehet, hogy most szazan valaszolunk...

> Hogyan kell lekerdezni (dos unit) egy konyvtar (az alapkonyvtar, aminek
nem
> tudni a pontos helyet (innen inditottak a program.exe-t)

Nem kell dos unit, a paramstr(0) visszaadja a program utvonalat es nevet.

> Hogyan lehet megtudni hogy ebben a könyvtarban milyen -.exe file-ok
vannak?

Az elozoekben visszakapott stringbol vagd le a file nevet, es tedd oda
helyette, hogy '*.exe', ezt add meg a findfirst-nek (ehhez mar kell dos
unit). Findnext-tel keresheted a tobbit. A helpben van pelda.

Mikike

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS