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
|
|