| 1.  | 
		Re: WinWord header ? (mind) | 
	 21 sor     | 
	  (cikkei) | 
 
		| 2.  | 
		Re: int 21 ReadLN [DOS] (mind) | 
	 30 sor     | 
	  (cikkei) | 
 
		| 3.  | 
		Re: A Do:mo:lki algoritmus (mind) | 
	 131 sor     | 
	  (cikkei) | 
 
		| 4.  | 
		Bitsorozatba bitsorozat kereses. Eles pelda!!! (mind) | 
	 76 sor     | 
	  (cikkei) | 
 
		| 5.  | 
		Re: pedig fejlesztek rajta (#111) (mind) | 
	 23 sor     | 
	  (cikkei) | 
 
		| 6.  | 
		Windows hook (mind) | 
	 35 sor     | 
	  (cikkei) | 
 
		| 7.  | 
		Re: [DOS] int 21 ReadLN (mind) | 
	 65 sor     | 
	  (cikkei) | 
 
		| 8.  | 
		LZW szabadalom (mind) | 
	 12 sor     | 
	  (cikkei) | 
 
		| 9.  | 
		Mindenfele (mind) | 
	 57 sor     | 
	  (cikkei) | 
 
		| 10.  | 
		re:[DOS] int 21 ReadLN (mind) | 
	 22 sor     | 
	  (cikkei) | 
 
  |  
		| + -  | Re: WinWord header ? (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
Hi!
On Tue, 19 May 1998   wrote:
> WinWord documentumrol szeretnem megtudni, hogy Documentumkent
> vagy Sablonkent lett-e elmentve, anelkul hogy a WinWord rendelkezesemre
> allna az adott gepen.
A DOC-on belul a WordDocument objektum 0xa offsetjen levo byte 0. bitje ha
0 akkor document (doc), ha 1 akkor sablon (dot). A WordDocument objektum
helyenek korrekt meghatarozasa nem egyszeru dolog, de altalaban (en meg
nem talakoztam ellenpeldaval) a fejlec utan van rogton, a fejlec 0x200
hosszu (elmeletileg ez is valtozhat) tehat a vizsgalando byte a file
kezdetetol szamitva a 0x20a offseten van.
> Ugy tudom minden Word verzionak mas a header-e. Tehat elso lepesben a
> verzio szamot kell megtudni belole, aztan johet a megfelelo helyen a jelzo
> bit keresese.
Ha jol tudom, akkor ez ugyanott van minden verzioban (word6, word'97
biztos).
Szilard
  | 
	 
	
		| + -  | Re: int 21 ReadLN [DOS] (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
On 19 May 98 at 15:38,    > wrote:
>     mov dx,offset ide
>     mov cx,8       <- max ennyi karakterk olvas be
>     xor bx,bx       <- billentyuzetrol olvas
>     mov ah,3fh
>     int 21h
> A hiba: ha bekeresnel tobb, mint 8 karakter irok be,
> akkor a kovetkezo meghivasnal egybol kilep s visszaadja
> az elozoleg beirt felesleget.
Ez egyaltalan nem hiba, igy kell mukodnie. A standard input az egy
file-nak tekintendo dolog. Ezt a unix-tol irigyelte el az, aki a
handle-s int21 fuggvenyeket kitalalta (talan maga Bill Gates?). Az
egy kulon bonusz (termeszetesen unixokon is), hogy ha az stdin eppen
a billentyuzet, nem pedig egy diszk file vagy pipe vagy eszkoz,
akkor az olvasas befejezodik (visszater) az <Enter> lenyomasakor,
akkor is, ha nem volt meg a kert szamu betu. Ha viszont a
programodat standard input atiranyitassal futtatod, akkor a fenti
rutin gyonyoruen visszater mindig 8 betuvel, ha eppen kozepre esik a
CrLf (13,10), akkor is. (Unixokon is hasonlokeppen, csak ott persze
CrLf helyett csak Lf van.)
Tehat ha readln-t akarsz csinalni, azt ennel kicsit bonyolultabbra
kell irnod (pl. pufferelni kell), foleg, ha standard input
atiranyitassal is akarod, hogy jol mukodjon a programod.
István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:   --
  | 
	 
	
		| + -  | Re: A Do:mo:lki algoritmus (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
No akkor az algoritmus masodik fele:
Egyetlen uj keresovektor hozzaadasaval tudunk olyan feltetelt is
nezni, ami a pontos illeszteshez kepest elvisel egyetlen hibat. Ez a
hiba lehet szubsztitucio (betu helyett valami mas), inzertalas (egy
betuvel tobb van valahol a stringben) vagy torles (egy betu hianyzik
valahonnan).
Az elv az, hogy a pontos vektor mindegyik betunel atorokitodik az
1hibas vektorba megfelelo hibaszituaciok feltetelezesevel, utana
viszont mar pontosan kell folytatodnia, hiszen csak 1 hibat engedtunk
meg.
A pontosabb reszletezes a rutin kommentjeibol olvashato ki, remelem,
ertheto lesz minden, nem irom le itt meg egyszer. A rutin rovidebb,
mint a hozzairt komment :))
A rutinhoz ugyanaz a BuildCVTable tartozik, amit tegnap kozoltem.
; Shift-AND algoritmus (Udi Manber & Sun Wu) Byte 1992 nov.
; One Substitution or Insertion or Deletion
FuzzySearch proc far
; DS:SI= szoveg, amiben keresni kell
;    BX= szoveg hossza
; ES:DI= CVTable                        (BuildCVTable =in=out)
;    CX= keresendo string hossza 1..32  (BuildCVTable =in=out)
;
; ki:   CY=nc, ha talalt. Z=nz, ha pontosat, =z, ha 1hibasat talalt
;
        xor     edx,edx
        stc
        rcr     edx,cl          ; leallunk ilyen hossz utan
;; MSJ szerint:
;;;;;;; mov     ebp,80000000h   ; 1 hibaval egyezo sub-stringek
;;;;;;; mov     ecx,80000000h   ; pontosan egyezo sub-string(ek)
;; szerintem:
        xor     ebp,ebp         ; 1 hibaval egyezo sub-stringek
        xor     ecx,ecx         ; pontosan egyezo sub-string(ek)
        mov     ax,bx
        test    ax,ax
        jz      fzzV
fzzS:
        xor     bh,bh
        mov     bl,[si]
        inc     si
        shl     bx,2            ; pointer CVT-be: ilyen poziciokban
                                ; allhat ez a betu
; pontos illesztes ugyanugy alakul, mint elobb:
;       NEWecx =
; elozo pontos sub-stringek novekszenek tovabb, ha lehet:
;               (ecx >> 1) and cv
; valamint kezdodhet egy 1 hosszusagu sub-string, ha lehet:
;            or (80000000 and cv)
;
; nem pontos illesztes keresovektora:
;       NEWebp =
; OROKLODES
; - elozo 1hibas sub-stringek hosszabbodnak, ha a folytatas pontos:
;               (ebp >> 1) and cv
; SUBSZTITUCIO
; - vagy most valik 1hibassa valami, aminek az eleje pontos volt,
;   most pedig subst:
;            or (ecx >> 1) "and 111111.."
; - es meg kezdodhet egy 1 hosszusagu 1hibas sub-string, most meg
;   teljes hosszaban subst:
;            or 80000000
; INZERTALAS
; - vagy most valik 1hibassa valami, aminek az eleje pontos volt,
;   most insert:
;            or ecx
; TORLES
; - vagy aminek az eleje pontos volt, most is pontos, utana pedig
;   delete:
;            or (NEWecx >> 1)
;
;                             p=abcd      8421                   8421
;                                         abcd                   abcd
;                       insertion:     a  1        deletion:  a  1
;                                      b   1                  b   11
;                                      c    1              -- d     1
;                                  ++ I     1                 e
;                                      d     1
;                                      e
;
        shr     ebp,1           ; nem-pontos keresovektor oroklodes
        and     ebp,es:[di+bx]  ; folytatodott a match?
        or      ebp,ecx         ; insert?
        stc     ; 80000000 lesz ; itt is kezdodhet egy pontos match?
        rcr     ecx,1           ; pontos keresovektor update
        or      ebp,ecx         ; ha most rossz is, eddig jo volt
        and     ecx,es:[di+bx]  ; ez a betu lehet-e ezeken a helyeken
                ; =NEWecx       ; (vagyis meddig jo a pontos match?)
        mov     ebx,ecx
        shr     ebx,1
        or      ebp,ebx         ; delete?
        test    ebp,edx
        jnz     fzzFound        ; teljes hosszusagban jo volt
                                ;       (max. 1 hibaval)!
        dec     ax
        jnz     fzzS
fzzV:
        stc
        ret
fzzFound:
        test    ecx,edx         ; nz: pontos illesztes van
        clc                     ; z: pontatlan (1hibas) illesztes van
        ret
FuzzySearch endp
Termeszetesen itt is megoldhatoak csupan a CV tabla modositasaval
olyan dolgok, hogy egy adott helyen nem csak egy betu, hanem mondjuk
egy betuintervallum allhat. Ami ennek a 'fuzzy'-saga, az az, hogy a
tevesztes stb. viszont elore meg nem hatarozott helyen lehet, es
maximum egyszer csupan.
Tovabbi keresovektor hozzaadasaval hasonlokeppen megoldhato az is,
hogy 2 kulonbseget is elviseljen a kereses, stb.
István
--  Istvan Marosi  --  http://www.sch.bme.hu/~marosi  --
--  Recosoft Ltd.  --  mailto:   --
 | 
	 
	
		| + -  | Bitsorozatba bitsorozat kereses. Eles pelda!!! (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
Hi Coders!
> > A problema: Nem ismerem a keresendo bitsorozatot!!!
> > Tehat a legtobb ismetlodo bitsorozat kell megtalalnia es
> > le kell fedje az teljes (bit)intervallumot.
>
> [ Mit ertesz ezen, hogy lefedni a teljes intervallumot?]
> >Tehat a legtobb ismetlodo bitsorozat kell megtalalnia es
>                  ********************
> >le kell fedje az teljes (bit)intervallumot.
> Ezt (*)  valahogy definialnod kellene, nekem nem sikerult semmi
> ertelmeset kitalalni :)
> Bit alapu tomoritesen torod a fejed ?
Nem egeszen. :)))
Ime egy eles bitsorozat (termeszetesen az eredeti nincs tordelve):
Arra is kivancsi lennek, hogyan lehet olyan biteket keresni
amelyek EGYENLO tavolsagra helyezkednek el.
001001001101101011001011001001101011111101001101101101011011011
001011001111001111001111101101101101011001001101111101001011011
111001011101011111101001101011101101011111111101011111001011001
101101011111011111101101001011111011011011011001001101101111111
001011101101111011101001111001111001111111111011001101011111011
111001101101011011011001011111101101011011001111011101001111101
111101101101101011111101011011101011111111001001001111111111101
101001101111111011011011011101101101111011011001111101011111001
101101011111101111101101011111101101111001101101001111001111001
111001101111001011001011111111101101111111001001011111001111011
001111011111011011001101101001111111011001111101001111011011101
111001001111111111101101111101111111111001011111011101101111101
011011011111001111011111111101111101111011111011111101001111001
011001111101011111111111011011101011111011111011101111001011111
001101111111001011001101111011111001011101011101101101101011001
101101001101111011011011111011111001011101011011001111111111101
101011001101101111101101001111101111111111011011111101101011101
011111001111011011011111111111111111011111011001111111001111001
101111101111101011111011111101111101011011111101001111111111011
001101101101101111101111011001101011111111001011011101011011111
001101101111011111001101011111101101111101111111111101101011111
101111011101111011001001111111111111011111111001001101101111001
111101001111111011101001111111111111011011011101011111001011011
111111001101101111111111001101111001011101111101111111011011001
001101111111011011111011011001111001111011001101011101001111101
101101111111101011111101001111101101011011111111011111101111101
011001101101111111011111101001101111011111101011101101001111011
001011111111111111011101111101101001111011011101011111011011111
111101111111011011111011001001111001111101011111001111001011101
111001101101101111001011101011111111111001001101111111111111111
101111111101101011011101011101101011111101111111001101011011011
001101111111101011111101111011101011011111101101001101011011111
011101101101111111011111101001111111011011111011011101111011101
111111111111101111101001011011101011111101001111111111101111001
111111001101111111001111011101111011111101001001101111011011101
011101011111011111111101011111111001111011101001001101111011011
101101001111101111001101011101111001011001111011111101111011101
001111011111011111111101101011111111011111101011101101111111011
111001011111001011011011011111101101111111101011011111011111101
011101011101011111111011101001111111111101111101111111001111011
111111011101011111101011111011111101011101011111111111011011011
101111111101011011101011111101101001111111001111101111011111011
111101111101101111011101001011111101011101001101101101101011011
011111111101011011001111111011111101111011111001101101011111001
111011101111101111011101011101101011011011101101001111111111111
011111011111111111101101011001101111011101011111111101101011101
111101111111011011111001001011111011111111001111111101101111011
011011011111101011111111011011101111111101111101011111101011011
011011111101111011101111101111111111111011001111111111011111001
001101001101111111011001101101101111011101111011111101111111101
101001111101111111111101001011111111111011111111001111101111111
101111011111001111101011001001101111011101101111001111111111111
udv: XiX
  | 
	 
	
		| + -  | Re: pedig fejlesztek rajta (#111) (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
> Felado :   [United States]
> a windows NT-rol irtak tegnap:
> > gyonyoruen, stabilan megy, pedig fejlesztek rajta.
> es a kerdes: mit lehetne tenni?
Ha szigoruan a tapasztalatoknal maradunk: akar tobb honapig is mukodik
az NT ugy, hogy kozben millioszor fordit az ember, aztan mondjuk valahol
page fault-ot sikerul osszehoznia elrontott mutatokkal, egyebekkel, vagy
akar a GDI-ben hibazik valamivel - tenyleg eleg stabil a (VC5) debug -
szimpla, "user mode" programokkal nehez kiakasztani a rendszert.
Otletek, mivel is lehet megbenitani az NT-t:
- meg kell emelni egy taszk prioritasat, ami folyamatosan dolgozik, pl.
  fut benne egy ciklus, ami rajzol a kepernyore, vagy ilyesmi
- olyan CPL-t (Control Panel Applet) irni, ami kiakad - ez az Explorer
  ciklikus lefagyasat es automatikus ujraindulasat jelenti. :-)  Azert
  ki lehet szallni belole...
Mas most nem is jut eszembe.
--
Tibor
  | 
	 
	
		| + -  | Windows hook (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
Sziasztok!
Delphi 3 es win95 alatt programozgatok.
Szertnem kiprobalni a windows hook-ot. Irtam egy apro
DLL-t, amiben van egy egyszeru hookproc:
function HookProc( code:Integer; wparam:WPARAM; lparam:LPARAM ):
LRESULT stdcall; export;
;
Ha ez igy van, akkor latszolag minden rendben van, csak igy nem
csinal semmit, es nem ez a celom. Gondoltam, hogy az else agban
egy tombbe irnek dolgokat, amire a DLL-ben egy globalis pointer
mutat, es ennek egy foprogramban levo tomb cimet atadom a DLL
egy masik eljarasaban. Ekkor kezdodnek a gondok.
Ha a SetWindowsHookEx eljarasban WH_JOURNALRECORD
parametert adok, akkor latszolag minden rendben van, de ekkor
a HookProc csak a mouse es a keyboard eventeket kapja meg,
nekem viszont a tobbi is kellene ( WM_INITDIALOG, WM_COMMAND
stb ). De ha WH_ akarmi mas parameterrel hivom meg, akkor
az elso egerklick-nel jobbik esetben csak a programom hasal el,
rosszabbik esetben a kernel32 is, es total fagyas lesz belole.
Ha tomb helyett egy DLL-ben globalis file-t hasznalok, akkor is
hasal.
Mit rontok el?
Elore is koszi.
Udv.Csaboca.
  | 
	 
	
		| + -  | Re: [DOS] int 21 ReadLN (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
>    mov dx,offset ide
>    mov cx,8          <- max ennyi karakterk olvas be
>    xor bx,bx         <- billentyuzetrol olvas
>    mov ah,3fh
>    int 21h
>A hiba: ha bekeresnel tobb, mint 8 karakter irok be,
>akkor a kovetkezo meghivasnal egybol kilep s visszaadja
>az elozoleg beirt felesleget.
    Igen, itt te azt kérted tôle, hogy egyszeri hívásra
    csak 8 karaktert adjon vissza abból amit te beírtál
    neki összesen és így is történt...  :)
Ha azt szeretnéd, hogy egy hívással beolvashassad az
összes begépelt karakteredet, akkor én a 3F függvény
helyett inkább a 0A függvényt javasolnám neked. (Én a
3F függvényt fôleg csak file olvasásra szoktam használni.)
A 0A függvény MAXIMUM CSAK 255 KARAKTERT TUD EGYSZERRE BEOLVASNI;
megvárja míg meg nem nyomják az ENTER billentyüt és csak
utána tér vissza. A 3F függvény megengedi, hogy akár 255
byte hosszú stringet beírj, még akkor is ha csak nyolcat
kértél; de ha ennek a függvénynek pl. megadod, hogy csak
40 karaktert szeretnél beolvasni, akkor nem fogsz tuni
hosszabb stringet beírni, hanem csak 40 karakterest vagy
rövidebbet.
Használata:
    AH    <= 0A
    DS:DX <= Buffer pointer
A <Buffer pointer> elsô byte-ja az azt mondja meg a függvénynek, hogy
mennyi karaktert kell beolvasni maximum. Amikor a függvény visszatér,
akkor a beolvasott szöveg a DS:DX-tôl számolt második byte az azt
mondja meg, hogy összesen milyen hosszú string-et sikerűlt beolvasni.
Tehát ha ki akarod olvasni a Buffer-bôl a string-et, akkor a
DS:DX-tôl számított harmadik karaktertôl kezdve kezdjed olvasni az
adatokat.
Példa:
    mov     di,offset ide   ; Most a di-ben van a buffer címe.
    mov     [di],10         ; Maximum ennyi karakterk akarok
                            ; beolvasni.
    mov     dx,di           ; A Buffer címnek a dx-ben kell lennie.
    mov     ah,0ah
    int     21h
                            ; Kész!
    mov     ch,[di]         ; A ch tartalmazza azt, hogy mennyi
                            ; karaktert akartam MAXIMUM beolvastatni.
    mov     cl,[di+1]       ; A cl tartalmazza azt, hogy mégis
                            ; mennyi karaktert írtam be.
    add     di,2            ; Most a di a beolvasott szöveg elejére
                            ; mutat.
God Bless You! * Good Bye!
> -----------------------------------------------
Zsolt N. P. from Dallas, TEXAS
mailto:  
_____________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com
Or call Juno at (800) 654-JUNO [654-5866]
 | 
	 
	
		| + -  | LZW szabadalom (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
>Lehet, hogy a Lemper-Ziv-Welch (LZW) algoritmusbol kellene
>kiindulnod, bar szabadalmaztatva van, ugyhogy csak penzert
>hasznalhato.
Egy pontositas. Meg kell vasarolni az algoritmus hasznalati jogat
ha a program amibe beepitik penzert kerul forgalomba.
Tehat pl freeware vagy GNU-GP licencu programokba szabadon beepitheto.
Mindenkepp, a copyright-t tulajdonost fel kell az algoritmus mellett
tuntetni.
szin.
  | 
	 
	
		| + -  | Mindenfele (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
Hali !
Marosi Istvan irta:
> Lehet, hogy a Lemper-Ziv-Welch (LZW) algoritmusbol kellene
> kiindulnod, bar szabadalmaztatva van, ugyhogy csak penzert
> hasznalhato. Nem pont ezt csinalja (eredendoen tomoritesre talaltak
[...]
> Leirnam, hogy hogyan mukodik, de akkor a masik cikkel egyutt mar tuti
> tullepem a mai sorlimitet :(
Erre kivancsi lennek ! Egyszer megvolt nekem ez a leiras, de elszallt
egy cache buffer ki-nem-iras miatt keletkezett FAT hiba miatt. Viszont
kifejezetten erdekes volt, es nagyon szemleletes.
Nem is azert erdekel mert le akarnam programozni, de egy nagyon
"elegans" algoritmus !
----------
'Gabry' Gaabor irta :
> ekkor a visszadott ertek: 8 byte = "HAJRA LO"
> ezutan megint meghivom, nem var semmire,
> hibat nem jelezve kilep, s visszadja:
> 4 byte = "KI"#13#10
> Nem ertem!!!! Segitseg!!!!
Igazan csak "kohog a bolha" szinten lenne apro otletem, hogy merre
nezelodj,
de utolso kodos emlekeim szerint a bill.puffer eppen nyolc byte hosszu
alapertelmezes szerint. En arra gondolnek, hogy a hibad valahol ezzel
fugg ossze.
Bocs hogy beleszoltam, ennyire futotta tolem. :-(
---------
BeGa  irta:
> Ugy tudom minden Word verzionak mas a header-e. Tehat elso lepesben a
> verzio szamot kell megtudni belole, aztan johet a megfelelo helyen a jelzo
> bit keresese.
Amennyire tudom, a W6 es W95 ugyanazt a W6 formatumu DOC filet
hasznalja, persze a verzio azert jelezve van. Ha megvan a HIX CD
kerestess benne a gurukban Word formatumra, egyszer valaki adott egy
linket egy olyan site-ra, ahol egy _viszonylag_ jo formatum leiras van.
(a pontosat ugyanis nem adja ki a M$)
-------------
A MODERATOROK / LISTA gazda figylemebe !
Valami nem stimmel a coder lista sortores hosszaval !
A level vegen a szabvanyos osszefoglalo keretenek jobbszele a baloldalra
van torve. (hard CR-rel!) kb 2 char-ral szelesebbre kellen venni !
Vagy lehet hogy ez csak nalam jelenik meg igy ?
(Nem hiszem mert meg boven lenne hely az ablakban, illetve ASCII-ban is
igynez ki.)
A GURU vegen levo ugyanilyen osszefoglalo jol jelenik meg.
Csiszar  L.
  | 
	 
	
		| + -  | re:[DOS] int 21 ReadLN (mind) | 
		VÁLASZ  | 
		Feladó:   (cikkei)
		 |  
		
>Felado :   [Hungary]
>  A kovi rutin egy readln lenne, csakhogy nem ertem :(
...
>    xor bx,bx         <- billentyuzetrol olvas
>    mov ah,3fh
>    int 21h
>A hiba: ha bekeresnel tobb, mint 8 karakter irok be,
>akkor a kovetkezo meghivasnal egybol kilep s visszaadja
>az elozoleg beirt felesleget.
...
>Nem ertem!!!! Segitseg!!!!
Mit nem lehet ezen erteni ?
A 3f funkcio file olvasas.
Marpedig egy szekvencialis olvasastol az ember igenis elvarja, hogy ne csak
az elso n byteot adja vissza tobbszori meghivaskor, hanem szep sorban az
egesz file-t, es utana jelezze, ha mar nincs mit visszaadni.
Ha 0-t adsz meg file azonositonak, akkor egyszeruen stdin-rol olvas, mas
kulonbseg nincs.
Tanacs: Vagy tobbszori olvasassal uritsd ki a buffert miutan megkaptad a
kivant infot, esetleg adj hibauzenetet, ha tobbet kapsz mint akarsz.
A'kos
  | 
	 
	 
 |