clipper.1nbatocanin,
odgovor na [9.1014]
> Na primer, ladno pravljenje POP-UP menija
Objasni malo detaljnije. Sa dBase IV sam radio cirka 10 min. pa mi
ovo ni izbliza ne dočarava noseće značenje ;)
clipper.2nbatocanin,
odgovor na [9.1009]
> "Lopov" ne mora ništa da menja u programu - samo promeni
> ime firme i proda ga upola cene "izvadivši" tako štetu što
> je platio program. Ne bi bilo prvi put.
Ja (možda naivno) još uvek ne mogu da verujem da postoje takvi ljudi.
Ja se, čak i da hoću, nikad ne bi usudio tako nešto da uradim: šta
ako korisnik zatraži neku značajniju izmenu? Zna li neko konkretan slučaj
ovakve krađe?
clipper.3nbatocanin,
odgovor na [9.1016]
> Da li se na 5.2 objekti mogu i definisati?
Na žalost, ne.
> Kao sto rekoh, ne mogu bas da se pohvalim preteranim
> poznavanjem 5.0 objekata a citajuci u reference-u nije mi
> sasvim jasno sta radi browse:configure() metod.
Rekonfiguriše TB objekat iz početka: ponovo čita sve zadate interne
promenljive, proračunava koordinate i sl. Ovo treba koristiti kad se
menja neka interna promenljiva TB objekta, a želimo da se ta izmena
vidi.
clipper.4nbatocanin,
odgovor na [9.1018]
> Sta je tu cemo slicno?
> Ovo je rekurzivno definisana struktura, a tamo je
> rekurzivna ... macka (TBcolumn) u dzaku (TBrowse)!
> ;)
Sad sam malo detaljnije gledao onaj primer i u pravu si: tu nešto
nije kako treba. Očigledno si udario u neko interno ograničenje
Clipper objekata. Pogledaću za koji dan malo detaljnije.
Inače, što se tiče tvog problema, da li ovo rešava problem: tebi ne
treba da preneseš funkciji ceo objekt, već samo redni broj kolone,
tj. ovako nešto:
TB:addColumn(TBcolumnNew("", {|| Udf(1) })
TB:addColumn(TBcolumnNew("", {|| Udf(2) })
TB:addColumn(TBcolumnNew("", {|| Udf(3) })
Zašto ovako ne definišeš kolone?
clipper.5nbatocanin,
odgovor na [9.1013]
>> Browse ima toliko opcija da se razmišljam da napišem
>> generator za tih nekoliko linija, da mi bar prvu
>> verziju napiše sintaksno tačnu i štogod ulepšanu. žisto
>> me zanima šta su posebne cake u DbEdit(), tek da vidim
>> da li mi nešto od toga nedostaje.
Kad smo već kod te teme, da li FoxBrowse može nešto od sledećeg:
- Da se zada frekvencija skaniranja izvornih podataka: na primer,
želiš da na mreži interaktivno prikazuješ/menjaš spisak aktivnih
procesa.
- Da se menjaju parametri prikaza za vreme prikaza (korisnik briše
ili dodaje kolone i sl.)
- Da se koristi za pregled drugih stvari (nizovi, ASCII datoteke)
I interesuje me koja je njegova najmoćnija opcija? Naravno, po
subjektivnoj proceni.
> Meni izgleda nije jasno o čemu vi ovde... :))
> Zar postoji nešto što DbEdit() može, a ne može da se uradi
> u TBrowse() ??
Nema šansone, jerbo je DBEdit obična Clipper procedura koja koristi
TBrowse objekte.
clipper.6dejanr,
>> > "Lopov" ne mora ništa da menja u programu - samo promeni
>> > ime firme i proda ga upola cene "izvadivši" tako štetu što
>> > je platio program. Ne bi bilo prvi put.
>>
>> Ja (možda naivno) još uvek ne mogu da verujem da postoje takvi ljudi.
>> Ja se, čak i da hoću, nikad ne bi usudio tako nešto da uradim: šta
>> ako korisnik zatraži neku značajniju izmenu?
Pa, to je unapred rešeno. Pera i Laza se dogovore i od mene naruče program,
plate svaki po pola a onda jedan izmeni ime firme i koristi program piratski.
Kad bilo kome od njih treba izmena, Pera (koji je jedini samnom imao veze)
traži tu izmenu, posle opet preprave program za Lazu i tako...
>> Zna li neko konkretan slučaj ovakve krađe?
Ćuj, slućaj... ja bre imam čitavu metodologiju rada za takve mušterije
(istina, ne za te koji koriste declipper, takve još, fala Bogu, nisam imao,
nego za one što iz Nortona menjaju :). Kada posumnjam da će neko da
"deli troškove" za program sa nekim (ili nekolicinom) drugih, a to se
prilično lako uoči, do sada ni jednom nisam pogrešio, ja mu dam program
u kome se ime firme menja prosto ko pasulj. Bode oči da se promeni :)
Međutim, program je napravljen tako da posle nekog datuma počne malo da
brlja. Nikakvu štetu ne pravi, nego recimo ne radi štampanje ili tako
nešto što čini program totalno neupotrebljivim. Mušterija se javi, kaže
pojavio se problem, ja se lepo izvinim i dam mu ispravljenu verziju. Samo,
u toj ispravljenoj verziji ime firme nije "očigledno" nego je tako
zakukuljeno da ga je jako teško (never say never ;) izmeniti. Njih dvojica
(trojica...) se onda par dana pate da ga izmene, ali ne uspeju. No, onaj
drugi se u međuvremenu "navukao" na korišćenje računara, ne može više
bez njega i bez tog programa koji mu je lepo radio posao, a obaška što je
već dao pare za kompjuter, štampač... Ne ostaje mu ništa drugo nego da
pokorno dođe kod mene i kupi program :) Mislim da sam na taj scenario do
sada prodao 7-8 instalacija.
Lepo su to smislili oni što prodaju drogu, šteta ne primeniti ;>
clipper.7d.petrovic,
Ă>> Zar postoji nešto što DbEdit() može, a ne može da se uradi
Ă>> u TBrowse() ??
Ă> Nema šansone, jerbo je DBEdit obična Clipper procedura koja
Ă> koristi TBrowse objekte.
Morao sam da pitam ;). Toliko poruka koje čitam i češkam se pa se
pitam zar je moguće da niko od njih ne poznaje dovoljno Tbrowse :))
clipper.8rpausic,
CONF JOIN PC.PROG.2
CONF REPLY 9.1010
> Kućni programer? Kolega, saučešće. Bićeš kriv za sve, i što zajebeš
> ti i što zajebu oni, a onda će te hvaliti na sva usta za nešto što
> si uradio malim prstom za pet minuta, pa će te posle psovati što
> trodnevni posao nije bio gotov za minus pola dana...
Sve je tačno, čak i gore ;-<<<<. Sa biserima ne bih opterećivao
ovu conf. Imaš li lična iskustva ili si samo pretpostavljao?
P.S. Hvala na saučešću!
clipper.9rpausic,
CONF JOIN PC.PROG.2
CONF REPLY 9.1020
> Zato se pridruzujem tvom 'apelu' i kandidujem za jedno od mesta u
> eventualnoj grupi ( izuzev ako ne diskriminisete prebege u
> protivnicki FoxPro tabor :)
Temu sam pokrenuo u clipper-u delom slučajno, delom namerno. Prvo
tu sam se zatekao kada sam se odlučio na taj korak, a drugo
mislim da još uvek najveći broj programera sa sličnim
problemima radi u Clipper-u. U poverenju, i ja se pripremam u
prebege, ali verovatno u PDX. Negde u budućnosti ...
Inače, nikada nisam pripadao grupi ljudi koji bi se posvađali oko
odnosa PC/Amiga, Clipper/FoxPro/PDX/??? i slično, pa mi nisi nikako
u protivničkom taboru. Tamo su mi knjigovođe ;->
Znači nije važan jezik, već poslovna primena!
clipper.10cnenad,
Prvo, pitanje za moderatora. Zasto tema o clipperu sad ima broj 11
kad je recimo u provj conf bila 5 pa u drugoj 9 ? Sto nije ostao isti
broj teme u svim conf ?
Drugo, potrebna mi je hitna pomoc, ako mozete da izbajate sta se
dogodilo sa programom koji nije uopste menjan ali je poceo da neprijatno
zaglavljuje.
Recimo, radim unos preko get u neka polja i onda treba sa replace da
izvrsi zamenu u poljima baze ÚÚ-ĺa Úza to vreme je ispisano na
ekranu SACEKAJTE i kad se zavrsi program nastavlja dalje da radi a evo
vec nekoliko puta se zaglavljuje.
Ali ne zaglavljuje se samo na tom mestu nego i na drugim.
Medjutim ta druga mesta u programima su isto predvidjena za unos nekih
podataka preko GET-a.
Da nema neke veze mozda se enviro.parametrom set clipper=f:40 koju sam
obrisao iz autoexec-a ?
Pomagajte !
clipper.11d.petrovic,
Ă> Da nema neke veze mozda se enviro.parametrom set clipper=f:40
Ă> koju sam
To je broj fajlova koje kliper može istovremeno da otvori i verovatno
je tu problem. I nije "f:40" nego "f40". Osim toga, ako je proglam
linkovan rtlink-om i ima dinamičke overleje ne radi kako treba sa EMS
memorijom. Provari to pa kukaj dalje. I kako se zaglavi? Ako je
doserror 4 onda je sigurno to: "set clipper=f40".
clipper.12goranr,
Pa, recimo, dbase IV ima standardno ugradjene opcije ÜÂza kreiranje POPUP
menija, a nema zezanja ko u Clipperu, za pisanje raznih levih funkcija. Ima
MENU CREATE (valjda je tako, i ja sam s dbaseom radio oko 30 min)(ŔkĘ, i sl.
funkcije.
clipper.13ialeksic,
>>>Inace, sto se tice tvog problema, da li ovo resava problem: tebi ne
>>>treba da preneses funkciji ceo objekt, vec samo redni broj kolone,...
Kao sto rekoh negde ranije u ovom lancu (ako mogu samog sebe da
citiram ;)), pitanje je bilo PRINCIPJELNE prirode. I dalje sam ubedjen
da TBrowse objekat nepotrebno referencira TBcolumn objekat da bi
eksportovao varijablu ColPos, jer da bi to uradio mora da zna kome
TBcolumn objekatu (a to znaci ColPos) zeli da pristupi.
To se izgleda ne desava samo sa colPos vec i sa rowPos (sto sam probao) a
mozda i za jos neke eksportovane entitete. Zbog toga se ne bih usudio
da kazem da je to BUG, pre bih rekao da je to dizajner upravo hteo da uradi
(ili nije mogao da izbegne ;) ).
Sto se tice ideje sa :
TB:addColumn(TBcolumnNew("", {|| Udf(1) })
TB:addColumn(TBcolumnNew("", {|| Udf(2) }) ...
to nije ono sto sam pocetno hteo. A hteo sam da UDF automatski (preko
^^^^^^^^^^
colpos, ili nekako drugacije, neznam kako) prepozna koji TBcolumn procesira.
Tvoje resenje prevazilazi problem, ali se onda mora voditi racuna o redosledu
definisanja TBcolumn objekata.
Ja sam na kraju digao ruke od ovoga tako sto koristim zasebne UDF-ove za
zasebne TBcolumn objekte.
clipper.14cnenad,
ŁŁŁ To je broj fajlova koje kliper moze istovremeno da otvori i
ŁŁŁ verovatno je tu problem. I nije "f:40" nego "f40". Osim toga,
ŁŁŁ ako je proglam linkovan rtlink-om i ima dinamicke overleje ne
ŁŁŁ radi kako treba sa EMS memorijom. Provari to pa kukaj dalje.
ŁŁŁ I kako se zaglavi? Ako je doserror 4 onda je sigurno to: "set
ŁŁŁ clipper=f40".
Namestio sam set clipper=f40, ali i dalje zaglavljuje.
Program jeste linkovan RTLINK-om ali bez ikakvih prekidaca.
clipper.15rpausic,
>## Da nema neke veze mozda se enviro.parametrom set clipper=f:40 koju
>## sam obrisao iz autoexec-a ?
>## Pomagajte !
Obavezno vrati tu promenljivu na vrednost kakva je bila. Koje su
ostale specifikacije problema? Moraš se setiti svih stvari koje
su se desile od vremena kada je program ispravno radio. Npr. da
li si menjao računar, kolike su bile ulazne vrenosti (red
veličine), eventualne poruke o greškama, itd. Svakim novim
detaljem se povećava mogućnost da ti ovako napamet pomognemo.
clipper.16rpausic,
>## Namestio sam set clipper=f40, ali i dalje zaglavljuje.
>##
>## Program jeste linkovan RTLINK-om ali bez ikakvih prekidaca.
Probaj sa SET CLIPPER=f:40 ili SET CLIPPER=//f:40.
Zašto bez ikakvih prekidača. Probaj više da se udubiš u
filozofiju Clipper-a 5.x i koristi prednosti koje ti on nudi. Ako
nemaš, nabavi knjigu Rika Spensa, Clipper 5 u izdanju Mikro
Knjige. Verovatno je skupa, ali vredi svaki dinar koji uložiš u
njega. Pregledao sam malo tvoje poruke i zaključio da si još
početnik i da ti programiranje nije uža struka.
Šta ti kaže dibager? Ako ništa ne pomogne, pošalji deo sorsa.
Možeš i na mail.
clipper.17ialeksic,
Da li neko zna sta u ovom uproscenom programcicu ne valja. Radi se o
postavljanju relacije na samu sebe. A uz to ide i dodavanje slogova :)
Evo ga:
FUNCTION TEST(BrojSlogova)
/*
Program treba da kreira olancanu strukturu gde je:
Tx: kljuc
Nxt: Sledeci
Prv: Prethodni
*/
LOCAL DBFname:="test" , ;
DBFalias:="testa" , ;
Prethodni
i:=0
IF !FILE(DBFname+"dbf")
aDbf := {}
AADD(aDbf, { "Tx", "N", 4, 0 })
AADD(aDbf, { "Nxt", "N", 4, 0 }) // Kreira .dbf ako ne postoji
AADD(aDbf, { "Prv", "N", 4, 0 })
DBCREATE( DBFname, aDbf)
ENDIF
USE (DBFname) ALIAS (DBFalias) NEW
IF !FILE(DBFname+"ntx")
INDEX ON STR(Tx,4) TO (DBFname) // Kreira .ntx ako ne postoji
ENDIF
SET INDEX TO (DBFname)
USE (DBFname) NEW
SET INDEX TO (DBFname)
SET RELATION TO STR(Prv,4) INTO (DBFalias)
ZAP
SET EXACT ON
(DBFname)->(DBAPPEND())
Prethodni:=(DBFname)->Tx:=++i // Pocetni slog
COMMIT
DO WHILE i++<VAL(BrojSlogova) // vrti!
(DBFname)->(DBAPPEND())
(DBFname)->Tx:=i
(DBFname)->Prv:=Prethodni
COMMIT // MISLIO SAM DA CE NEST OD
DBSKIP(0) // OVA DVA POMOCI AL' SLABA VAJDA
/*
PROGRAM NE RADI DOBRO JER SE OVO NIKAD NE DOGODI
JER JE (DBFalias) stalno na EOF */
(DBFalias)->Nxt:=(DBFname)->Tx
Prethodni:=(DBFname)->Tx
ENDDO
clipper.18cnenad,
ŁŁŁ nemas, nabavi knjigu Rika Spensa, Clipper 5 u izdanju Mikro
ŁŁŁ Knjige. Verovatno je skupa, ali vredi svaki dinar koji ulozis
ŁŁŁ u njega. Pregledao sam malo tvoje poruke i zakljucio da si
ŁŁŁ jos pocetnik i da ti programiranje nije uza struka.
Imam od Alempija Veljovica knjigu o 5.01 a za to trenutno nemam love
ali cim dodjem do nje odmah je kupujem.
Mozda u odnosu na tebe jesam pocetnik ali taj program je sljakao
nekih godinu dana i sad je poceo da zeza. Dobro sljakao je kad je
bio preveden sa S87 a zezanje je pocelo od kada sam presao na 5.01.
Izgleda da cu morati malo da pregledam i prepravim sors.
clipper.19cnenad,
ŁŁŁ li si menjao racunar, kolike su bile ulazne vrenosti (red
ŁŁŁ velicine), eventualne poruke o greskama, itd. Svakim novim
ŁŁŁ detaljem se povecava mogucnost da ti ovako napamet pomognemo.
Nisam menjao racunar, nema nikakvih poruka o greskama, samo se zaglavi
i ako drzim neki taster posle zaglavljivanja cuje se na zvucniku
pijuckanje.
evo dela sorsa na kome se najcesce zaglavljuje:
ovde idu promenljive
do while k="D" .or. k="d"
do while .t.
do RAM2
do z
do slobodno
set delimiters to " ."
set delimiters on
@5,2 say 'SIFRA ARTIKLA:'
@5,16 get sfr pict "99999999"
@5,27 say 'SIFRA MAGACINA:'
@5,41 get smg pict "999"
read
use art
locate for sif_ma=smg .and. sifra=sfr
if found()
do bg
@11,8 say "POKUSALI STE DA NIVELISTE ARTIKL KOJI JE VEC JEDNOM NIVELISAN !!!"
@13,19 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!"
inkey(10)
loop
endif
use artikli
locate for sif_ma=smg .and. sifra=sfr
if .not. found()
do bg
@10,2 say " POKUSALI STE DA NIVELISTE ARTIKL KOJI NISTE DEFINISALI ILI NE
POSTOJI U TOM"
@11,2 say "MAGACINU ILI SU UNETI PODACI POGRESNI ! UNESITE TACAN PODATAK ILI
NOVI ARTIKL"
@13,21 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!"
inkey(10)
close data
set color to
return
else
read
exit
endif
enddo
IZ="D"
do while .t.
do while .t.
do slobodno
naziv_robe=" "
@5,47 say "NAZIV: "+naziv_robe pict "xxxxxxxxxxxxxxxxxxxxxxxxx"
@5,75 say mera pict "XXX"
set delimiters on
@7,12 say lag_kol pict "9,999,999"
@7,70 say porez pict "999"
@9,70 say ukal_proce pict "999"
@7,4 say 'STANJE:' get LAG_kol pict "9,999,999"
@7,22 say 'STARA CENA BEZ P.:' get lag_cena pict "99,999,999,999"
set delimiters off
@7,63 say 'POREZ:' get porez pict "999"+' %'
set delimiters on
@9,4 say 'NOVA CENA BEZ P.:' get NCBP pict "999,999,999,999"
set delimiters off
@9,41 say 'UKALKULISANA RAZLIKA U CENI:' get UKAL_proce pict "999"+' %'
do w
@6,3 to 10,77
@6,2 to 6,78 double
@8,3 to 8,77
@6,24 say chr(209)
@7,24 say chr(179)
@8,24 say chr(193)
@8,40 say chr(194)
@9,40 say chr(179)
@10,40 say chr(193)
@6,62 say chr(209)
@7,62 say chr(179)
@8,62 say chr(193)
@8,3 say chr(195)
@8,77 say chr(180)
@6,3 say chr(209)
@6,77 say chr(209)
read
if LAG_kol>0 .and. lag_cena>0 .and. ncbp>0
exit
else
do z
@17,7 say "POLJA ZA UNOS MORAJU BITI SVA POPUNJENA BROJEVIMA VECIM OD NULE !!!"
do w
@19,20 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!"
inkey(7)
@17,3 clear to 17,78
@19,3 clear to 19,78
loop
endif
enddo
do z
do del
@17,23 say 'PODACI SU UNESENI DOBRO (D/N) ?' get IZ pict "X"
do while .t.
read
if IZ="D" .or. IZ="d" .or. IZ="N" .or. IZ="n"
exit
else
x="N"
iz=x
exit
endif
enddo
if IZ="D" .or. IZ="d"
@17,2 clear to 17,78
@20,1 clear to 24,79
do b
@1,1 to 24,79 double
@1,17 say chr(203)
@1,64 say chr(203)
@4,1 say chr(204)
@4,79 say chr(185)
@6,1 say chr(204)
@6,79 say chr(185)
exit
endif
if IZ="N" .or. IZ="n"
@17,2 clear to 17,78
do delmi2
set delimiters to " ."
loop
endif
enddo
do b
@10,44 to 24,44
@10,44 say chr(194)
@18,2 to 18,27
@20,2 to 20,27
do z
ovde idu racunanja za razne parametre
@11,3 say "PROCENAT NIVELISANJA: "
@11,30 say procniv pict "999,999.9999"+" %"
ispisi rezultata....
do z_
@22,11 say "S A C E K A J T E ! ! !"
use radna
append from artikli all for sifra=sfr .and. sif_ma=smg
replace lag_kol with lag_kol, lag_cena with lag_cena, proc_niv with procniv,
iznos_niv with z1, ncbporeza with ncbp, iznos_por with z2, ncsporeza with ncsp,
prer_stopa with prerstopa, razlika_sp with razlikasp, razlika_bp with razlikabp
replace revalor_sp with revalorsp, revalor_bp with revalorbp
replace ukpnnivcsp with ukpnivcensp, ukpnnivcbp with ukpnivcenbp, nov_stanje
with ukpnncsp
use art
append from radna
use radna
zap
use artikli
replace lag_cena with ncbp for sifra=sfr .and. sif_ma=smg
do while .t.
do z
@22,11 clear to 22,36
@22,11 say 'ZELITE PONOVO (D/N) ?' get k pict "X"
do g_
@22,31 say '?'
set color to
read
if k="D" .or. k="d" .or. k="N" .or. k="n"
exit
else
x="N"
k=x
exit
endif
enddo
if k="D" .or. k="d"
set intensity on
loop
else
endif
if k="n" .or. k="N"
close data
endif
do delmi2
exit
enddo
do ram
return
clipper.20cnenad,
ŁŁŁ Pa, recimo, dbase IV ima standardno ugradjene opcije ÜÂza
ŁŁŁ kreiranje POPUP menija, a nema zezanja ko u Clipperu, za
ŁŁŁ pisanje raznih levih funkcija. Ima MENU CREATE (valjda je
ŁŁŁ tako, i ja sam s dbaseom radio oko 30 min)(ŔkĘ, i sl.
To je mnogo lepse uradjeno nego u kliperu.
Ali smeta mi jedna druga stvar, sto recimo kad se vracas sa ESC
tasterom iz nekog podmenija i dodjes na glavni meni u DBASE IV
on registruje cak i ako si greskom pritisnuo ESC i prekida program
odnosno pojavljuje se njegov "DIJALOG PROZOR" gde pita standardno
'cancel' 'ignore' 'help'
Naredba za setovanje, SET ESCAPE OFF nije pomogla i dalje je mogao da
se program prekine sa pritiskom na ESC u bilo kom trenutku.
clipper.21cnenad,
Zaboravio sam da dopisem da se zaglavljuje kad izvrsi replace i
treba da se pojavi upitnik da li da se radi sledeci artikl ili ne
Inace on sa naredbom izvrsi zamene u bazi pa tek onda zaglavi.
clipper.22draganm,
*> u toj ispravljenoj verziji ime firme nije "ocigledno" nego je
*> tako zakukuljeno da ga je jako tesko (never say never ;)
*> izmeniti.
Ajde napravi bilo kakav program koji ima zakukuljen text
cisto da pokusam da ga 'razbijem'. :)
clipper.23d.petrovic,
Ă> Šta ti kaže dibager? Ako ništa ne pomogne, pošalji deo sorsa.
Ă> Možeš i na mail.
Ma reče čovek da je program već radio. Nije dignuta EMM memorija?
clipper.24rpausic,
> Nisam menjao racunar, nema nikakvih poruka o greskama, samo se
> zaglavi i ako drzim neki taster posle zaglavljivanja cuje se na
> zvucniku pijuckanje.
Pištanje iz zvučnika ti znači da je bafer tastature pun (u ovom
slučaju). Probao sam da ti lociram grešku, ali nisam uspeo. Ako
neko ima više iskustva u prebacivanju iz S87 u 5.01 neka ti
pomogne, mada mislim da nema dovoljno elemenata. Javio sam ti
mail-om par saveta.
clipper.25snemcev,
>> Da li neko zna sta u ovom uproscenom programcicu ne valja. Radi se o
>> postavljanju relacije na samu sebe. A uz to ide i dodavanje slogova
Kol'ko ja znam Clipper, SET RELATION znači da pri svakom pomeranju
pokazivača sloga treba izvršiti SEEK u oblasti koja je povezana sa
tekućom. Što postavljaš relaciju samu na sebe? Tada ti GO BOTTOM ode na
kraj datoteke, a pošto je to pomeranje pokazivača izaziva automatski
SEEK, pa pošto je i to pomeranje pokazivača... Jednom rečju - rekurzija.
clipper.26goranr,
Ne znam, kazem ti, ali ono sto sam video bilo je dosta
lepo uradjeno. Sad, to je bila verzija 1.0, a nisam video
ni 2.0, ni 2.0 kompajler, ali ako se mogu popraviti te stvari,
i kad bi mogao da se napise sopstveni error handler, to bi
bilo jaaaaaaaako dobro.
ÔOPAH
clipper.27nbatocanin,
> Ima MENU CREATE
Očekivao sam nešto više. Uostalom ovo sa nekoliko redova napraviš u
Clipper-u, maskiraš sa #translate i eto ti MENU CREATE u Clipper-u :)
clipper.28nbatocanin,
> Lepo su to smislili oni što prodaju drogu, šteta ne
> primeniti ;>
Uh, ubediste me da promenim mišljenje ;)
clipper.29nbatocanin,
> Drugo, potrebna mi je hitna pomoc, ako mozete da izbajate
> sta se dogodilo sa programom koji nije uopste menjan ali
> je poceo da neprijatno zaglavljuje.
Mora biti da je nešto u međuvremenu menjano: sjet se, sjet se...
> Recimo, radim unos preko get u neka polja i onda treba sa
> replace da izvrsi zamenu u poljima baze ÚÚ-ĺa Úza to vreme
> je ispisano na ekranu SACEKAJTE i kad se zavrsi program
> nastavlja dalje da radi a evo vec nekoliko puta se
> zaglavljuje. Ali ne zaglavljuje se samo na tom mestu nego
> i na drugim. Medjutim ta druga mesta u programima su isto
> predvidjena za unos nekih podataka preko GET-a.
Uh, odavde je teško reći: uzmeš bre dibager pa korak po korak i onda
lepo vidiš gde zaglavljuje.
> Da nema neke veze mozda se enviro.parametrom set
> clipper=f:40 koju sam obrisao iz autoexec-a ?
Mož' da bidne, al' ne mora da znači ;)
clipper.30nbatocanin,
> Je li tacno da postoji neka vrsta sintaksnog checkera za
> Clipper koji radi u editoru, i.e. svaki put kada se otkuca
> linija i CR, proverava sintaksu.
Mislim da ćeš teško naći nešto *baš* ovako. Najsličnije stvari ima
BRIEF u paketu dBRIEF, koji BRIEF prilagođava xBase programiranju.
Međutim, mene to nije nešto dojmilo. Doduše gledao sam neku staru
verziju, možda je neka nova bolja. Upravo radim sa programom dClip,
koji predstavlja neki interaktivni sistem za razvoj Clipper programa,
pa ću javiti kad budem imao neke utiske :)
clipper.31nbatocanin,
> BLINKER : 1115 : bliovlmgr(S8OVLMGR) : '__DOS_HOLD' :
> unresolved external
Imaš verziju Summer'87 sa kojom Blinker ne radi. Moraš naći noviju
ili preći na 5.01, što ti najtoplije savetujem.
clipper.32oldtimer,
Ljudi prosvetlite me malo. Clipper ne koristim profesionalno, imam 5.01a,
Blinker i gomilu biblioteka što je za moje hobističko bavljenje istim
više nego dovoljno, ali ipak.. Da li 5.2 donosi nešto novo i vredno osim
raznih formata indeksnih datoteka. Da, pročitao sam Računare 93, ali me
zanima mišljenje nekog ko je ovo probao u praksi.
B)Miša
clipper.33gari,
Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi
bas kako treba ili ja uporno ne vidim gresku:
Evo doslovno CELOG programa:
***********************************
LOCAL Infile, ctmp, i, aname:={}
Infile := fopen("proba.txt")
ctmp := space(3)
for i:=1 to 10
fread(infile,@ctmp,3)
aadd(aname,ctmp)
next
achoice(10,10,20,70,aname)
return
***********************************
File proba.txt (ASCII):
111222333444555666777888999000
Posle ovoga treba da pokaze sa funkcijom achoice:
111,222,333,444,555,666,777,888,999,000
medjutim uporno se prikazuje:
000,000,000,000,000,000,000,000,000,000
STA NIJE U REDU !?!?!?!?!?!?!?!?!?!?!?!?!?!?
p.s. Inace ovo ima veze sa programom za
vracanje arhive sa diskete on nbatocanin-a
pozdrav, Gari
clipper.34bulaja,
│Upravo radim sa programom dClip, koji predstavlja neki interaktivni
│sistem za razvoj Clipper programa, pa cu javiti kad budem imao neke
│utiske :)
└───
Javi, bas ce me interesovati tvoje misljenje posto sam ja dClip vrlo
brzo obrisao :) (ne zato sto je mnogo los, vec zauzima suvise mesta a
nisam mu video neku svrhu:).
clipper.35bulaja,
│Ljudi prosvetlite me malo. Clipper ne koristim profesionalno, imam 5.01a,
│Blinker i gomilu biblioteka sto je za moje hobisticko bavljenje istim
│vise nego dovoljno, ali ipak.. Da li 5.2 donosi nesto novo i vredno osim
│raznih formata indeksnih datoteka.
└───
Udarni novitet su RDD, ostalo su uglavnom male promene. Jedina nova
funkcija je ColorSelect() (aktiviranje odredjenog para iz SetColor(),
bilo bi korisnije da su stavili da funkcija samo vraca cColor a ne da
setuje) , ima nekoliko izmena u GET klasi, zgodan TBrowse metod
TBrowse:forceStable() i to je uglavnom sve.
Ja licno sam jos uvek na 5.01 iz jednog prostog razloga - sa Clipperom
5.2 ne rade biblioteke prevedene verzijom 5.01. Neko je ovde rekao da
definisanje prazne Clipper501 procedure resava problem, ali nije tako -
tako samo linker nece prijaviti undefined simbol, a program ce se
jednako zaglavljivati. Trebalo bi ovih dana da dovucemo iz USA neke
stvarcice koje omogucavaju koriscenje 5.01 biblioteka u 5.2. Ukoliko to
proradi Ok, onda bi vredelo bezbolno (da ne mora nista da se menja:)
preci na 5.2.
clipper.36goranr,
Pa, kazem ti, i ja sam slabo radio sa tim, medjutim,
mogu reci da se pomocu tog CREATE POPUP i SHOW POPUP
mogu praviti jako lepi meniji.
ÔOPAH
clipper.37nbatocanin,
> I dalje sam ubedjen da TBrowse objekat nepotrebno
> referencira TBcolumn objekat da bi eksportovao varijablu
> ColPos, jer da bi to uradio mora da zna kome TBcolumn
> objekatu (a to znaci ColPos) zeli da pristupi.
Slažem se.
> To se izgleda ne desava samo sa colPos vec i sa rowPos
> (sto sam probao) a mozda i za jos neke eksportovane
> entitete.
Za sve, u stvari. Bilo kakav pristup TB objektu rezultuje greškom.
clipper.38nbatocanin,
> append from artikli all for sifra=sfr .and. sif_ma=smg
> replace lag_kol with lag_kol, lag_cena with lag_cena,
> proc_niv with procniv, iznos_niv with z1, ncbporeza with
> ncbp, iznos_por with z2, ncsporeza with ncsp, prer_stopa
> with prerstopa, razlika_sp with razlikasp, razlika_bp with
> razlikabp replace revalor_sp with revalorsp, revalor_bp
> with revalorbp replace ukpnnivcsp with ukpnivcensp,
> ukpnnivcbp with ukpnivcenbp, nov_stanje with ukpnncsp
Daj malo bliže gde krahira, ko će na suvo analizirati ovoliki
listing.
clipper.39nbatocanin,
> Da li neko zna sta u ovom uproscenom programcicu ne valja.
> Radi se o postavljanju relacije na samu sebe. A uz to ide
> i dodavanje slogova :) Evo ga:
Nemoj otvarati istu datoteku u dve radne oblasti - to je veoma
rizičan potez. Povezana lista se može napraviti i na druge načine.
clipper.40d.petrovic,
Ă> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi
Ă> bas kako treba ili ja uporno ne vidim gresku:
Očigledno fread nije ono što je bila ;((
Ovo prevedeno sa CL 5.01 radi, 5.2 sam malo maltretirao, čisto
da proverim da nije do aadd() i nije. Pokazivač očigledno ne stoji
gde je bio :(. Zanimljivo je da NIJEDNA promenljiva tu više nije
sigurna :((((((((((((((((. Na kraju je primer šta se još dešava.
LOCAL Infile, ctmp, i, aname:=šć, c:=0
Infile := fopen("proba.txt")
*ctmp := space(3) && ovo izbrišeš
for i:=1 to 10
ctmp := space(3) && pa ga staviš ovde
fread(infile,čctmp,3)
aadd(aname,ctmp)
next
cls
achoice(10,10,20,70,aname)
return
========== drugi pimer ===================
LOCAL Infile, ctmp:=space(3), q:=space(3), w:=space(3), e:=space(3)
Infile := fopen("proba.txt")
fread(infile,čctmp,3)
q:=ctmp
fread(infile,čctmp,3)
w:=ctmp
fread(infile,čctmp,3)
e:=ctmp
cls
č 10, 10 say q
č 11, 10 say w
č 12, 10 say e
return
*luda funkcija pobrljavi SVE promenljive koje su iste dužine i koje
*su joj vidljive :(((
clipper.41d.petrovic,
Nije da volim sam sebi da repliciram, ali sad sam video da je
prethodni primer možda nejasan. Probajte ovo da prevedete sa CA 5.2,
biće veselja:
=================== ovde iseci ==== PRIMER.PRG =================
LOCAL Infile, ctmp:=space(3), q:=space(4), w:=space(3), e:=space(3)
Infile := fopen("proba.txt")
ctmp := space(3)
cls
fread(infile,čctmp,3)
q:=ctmp
? q
fread(infile,čctmp,3)
w:=ctmp
? w
fread(infile,čctmp,3)
e:=ctmp
? e
? ""
? q
? w
? e
return
=================== ovde iseci ========================
=================== ovde iseci === PROBA.TXT ==========
111222333444555666777888999000
=================== ovde iseci ========================
clipper.42ialeksic,
>>> Za sve, u stvari. Bilo kakav pristup TB objektu rezultuje greskom.
Fala bogu ima jedan izuzetak: CARGO !
clipper.43ialeksic,
>>> Nemoj otvarati istu datoteku u dve radne oblasti - to je veoma
>>> rizican potez. Povezana lista se moze napraviti i na druge nacine.
Dobro, i napravio sam je na drugi nacin. Medjutim mislim da je veoma
elegantno i koncepcijski cisto koristiti jednu datoteku u (ne samo!)
dve radne oblasti (sa cetiri bi bilo na primer sa pointerima na sledeci,
prethodni, i vlasnika). Kada se jednom postave relacije, pokretanjem sloga
u osnovnoj radnoj oblasti krece se automatski cela medjusobno korelirana
struktura. I to, bez azuriranja radi dobro. Problem je izgleda u tome sto
mehanizam povezivanja zavisi od datoteke indeksa koji se u kliperu ne
azurira automatski za sve radne oblasti koje koriste isti indeks. Cak stavise,
kao sto se vidi i u prilozenom primeru ne pomazu ni razne akrobacije sa
SEEK 0, COMMIT, itd. Kad bi to i pomoglo, to vise nije ono za sta sam mislio
da je dosta elegantno resenje. No, mozda i nije tako za sad nemogu da nadjem
neko drugo objasnjenje.
clipper.44ialeksic,
>>>Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi...
Na 5.01a radi! Mozda ti je problem u proba.txt.
5.2? Ne znam, nisam u posedu istog :(
p.s.
nisu valjda toliko upropastili clipper sa 5.2 ;)
clipper.45gaston,
Narode, moram vam reci da su vase rasprave o editorima vrlo zanimljive.
Ja inace pisem u IDE-u Turbo Pascal-a 6.0, sa WS komandama. Za krace
tekstove koristim QEdit 2.15, pogadjate, zbog gotovo istovetnih komandi.
Pokusavam da predjem na pisanje Clipper programa u Brief-u 3.01.
Sve te stvari sto ima Brief su vrlo lepe, cak bih relativno brzo mogao da
se preorijentisem i na njegove komande. To ne mora da bude toliko namoguce:
ipak je kucanje programa isto u svakom editoru, do razlike se dodje kada
treba upotrebiti blok komande ili find/replace ...
Elem, lep je taj Brief, i taj QEdit, ali mene nerviraju pre svega dve stvari:
1) Zasto nemaju obelezavanje bloka teksta pomocu Shift+strelice ???!!!
Lepo je to sto se u B ili Q blokovi mogu obelezavati i ovako i onako (sex...B),
ali to mi ionako zatreba jedanput mesecno. Da li neko zna kako da se ovo resi
===================================
u Brief-u?
==========
2) Turbo IDE je zgodan zato sto cuva redosled ucitavanja datoteka, polozaje
kursora i ostalo, pa cak to mozes da sacuvas i u konf.fajl koji nazoves kako
ti je zgodno. Konkre(ve)tno, aplikacija na kojoj radim je, dabome, modularna.
Kada radim sa jednim delom paketa, ostali mi ne trebaju. Zato sve .PRG koji
se koriste u tom delu sacuvam u po 1 konfiguracijski fajl, tako da ih njih
imam 20-ak. Kada treba da radim na nekom delu paketa, lepo ucitam taj konf.
fajl i automatski su mi ucitane sve .PRG koje mi trebaju...
E, kako da ovo resim u Briefu ? Imam i ja ideju o tome ...
Ocigledno treba posebnom komandom sacuvati imena svih fajlova (bafera, u term.
Brief-a) u odredjenu datoteku, kojoj korisnik daje ime po zelji, a to treba
kasnije ucitati. Stampao sam ja i spisak svih funkcija i komandi Brief-ovog
komandnog jezika, ali mi to nije mnogo pomoglo...
Verujte, to je ono sto mi zaista treba kod Brief-a, cak vise nego automatski
pametni template i drugo.
Pomagajte drugovi !
Nesa
clipper.46v.nesic,
> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi
> bas kako treba ili ja uporno ne vidim gresku:
fread(infile,@ctmp,3) <- Odve stavi ctmp:=fredstr(infile,3)
> STA NIJE U REDU !?!?!?!?!?!?!?!?!?!?!?!?!?!?
Samo nebo zna :)
clipper.47d.petrovic,
Ă> Verujte, to je ono sto mi zaista treba kod Brief-a, cak vise nego
Ă> automatski pametni template i drugo.
Nisam se ni ja rodio sa njim, ali...
Svaki program stoji u posebnom direktorijumu, što onda ne bi starovao
brief sa:
b *.prg
šta fali da za markiranje lupiš Alt-M ? Shift+strelica verovatno
može, ali treba napraviti makro, maltretiraj mjovu ;))
clipper.48d.petrovic,
Ă> fread(infile,čctmp,3) <- Odve stavi ctmp:=fredstr(infile,3)
a ? ;))) (infile,,3)
clipper.49mickeyl,
=> Imaš verziju Summer'87 sa kojom Blinker ne radi. Moraš naći noviju
=> ili preći na 5.01, što ti najtoplije savetujem.
Zar je bilo novijih verzija Cl'87? Nisam to ni znao. Ima li neko tu
verziju?
clipper.50v.nesic,
> Ć> fread(infile,čctmp,3) <- Odve stavi ctmp:=fredstr(infile,3)
> a ? ;))) (infile,,3)
Ne nego baš freadstr(infile,3) !
clipper.51bulaja,
│Ocigledno fread nije ono sto je bila ;((
│Ovo prevedeno sa CL 5.01 radi, 5.2 sam malo maltretirao, cisto da
│proverim da nije do aadd() i nije. Pokazivac ocigledno ne stoji gde
│je bio :(. Zanimljivo je da NIJEDNA promenljiva tu vise nije sigurna
└───
Ako mislis na file pointer, to radi Ok. Do problema dolazi pri prenosu
parametara tj. pri vracanju bafer promenljive (cTmp). Ocigledno je rec o
bug-u u Clipper 5.2 i to vrlo neprijatnom.
Zanimljivo je sta se iz pojave ovog bug-a moze zakljuciti. cTmp se
prenosi po imenu (adresi) i trebalo bi da FRead() vrati u cTmp izmenjenu
vrednost bafera (dakle string promenljivu). Medjutim FRead() ne vraca
string vec pointer na taj string!!! Izgleda da neke Clipper funkcije
interno koristi promenljive tipa pointer, a u FRead() su verovatno
zaboravili da ubace konverziju pointera u string na izlazu iz funkcije.
Iz ovoga bi se dalo zakljuciti da Clipper podrzava pointer type, pitanje
je samo kako se on moze koristiti i zasto ga CA nije dokumentovao.
clipper.52dejanr,
>> Zar je bilo novijih verzija Cl'87? Nisam to ni znao.
Verzije su se numerisale prema *vremenu* na falovima (npr. CLIPPER.LIB).
Najnovija koju sam video (i, mislim, poslednja postojeća) verzija ima
CLIPPER.LIB datiran 21. decembra 1987 u 2:00 am.
clipper.53bulaja,
│Zar je bilo novijih verzija Cl'87? Nisam to ni znao.
└───
Postoje dve razlicite verzije. Obe nose isti datum, samo prva nosi file
date od 12:00am, a druga 02:00am. Prva je puna bugova, druga je Ok.
clipper.54nbulatovic,
da li je neko uspeo da startuje sve demo programe iz biblioteke sa objektno
orijentisanim funkcijama za clipper?
clipper.55d.petrovic,
Ă> Zanimljivo je sta se iz pojave ovog bug-a moze zakljuciti. cTmp
Ă> se prenosi po imenu (adresi) i trebalo bi da FRead() vrati u cTmp
Ă> izmenjenu vrednost bafera (dakle string promenljivu). Medjutim
Ă> FRead() ne vraca
Ma jesi ti video drugi primer koji sam poslao? Tu je još zanimljivije
:((. Predaš joj vrednost bafera, a ona izmeni i ostale promenljive.
Da je do pointera valjda bi dala neku nebuloznu vrednost, ovako daje
poslednju koja je bila u baferu. Opet mi ništa nije jasno :(((
clipper.56gari,
▀█********************************************
** EVO KONACNOG RESENJA:
********************************************
LOCAL Infile, ctmp, i, aname:={}
Infile := fopen("proba.txt")
for i:=1 to 10
ctmp:=freadstr(infile,3)
aadd(aname,ctmp)
next
achoice(10,10,20,70,aname)
return
********************************************
** VEOMA sam zahvalan korisniku v.nesic-u
********************************************
Dakle:
- Ne treba NIKAKO koristiti vise
f-ciju FREAD nego FREADSTR, jer
gadno dira promenljive oko sebe... ;>
Pozdrav, Gari
clipper.57cnenad,
ŁŁŁ Daj malo blize gde krahira, ko ce na suvo analizirati ovoliki
Imenjace, program izvrsi zamenu unesenih podataka preko get u prazna
polja novog sloga a kad to zavrsi treba da se pojavi pitanje da li
da se unosi novi artikl ili da se izadje iz modula i vrati u glavni program.
Tu se zaglavljuje.
clipper.58bulaja,
│da li je neko uspeo da startuje sve demo programe iz biblioteke sa
│objektno orijentisanim funkcijama za clipper?
└───
Ne, mislim da je Ok radio sam treci demo.
clipper.59bulaja,
│Ma jesi ti video drugi primer koji sam poslao? Tu je jos zanimljivije
│:((. Predas joj vrednost bafera, a ona izmeni i ostale promenljive.
└───
Pa naravno da ce tako da radi, kada su i ostale promenljive postale
pointeri na bafer tj. sve ukazuju samo na (istu) memorijsku lokaciju
gde je smesten bafer.
clipper.60d.petrovic,
Ă> Pa naravno da ce tako da radi, kada su i ostale promenljive
Ă> postale pointeri na bafer tj. sve ukazuju samo na (istu)
Ă> memorijsku lokaciju gde je smesten bafer.
Ali, ako stavimo pre svakog "fread(bbla,čbla,nbla)" jedno
"bla:=space(3)" onda će svaka promenljiva zadržati svoju vrednost.
Deder malo to pojasni, ako ti je sve toliko logično ;)
clipper.61snemcev,
Konkursna komisija grupe BUSINESS na osnovu odluke Upravnog odbora
raspisuje konkurs za popunu sledećih radnih mesta u grupi business2:
- član grupe (10 izvršilaca)
Pored zakonom propisanih, kandidati treba da ispunjavaju i sledeće
uslove:
1. da su članovi Sezama;
2. da se bave programiranjem poslovnih aplikacija iz domena
knjigovodstva, računovodstva i upravljanja;
3. da imaju izraženu dobru volju za saradnju u domenu pisanja pomenutih
aplikacija;
4. da su volji potpisati izjavu da u grupu neće slati poruke tipa "moj
program je dobar, a tvoj ništa ne valja", "Fox je car, Clipper je
prosjak, a Clarion slepac" i slične;
5. uverenje o ispunjenosti zdravstvenih uslova nije neophodno.
Prijave slati na adresu snemcev.
PS U prevodu: popunjena je grupa Business, pa je zbog interesovanja
osnovana grupa Business2; zainteresovani, javite se na mail.
clipper.62bulaja,
│Ali, ako stavimo pre svakog "fread(bbla,Zbla,nbla)" jedno
│"bla:=space(3)" onda ce svaka promenljiva zadrzati svoju vrednost.
│Deder malo to pojasni, ako ti je sve toliko logicno ;)
└───
Ako bla:=" " stoji ispred petlje, onda ce se pre petlje promenljiva
bla inicijalno biti tipa Char. Sa prvim pozivom FRead (nHandle, @bla)
bla vise nije tipa C vec P (oznacimo tako pointer), zbog vec obhasnjenog
bug-a u FRead(). Kasnijim pozivanjem FDRead() u petlji bla ostaje isti
pointer na bafer, znaci svako cX:=bla, AAdd (aX, bla) ce ukazivati na
istu adresu tj. podatak.
Ukoliko bla:=" " stoji u petlji, onda ce cX:=bla, AAdd (aX, bla) i sl.
dodeliti pointer na istu memorijsku lokaciju, ali ce u sledecoj
iteraciji petlje pozivom bla:=" " Clipper dodeliti bla tip Char, a
FDread() pointer na novu memorijsku lokaciju.
Ovo ponasanje FDRead() je ekstermno cudno i ni sam nisam siguran da je
moje objasnjenje sasvim Ok. Ipak, ako sam pogodio mehanizam zbog koga se
manifestuje bug, moguce je da ima jos jednu ozbiljniju posledicu. Ako
poziv bla:=" " u petlji ne oslobodi prostor koji je prethodno alociran
za bafer (jer bla je bio pointer na bafer za koji je ipak alociran
prostor prethodnim pozivom bla:=" ") moze se desiti da se u svakoj
iteraciju alocira dodatnih sizeof(bla) bajtova. Taj prostor ce se mozda
osloboditi ako Clipper uradi clean-up na povratku iz procedure, ali
svejedno se moze desiti da doce do popunjenja komplene memorije.
Pokusacu sutra da ispitam da li zaista moze doci do ovoga.
clipper.63bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
fixlib2 zip 15674* Koriscenje Clipper 5.01 biblioteka u CA-Clipper 5.2
clipper.64d.petrovic,
Ă> Ovo ponasanje FDRead() je ekstermno cudno i ni sam nisam siguran
Ă> da je moje objasnjenje sasvim Ok. Ipak, ako sam pogodio mehanizam
Ă> zbog koga se
Sa ovim objasnjenjem je moguce da je problem bas taj...
clipper.65nbatocanin,
> Ljudi prosvetlite me malo. Clipper ne koristim
> profesionalno, imam 5.01a, Blinker i gomilu biblioteka što
> je za moje hobističko bavljenje istim više nego dovoljno,
> ali ipak.. Da li 5.2 donosi nešto novo i vredno osim
> raznih formata indeksnih datoteka.
Da, ima veoma zgodna poboljšanja u radu sa indeksima koja ćeš veoma
brzo primetiti. Poboljšan je mrežni rad, ako ti to treba. Uostalom,
to je poboljšana verzija 5.0 (tj., nije nešto potpuno novo), pa nema
nekog naročitog razloga da ne pređeš na njega.
> Da, pročitao sam Računare 93, ali me zanima mišljenje nekog ko je ovo
> probao u praksi.
Opa, počeli smo da se vređamo ;)) Pa, bre, zar mislite da ja ne
isprobam u praksi ono što napišem !! :)
clipper.66nbatocanin,
> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi
> bas kako treba ili ja uporno ne vidim gresku:
Na žalost, Clipper 5.2 ima grešku (ili je bolje reći da radi
drugačije od 5.01). Naime, kada u Clipper-u kažeš
x := "ABC"
y := x
u memoriji se ne kreiraju dve kopije stringa "ABC", već pokazivači X
i Y pokazuju na isti string. Kada se uradi
x := "123"
Clipper provaljuje da se ne sme izmeniti string "ABC", jer ga koristi
Y (vodi se evidencija o tome koliko pokazivača se referiše na jednu
vrednost), pa se kreira nova lokacija u memoriji. E, problem je u
operacijama gde se menja vrednost ne nekom od regularnih naredbi,
nego direktno string. Na primer, FRead.
> for i:=1 to 10
> fread(infile,@ctmp,3)
> aadd(aname,ctmp)
> next
Clipper ne provaljuje da ja ne želim da svaki element niza aName
pokazuje istu vrednost u memoriji, tj. da funkcija FRead menja tu
vrednost. Rešenje je, na primer, da se ispred NEXT ubaci
cTmp := Space(3)
i problem je rešen. Ovo je moralo naći mesto u dokumentaciji :((
Ipak, ne smatram da je neka prevelika greška.
Što se tiče programa za BACKUP, 5.2 je otkrio još jednu grešku u
kucanju koju je 5.01 ladno prelazio. Poslaću uskoro ispravljen
program.
clipper.67gari,
Evo dobrovoljca za sledecu turu,
ako moze ukljucenje...
...pozdrav, Gari.
clipper.68gari,
Evo da se ne mucite, ovako treba da
izgleda novi deo bez greske (ja sam
malo zesce promenio pocetni source,
pa saljem samo ovako):
**************************************
DBCreate ("TMPXXX", ;
{ {"f_chk", "C", 3, 0}, ;
{"f_name", "C", 12, 0}, ;
{"f_size", "C", 12, 0}, ;
{"f_zip", "C", 12, 0}, ;
{"f_perc", "C", 5, 0} } )
**************************************
pozdrav, Gari
clipper.69ndragan,
/ Sve je tačno, čak i gore ;-<<<<. Sa biserima ne bih opterećivao
/ ovu conf. Imaš li lična iskustva ili si samo pretpostavljao?
Bio sam u toj koži nekoliko godina, a i sad srećem kod naših korisnika
kućne duhove. Što se bisera tiče, samo napred. Kad nakupim dovoljno za
monografiju, štampam i prodajem dok se ne obogatim, a ovde kačim zip
edabi kolege mogle džabe da čitaju :)
clipper.70ndragan,
/ u protivničkom taboru. Tamo su mi knjigovođe ;->
Jedan kliperaš u Zrenjaninu prebegao u knjigovođe.
clipper.71bulaja,
│Clipper provaljuje da se ne sme izmeniti string "ABC", jer ga koristi
│Y (vodi se evidencija o tome koliko pokazivaca se referise na jednu
│vrednost), pa se kreira nova lokacija u memoriji.
└───
Jesi li siguran da Clipper ovako radi? Tom tehnikom optimizacije bi se
dobijali vrlo sumnjivi rezultati (tj. nikakvi ukoliko je program dobro
pisan, bez dupliranih promenljivih), uz usporenje i dodatno
komplikovanje Clipper memoru managera.
clipper.72gaston,
>│da li je neko uspeo da startuje sve demo programe iz biblioteke sa
>│objektno orijentisanim funkcijama za clipper?
>└───
>Ne, mislim da je Ok radio sam treci demo.
Ako mislis na Object Clipper lib, od onog slovaka iz Piestany, ja sam bez
problema isprobao sva tri demo programa (Demo1..3.prg) i to prevodeci ih
uz pomoc LIB ili sa PLL. Rade super, samo sto pre startovanja Demo3 treba
obrisati sve DBF datoteke ili u njih dodati jos neka polja.
Sto se tice o:Clip (M.Fresee, CyberSoft), ima dva trivijalna primera
(odemo1 i odemo2).
Iskreno receno, davno ne videh (jos od TurboVision) tako
dobar user interface. Sada se spremam da probam da ga ubacim u neku moju
aplikaciju.
Ako si zainteresovan da nesto radis pomocu te biblioteke, ili vec radis,
posalji poruku. Odstampao sam celokupnu dokumentaciju (uz pomoc 2col-a)
i prilicno sam zagrejan za upotrebu. Ako se jos neko javi, mogli bi da
osnujemo grupu,samo da neko drugi bude direktor, ja ti nisam za to, previse
citko se potpisujem ...
Pozdrav Nesa
clipper.74gari,
Narode, evo mene opet!!!
Obratite paznju na sledeci problem:
Uradio sam preko klase browse jednu funkciju koja radi sve
zivo sa podacima (pregledi, unosi, brisanja, izmene, izvrsavanje
funkcija pre i posle izmene, za vreme kretanja kroz datoteku,...)
i imam "malecki" problem:
- Kada se slog brise ili se izvrsi neka funkcija, pa se kontrola
prikaza vrati u tbrowse ne postoji nista sto ce izvrsiti
osvezavanje objekta (BAR GA JA NISAM NASAO). Jednostavno prikaze
sadrzaj browse:nTop, a ne browse:rowPos kao sto je i red.
Ukoliko se odmah posle toga uradi npr. DEL (brisanje sloga), on ce
na poziciji browse:rowPos obrisati slog browse:nTop !?!?!
Medjutim ako izvrsim browse:left, right ili sl. on odjedanput
prikaze stvarnu vrednost browse:rowPos i dalji rad je normalan.
To sam resio sa funkcijom ISPRETURI (sledi source),ali to je na silu.
Prvo sam mislio da sam bio umoran ili da mi je popustila koncentr.,
ali ni do dana danasnjeg nisam uspeo da to uradim drugacije.
Zato pitam sezamovce da li su imali slican slucaj i da li su ga
resili na neki (bilo kakav) elegantniji nacin (citaj BRZI) ?
*********************************************************************
Deo programa u kom MORAM pozvati Glupu funkciju:
*********************************************************************
if "D" $ Zastita && Brisanje uopste dozvoljeno?
if "D" $ Pitanje(9,.f.) && Pitanje ("Da li ste sigurni?")
if ! empty(MaleProc[3])
temp2 := &(MaleProc[3]) && Zadata funkcija PRE brisanja
endif
if rec_lock() && Zakljucaj slog ko sto i treba
delete && ...a onda ga obrisi
if ! empty(MaleProc[2])
temp2 := &(MaleProc[2]) && Funkcija POSLE brisanja
endif
if ! empty(MaleProc[7])
temp2 := &(MaleProc[7]) && Funk. POSLE bilo kakvih izmena
endif
endif
Ispreturi(temp_browse) && E OVO SADA MORAM DA POZOVEM !
Osvezi := .T. ^^^ ^^^^^
temp_browse:RefreshAll() && Ovo mozda ne treba
endif
endif
*********************************************************************
Glupa funkcija:
*********************************************************************
FUNCTION Ispreturi(objektic)
clear typeahead
if objektic:rightVisible == objektic:colCount
keyboard chr(K_RIGHT)
else
if objektic:leftVisible - objektic:freeze == 1
keyboard chr(K_LEFT)
else
keyboard chr(K_LEFT) + chr(K_RIGHT)
endif
endif
RETURN NIL
*********************************************************************
Nije radjeno sa browse:rowPos, jer ja imam inverzno osvetljen CEO
slog, a ne samo tekucu kolonu, pa umesto browse:left() i
browse:right() koristim browse:panLeft() i browse:panRight()...
*********************************************************************
Ko mi ovo resi elegantnije ima pivo od mene! && ili sta vec pije O:]
Pozdrav svima, Gari.
clipper.76nbatocanin,
> Elem, lep je taj Brief, i taj QEdit, ali mene nerviraju
> pre svega dve stvari:
>
> 1) Zasto nemaju obelezavanje bloka teksta pomocu
> Shift+strelice ???!!!
Morao bi se pisati makro. Ovako odoka, nije neki problem.
> 2) Turbo IDE je zgodan zato sto cuva redosled ucitavanja
> Verujte, to je ono sto mi zaista treba kod Brief-a, cak
> vise nego automatski pametni template i drugo.
Stavi SET BFILE=.\state.rst i onda će BRIEF u svakom katalogu
ostavljati STATE.RST sa poslednjim stanjem (učitane datoteke, pozicija
kursora, ...) i samo B će te uvek vraćati tamo gde si stao.
H
clipper.77rpausic,
>## bla vise nije tipa C vec P (oznacimo tako pointer), zbog vec
>## obhasnjenog bug-a u FRead().
Ja ne bih rekao da promenljiva postaje tipa pointer, jer takvog
ne verujem da ima u C5.2 (iako ga nisam video), nego mislim da je
suština u tumačenju koje ti je dao nbatocanin, tj. tumačenje
dodele vrednosti stringa: x:="ABC"; y:=x se sada tumači kao u
5.01 dodela vrednosti kod array. Znači, sada bi trebalo ili
napraviti STRCOPY() (kao ACOPY) ili koristiti rešenje v.nesica sa
FREADSTR(), što u oba slučaja zahteva pročešljavanje kompletnog
koda svakog programera koji je radio sa 5.01. Ne znam zašto je to
trebalo CA-u, jer ću se ja lično dobro razmisliti i/ili
pripremiti za prelazak 5.01=>5.2 i to samo ako nađem dovoljno
(bar 1001 :) ) razloga.
clipper.78v.nesic,
> To sam resio sa funkcijom ISPRETURI (sledi source),ali to je na silu.
Da li si pogledao sample koji stiže uz clipper (browse sample ili
dbu source, nisam siguran).
Tamo sam video nešto slično mada je i to bilo pisano na mišiće :(
clipper.79snemcev,
>> Ako mislis na Object Clipper lib, od onog slovaka iz Piestany, ja sam
>> bez problema isprobao sva tri demo programa (Demo1..3.prg) i to
>> prevodeci ih uz pomoc LIB ili sa PLL. Rade super, samo sto pre
>> startovanja Demo3 treba obrisati sve DBF datoteke ili u njih dodati
>> jos neka polja.
Jeste da rade super, al' sporooooooooo.
clipper.80rpausic,
>## if rec_lock() && Zakljucaj slog ko sto i treba
>## delete && ...a onda ga obrisi
>## if ! empty(MaleProcŠ2Ć)
Prvo mi pada na pamet da ubaciš SKIP posle DELETE? Ostalo ostaje.
Ako nemaš, možda još dodaj posle toga
WHILE !temp_browse:stabilize()
ENDDO
ili nešto slično.
clipper.81d.petrovic,
Ă> Deo programa u kom MORAM pozvati Glupu funkciju:
E, bas me mrzi da ti sad sve nacrtam O;)), ovde je deo iz moje
funkcije za tbrowse...
obrati paznju na:
bro:stabilize()
while .t.
ch:=0
while !bro:stable .and. Ch==0
ch:=ninkey()
bro:stabilize()
enddo
if bro:stable .and. ch==0
ch:=ninkey(0)
endif
redic:=row()
kolonica:=col()
do case
case ch==27
return(.t.)
case ch==bla...
pera()
case ch==blabla
djura()
otherwise
MoveKey(bro,ch)
endcase
enddo
return
clipper.82d.petrovic,
Ă> Stavi SET BFILE=.Đstate.rst i onda će BRIEF u svakom katalogu
Ă> ostavljati STATE.RST sa poslednjim stanjem (učitane datoteke,
Ă> pozicija
ja stavio i ne radi. Imam jedan state.rst i kad sam ga prebacio u
radni dir učitao je njega, ali ne i datoteku. Inače pri izlasku ne
snima stanje taj state.rst
clipper.83bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
52abus exe 147952 CA-Clipper 5.2b update sa US verzije 5.2a
52bus exe 160619 CA-Clipper 5.2b update sa US verzije 5.2
clip_52b zip 4805 Sta je sve promenjeno u CA-Clipper verziji 5.2b
The problems resolved by CA-Clipper 5.2B include:
1. Fixed a Virtual Memory Integrity Failure in FOPEN() when the file
name is numeric instead of a character string.
2. Fixed a Virtual Memory Integrity Failure when calling AADD() to
increase the size of an array.
3. Fixed a Virtual Memory Integerity Failure that occured when an
ACHOICE() user function deleted elements from the menu selection
array. ACHOICE() now allows the user function to add, delete, or
modify existing elements without causing any problems in ACHOICE().
4. Fixed a Virtual Memory Integrity Failure in the Internal Runtime
Event System. This was causing the DBFCDX driver to hang as well as
various "unexplainable" errors.
5. Fixed a Virtual Memory Integrity Failure in the debugger when
viewing multiple nested arrays. Tbrowse was producing a parameter
error when viewing multiple nested arrays. In some instances this
produced a Virtual Memory Integrity Failure.
6. Fixed a Virtual Memory Integrity Failure in the debugger's memory
allocator. (STAR Issue# 737689)
7. Fixed INDEXKEY() memory corruption problem. INDEXKEY() would
occasionally return a garbage string when called repeatedly. This
sometimes caused a Virtual Memory Integrity Failure.
8. Fixed MEMOEDIT() buffer memory corruption problem. This occurred
when MEMOEDIT() was called with a user defined function. This would
result in various memory related errors including a Virtual Memory
Integrity Failure.
9. Fixed slow disk I/O on replaces on large DBF's with non-unique
indexes. The performance has been improved to a speed which is
comparable to CA-Clipper 5.01a.
10. Fixed the releasing of all relations (in all workareas) when any
child dbf was closed. Now closing a child database releases only the
relations that it is involved with.
11. Fixed the DBFNDX Replaceable Database Driver so that it now properly
seeks on a date value with SET DELETED ON.
12. Fixed DBCREATE() to properly return a NIL value as documented.
13. Fixed INDEXORD() so that it now returns a zero when no database is
open rather than generating a runtime error.
14. Fixed some occurances of internal error 1210 (database and index are
out of sync).
15. Fixed many occurances of internal error 415 (can not open external
overlay file).
16. Fixed the Runtime Memory Manager so that it now returns an EG_MEM
(5300 "Memory Low Warning") before generating a memory exhausted
error.
17. Fixed Runtime failures that occured when CA-Clipper mistakenly tried
to use non-existent EMS memory.
18. Fixed FREAD() so that it does not modify variables that it shouldn't
have access to.
19. Fixed BROWSE() so that it no longer causes the repositioning of a
file to BOF() when editing takes place in a new record.
20. Fixed the debugger so that it is no longer necessary to specify the
default file extension (.PRG or .PPO) when opening a file.
21. Fixed the debugger so that it correctly searches the path (indicated
by the PATH environment variable) when searching for a file to open.
22. Fixed the debugger so that it does not produce "Argument error +"
when the F6 key is pressed to view databases.
23. Fixed DBU so it now correctly parses a file name that contained a
drive letter and colon (:) but no backslash (\) (such as C:TEMP).
24. Fixed numerous bugs in the R.L. utility.
25. Fixed the compiler screen to include the missing /t and /z options
in order to match the documented options.
26. Fixed the spelling of OrdDestory to OrdDestroy in STD.CH for the
DELETE TAG command.
27. Fixed the "Guide to CA-Clipper" .NG file so that the Norton Guide
engine may now be unloaded from memory.
clipper.84gari,
> Da li si pogledao sample koji stize uz clipper (browse sample ili
> dbu source, nisam siguran).
Jesam, nema :(((((((((((((
I dalje mi je problem neresen...
clipper.85gari,
>> if rec_lock() && Zakljucaj slog ko sto i treba
>> delete && ...a onda ga obrisi
>> if ! empty(MaleProcS2C)
> Prvo mi pada na pamet da ubacis SKIP posle DELETE? Ostalo ostaje.
> Ako nemas, mozda jos dodaj posle toga
> WHILE !temp_browse:stabilize()
> ENDDO
> ili nesto slicno.
1. Posle skip ti ispomera redove (prema "gore"), a uz to
se desava isto sto i pre...
2. Umesto while...enddo koristim po preporuci CA
temp_browse:forceStable() i to radi sasvim korektno
I dalje mi ostao problem neresen...
clipper.86gari,
>> Deo programa u kom MORAM pozvati Glupu funkciju:
> E, bas me mrzi da ti sad sve nacrtam O;)), ovde je deo iz moje
> funkcije za tbrowse...
> obrati paznju na:
To dalje nema veze sa mojim problemom. Inace mi
funkcija za rad sa datotekom ima cca 1000 linija.
Uzgred sta je ninkey() ???
I dalje je nereseno... (sada vec mozda i neresivo :( )
clipper.87rpausic,
>## 1. Posle skip ti ispomera redove (prema "gore"), a uz to
>## se desava isto sto i pre...
Suština onog što sam hteo da ti kažem je da ako ti je SET DELETED
ON moraš ta se pomeriš sa obrisanog sloga, tačnije da pronađeš
prvi koji nije obrisan. Kada se na njega pozicioniraš, posle
refreshall() bi trebalo da je sve OK, opet u zavisnosti od toga
kako si realizovao ostatak dbrowse-a.
>## 2. Umesto while...enddo koristim po preporuci CA
>## temp_browse:forceStable() i to radi sasvim korektno
To je iz C5.2? Nemam ga. Radim još u C5.01a. Da si mi poslao više
sorsa, probao bih da li može da se reši sa njim. Probaj ti, ako
te ne mrzi, pa ako je bag novog Clipper-a, da se ne patim :)
clipper.88gari,
Prilikom prelaska na Clipper 5.2b
desilo mi se sledece:
***************************************************
118 if rec_lock()
119 if &t_uslov
120 temp := "1"
121 else
122 temp := "0"
123 endif
124 replace DOBAR with temp
125 unlock OVDE JE GRESKA ?!
126 endif
***************************************************
I ponudi ono njegovo CANCEL/DEFAULT, a zna se da je
bolje da izaberes CANCEL jer po Marfijevom zakonu
svaki put nesto jos gore uradi ako stavis DEFAULT i
sretno iznenadjenje (nema u NG-u):
Error DBFNTX/1210 Corruption detected
Called from LOCKERRHAN(0)
Called from (b)INITHANDL$(0)
Called from DBUNLOCK(0)
Called from E_ST_ZAK(125)
Called ...
E ja bih molio lepo one koji BILO STA znaju sa ovim
sta mogu/ne mogu da uradim <spremam zolju za CA ;>
p.s. maybe .or. !maybe:
Izgleda (probao "samo" 30-tak puta) da se
to desava kada se koristi blinker i/ili
kada se ubacuju podaci za debuger (bez /b) ???
clipper.89gari,
Ne desava se to meni zbog delete,
nego zbog bilo cega sto radim van TBROWSE-a
npr. pritiskom na F5 da ti pokaze stanje
na ziro racunu i sl., pa kada se vracam
nazad E ONDA on pocne svoju bajkuŰOw<ďb
sorry za djubre, ONůLINE odgovaram da bih
bio azuran...
pozdrav
clipper.90d.petrovic,
Ă> To dalje nema veze sa mojim problemom. Inace mi
Ă> funkcija za rad sa datotekom ima cca 1000 linija.
Duga neka funkcija ;)). Ova je kratka i poziva puuuuuuno drugih gde
se štošta čačka i sređuje.
Ă> Uzgred sta je ninkey() ???
isto šti i inkey(), funkcija nbatocanina za scan tastature uz par
mojih dodataka.
clipper.91d.petrovic,
Ă> 125 unlock OVDE JE GRESKA ?!
Ne mora da znači. Greška može da bude i posle te linije, a on na
samonjmuznaninačin prijavi da je tu. Šta radi sa unlock all ?
clipper.92nbatocanin,
> Imenjace, program izvrsi zamenu unesenih podataka preko
> get u prazna polja novog sloga a kad to zavrsi treba da se
> pojavi pitanje da li da se unosi novi artikl ili da se
> izadje iz modula i vrati u glavni program.
Ne bih da cepidlačim, ali uđi u dibager i korak po korak nađi naredbu
gde se zaglavljuje. Tako ćeš nam uštedeti ogromno vreme - ti ćeš se
najlakše snaći u svom kodu.
clipper.93nbatocanin,
>│ Clipper provaljuje da se ne sme izmeniti string "ABC",
>│ jer ga koristi Y (vodi se evidencija o tome koliko
>│ pokazivaca se referise na jednu vrednost), pa se kreira
> nova lokacija u memoriji. └───
> Jesi li siguran da Clipper ovako radi?
Sasvim. Za svaku promenljivu Clipper čuva malu strukturu sa raznim
podacima. Ako je promenljiva kratka (datum, broj, ...) onda se
vrednost čuva u toj strukturi, a ako je nešto kršnija čuva se u SVOS
memoriji, a struktura čuva samo pokazivač na pravu vrednost. A := B
se izvodi tako što se kopira _struktura_ od B i dodeljuje A-u.
Vrednost se ne kopira. Uostalom, kako bi onda radilo ovo:
x := Space(60000)
a := Array(4000)
AFill (a, x)
> Tom tehnikom optimizacije bi se dobijali vrlo sumnjivi rezultati (tj.
> nikakvi ukoliko je program dobro pisan, bez dupliranih promenljivih),
> uz usporenje i dodatno komplikovanje Clipper memoru managera.
Pazi, ovde se ne radi o optimizaciji dupliranih stringova: Clipper će
za sledeće:
x := "ABC"
y := "ABC"
kreirati dve kopije "ABC". Ovde se radi o sistemu operisanja velikim
objektima koji je po meni jako dobar. Naime, Clipper _automatski_ kreira
duplikate stringova, a korisnik o tome ne treba da vodi računa (osim
ako ne koristi FRead ili neku funkciju koja _direktno_ menja string).
clipper.94bulaja,
│Ako je promenljiva kratka (datum, broj, ...) onda se vrednost cuva u toj
│strukturi, a ako je nesto krsnija cuva se u SVOS memoriji, a struktura
│cuva samo pokazivac na pravu vrednost. A := B se izvodi tako sto se
│kopira _struktura_ od B i dodeljuje A-u.
└───
Otprilike se i moje objasnjenje svodi na isto :) - Clipper interno
koristi pointerske tipove (potpuno normalno), ali neda ih za javnost :).
Svejedno se opet svodi na metod optimizacije koji mi se uopste ne
svidja jer zavisi iskljucivo od internog algoritma i ja tu ne mogu nista
da izmenim. Ne znam sta Clipper smatra kratkom promenljivom, ali je u
primeru sa FRead() izvodio kerefeke sa stringom duzine tri (3) bajta.
Bilo bi bolje da Clipper bukvalno shvati A := B i iskopira celu
strukturu, nego da mi se nesto pravi pametan :) i kopira samo pointer.
Petljanje sa pointerima nek prepusti programeru da odluci da li mu treba
ili ne, ali zato nek CA pusti operacije sa pointerima i adresama u
public.
clipper.95bestbp,
Evo je 'zakrpa' za probleme sa MDX-om u Clipper-u 5.2
fixmdx.execlipper.96bulaja,
Info sa Blinker BBS-a:
SWPRUNCMD changes in Blinker version 2.1
The recently shipped Blinker version 2.1 has introduced a change in the
default settings for the application swapper, SWPRUNCMD(), which at times
may result in network disconnections or mouse problems when swapping.
To remain compatible with the swapper defaults in Blinker version 2.01,
I recommend adding the undocumented function SWPSAVCOM(logical false)
prior to calling SWPRUNCMD().
A later maintenance release of Blinker will correct this and other
problems should any arise. So far this appears to be an exceptionally
clean release with no other known bugs.
clipper.97dejanr,
>> The recently shipped Blinker version 2.1
Što je ujedno i vest da postoji Blinker 2.1. Kakvi li su mu noviteti?
clipper.98mickeyl,
=> 125 unlock OVDE JE GRESKA ?!
=> 126 endif
Probaj staviti unlock iza endif-a. Možda mu smeta unlock unutar if-a
za zaključavaje sloga.
clipper.99gari,
> Probaj staviti unlock iza endif-a.
To je radilo korektno PRE patch-ovanja na Clipper 5.2b
clipper.100tvucko,
Da li je neko čuo za SemaWare Editor verzija 1.0 ili
1.1 (firma koja pravi QEdit). Editor bi trebao da može
koristiti datoteke dužune i do 32 MB(!!!). Informacija
sa QEdit BBS-a (osim ovoga postoje na tom BBS još neke
tehničke informacije o editoru), ali ne postoji info.
gde se moze naći i po kojoj ceni. Sve one koji nesto
Hviše zanju molim da mi se jave. Predpostavljam da će
svi korisnici QEdita biti zainteresovani zato što je
editor nova verzija popularnog QEdita 2.15.
TVucko
--->>>
clipper.101dcolak,
│ koristiti datoteke dužune i do 32 MB(!!!). Informacija
│ sa QEdit BBS-a (osim ovoga postoje na tom BBS još neke
│ tehničke informacije o editoru), ali ne postoji info.
│ gde se moze naći i po kojoj ceni. Sve one koji nesto
Jel ima još nešto na tom BBS-u, kao npr. neka novija verzija
QEdit od 2.15? Mi imamo taj SW program road runner Qedit.. No,
fali nam QConfig fajl..
Sledge DAMMIR!
clipper.102nbatocanin,
> Ne znam sta Clipper smatra kratkom promenljivom,
> ali je u primeru sa FRead() izvodio kerefeke sa stringom
> duzine tri (3) bajta.
Dužina promenljive se određuje isključivo na osnovu tipa, tj. svaki
string ide u SVOS, bez obzira na dužinu.
> Bilo bi bolje da Clipper bukvalno shvati A := B i iskopira
> celu strukturu, nego da mi se nesto pravi pametan :) i
> kopira samo pointer.
Ne bih se složio ;) Uostalom, to tako radi još od ko zna koje verzije
Clipper-a, pa se niko nije još bunio. Razmisli kako bi radile
funkcije kojima se kao argumenti prosleđuju memo polja:
FOR i := 1 TO MLCount (cBigBuffer)
? MemoLine (cBigBuffer,,i)
NEXT
A ako ovde ne prosleđuješ po vrednosti, gubiš principijelnost (koja
je, doduše, kod nizova malo poljuljana). Po meni je ovakav sistem
odličan za ovakve primene.
> Petljanje sa pointerima nek prepusti programeru da odluci da li mu
> treba ili ne, ali zato nek CA pusti operacije sa pointerima i
> adresama u public.
Pazi, ovo je isto i u starijim verzijama, tako da CA tu nema ništa.
Jedino nisam stigao da pogledam zašto je onaj primer radio ;) u 5.01.
clipper.103tvucko,
Bio bih Vam zahvalan kada bi mogli da mi ostavite
verziju SW editora koju Vi pos_żdujete.
Oatak informacija SW 1.0 editoru i BBS je zakace
uz ovu poruku TSE.ARJ
TVucko
--->>>
tse.arjclipper.104cnenad,
Na predloge korisnika iz ove teme a u vezi koriscenja DEBBUGER-a za
pronalazenje razloga zasto mi se zaglavljuje program to sam i uradio.
Medjtim problem je sto je program zaglavio i debugger tako da ne znam
sta sada da radim ! Ima li neko ideju ? Inace i dalje se zaglavljuje na
redovima gde se vrsi zamena sa REPLACE, (koju izvrsi) dok je na ekranu
ispisano treptuce SACEKAJTE !!!
clipper.105niklaus,
Ne da imam QCONFIG.EXE nego imam kompletni registrovani
QEdit v2.15. Uzgred imam i TSR varijantu (jako moćna
stvar) - QEditTSR v1.01 koji radi sve što i non-TSR
varijanta. Uzgred, QTSR nije registrovan ali nema veze
ima i QCONFIG i programčić za koverziju konfiguracionog
fajla od QEDIT-a v2.15!
Ako ti treba nešto od ovog -> mail...
(:niklaus:)
P.S. Za prebacivanje u dir sam se angažovao, ali bulaja
ne želi da se suočava za "zakonom" (shame on you (;)
clipper.106spantic,
U subotu sam pitao u klubu da li se nekom desilo da mu Clipper 5.01
ne sarađuje sa DOS 6.0. E pa nije baš u pitanju sam DOS, već Double
Space. Ako je on u memoriji, počinju problemi sa debagerom i program
koji se prevede ne radi.
Ovo su simptomi koji se javljaju kod mog prijatelja. Ima li neko
slična iskustva ili objašnjenja?
Da, kad se Double Space ukloni sve radi.
clipper.107bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
bumenu13 zip 10763 BuMenu 1.3, poboljsani sistem menija za Clipper (bulaja)
10.08.93 - v1.3
─────────────────
- automatsko (inteligentno:) podesavanje boja u menijima zavisno od
aktivnog SetColor()
- kretanje izmedju opcija i tasterima Tab & Shift-Tab
clipper.108dr.grba,
>> - Da se zada frekvencija skaniranja izvornih podataka: na primer,
>> želiš da na mreži interaktivno prikazuješ/menjaš spisak aktivnih
>> procesa.
žini mi se da se približava vreme kada će se tražiti ovakva mogućnost
i unutar Clipper-a. Imao sam prilike tako nešto da vidim samo unutar
Paradox 3.5 paketa, u jednom pratećem primeru. Koliko sam uočio u kratkom
pogledu na script, u pitanju je jedna debela makroinstrukcija kojoj samo
dojaviš frekvenciju i funkciju, a ona ostalo šiba sve u 16...
clipper.109dr.grba,
>> Namestio sam set clipper=f40, ali i dalje zaglavljuje.
Proveri i FILES=45 u config.sys, 40 za clipper i 5 za DOS.
clipper.110dr.grba,
>> kućne duhove. Što se bisera tiče, samo napred. Kad nakupim dovoljno
>> za monografiju, štampam i prodajem dok se ne obogatim, a ovde kačim
Jel' može jedan koautor? (:
clipper.111dejanr,
>> > Kad nakupim dovoljno za monografiju, štampam i prodajem dok se
>> > ne obogatim, a ovde kačim
>>
>> Jel' može jedan koautor? (:
MONOgrafija je MONO jer nema koautora :))
clipper.112dcolak,
│ Ne da imam QCONFIG.EXE nego imam kompletni registrovani
│ QEdit v2.15. Uzgred imam i TSR varijantu (jako moćna
Došlo je do zabune. Jer kao što i vrapci na granama znaju, potreban
nam je QEdit veći od 2.15 ;)
Sledge DAMMIR!
clipper.113zddb,
Svašta! U fajlovima za upgrade clipper-a 5.2 fali vam najvažnije! Nema u arhivi
fajla patch.exe, bez kojega nema korekcija. Da li je uopšte neko ovdje i
pogledao te arhive ili svi samo kupe i slažu na diskete "ko čuma đecu!"!?
Pozdrav, Zoran D. Brkić
clipper.114gari,
> Svasta! U fajlovima za upgrade clipper-a 5.2 fali vam
> najvaznije! Nema u arhivi fajla patch.exe...
Imas ga u arhivi za 5.2a
clipper.115nbatocanin,
Neko se žalio na grešku "Corruption detected" u 5.2. Meni se ovo
dešavalo kada indeks nije ažuran. Na primer, promenim strukturu DBF-a
i zaboravim da reindeksiram datoteku i sl. Naime, izgleda da 5.2 ima
nešto precizniji mehanizam za otkrivanje neažurnih indeksa.
clipper.116nbatocanin,
> Na predloge korisnika iz ove teme a u vezi koriscenja
> DEBBUGER-a za pronalazenje razloga zasto mi se zaglavljuje
> program to sam i uradio.
Uh, evo baš sam probao da provalim šta nije u redu, ali nisam uspeo -
imaš veoma nečitak listing i nije ga lako pratiti. Da ponovim savet
sa dodatnim objašnjenjima. Prvo, potrudi se da lociraš grešku na
*jednu* jedinu KONKRETNU naredbu. Svaki REPLACE zameni tako da vidiš
koja promenljiva zeza:
REPLACE a WITH b, c WITH d
zameni sa
REPLACE a WITH b
REPLACE c WITH d
Naravno, samo na mestu gde zaglavljuje. E onda dibagerom dođeš do ove
naredbe i sa ? proveriš sve vrednosti (ono što menjaš i ono čime
menjaš!), pa ideš dalje. Onda ćemo valjda uspeti da ti pomognemo.
clipper.117toma,
Pitanje?
Jel ima neko Yu_upper funkciju koja radi pod UKRAS-om?
Gosn. Bulajo, zašto UKRASCLP.ARJ nije u CLIPPER dir-u?
clipper.118nbatocanin,
>>> - Da se zada frekvencija skaniranja izvornih podataka:
>>> na primer, želiš da na mreži interaktivno
>>> prikazuješ/menjaš spisak aktivnih procesa.
>
> žini mi se da se približava vreme kada će se tražiti
> ovakva mogućnost i unutar Clipper-a.
Pa ovo nije problem za Clipper. Ja koristim sistem za ovo, a koristi
ga i novi DBU.
clipper.119bulaja,
│Gosn. Bulajo, zasto UKRASCLP.ARJ nije u CLIPPER dir-u?
└───
Ako se dobro secam, bila je diskusija svojevremeno oko ovoga i
zakljucili smo da bi trebala podrska za razne jezike da ide zajedno
u kompletnom ukras paketu (onom koji je u r:\ibmpc\yu, tamo su valjda
funkcije za C i Pas). U medjuvremenu ocigledno nista nije ispalo od tog
ukrasa, pa nema vise smisla forsirati mrtav "standard" :).
clipper.120solajac,
U programu NTOC.PRG (num2str.zip, 15.3.93.) postoji greška:
U 57. liniji stoji: Ret := N999toC (Int(x/1000000))
a treba: Ret := N9999toC (Int(x/1000000))
Pozdrav, Solajac.
clipper.121bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
nettol zip 167277 Netto 1.1, Novell NetWare API Library za CA-Clipper 5.2
Netto
Novell NetWare (tm) API Library for CA-Clipper (tm)
Release 1.1 7/15/93
NETTO is a public domain software library of code written for
CA-Clipper application development language from Computer Associates
Internal, Inc., version 5.2 and above.
NETTO provides access to many of the Novell NetWare application
programming interfaces (APIs). The APIs are accessed through
either a simple function call, or via a command defined by
the NETTO library.
clipper.122bulaja,
Ovo sam nasao u dokumentaciji za Netto, izgleda jako zanimljivo:
-> At release time, a product from SofDesign International and ObjecTech,
-> Inc. called ExoSpace (tm) was released, which is a DOS Extender
-> designed to run CA-Clipper applications in protected mode.
Btw source code za Netto Lib se ocekuje na Sezamu za dva-tri dana.
Izaslo je i nekoliko patcheva za NanForum Lib koji dodaju kompatibilnost
sa ExoSpace, patch #8 (keyoboard funkcije) je takodje u CLIPPER dir-u.
Takodje je izasao i Clipper 5.2c patch, stay tuned :).
clipper.123mark,
Da li je moguce sa Sezama skinuti neki prevodilac i linker fur Clipper?
<Marko>
clipper.124bulaja,
│Da li je moguce sa Sezama skinuti neki prevodilac i linker fur Clipper?
└───
Jedini Clipper prevodilac zove se Clipper (ili sad CA-Clipper) i ne moze
se skinuti sa Sezama :).
clipper.125dejanr,
>> Da li je moguce sa Sezama skinuti neki prevodilac i linker fur Clipper?
Nije mi baš jasno šta si pitao. Clipper je (u prvoj aproksimaciji ;)
prevodilac (kompajler) tako da ne znam za što bi bio potreban još neki
prevodilac. Možda neki predprocesor?
Što se linkera tiče, nemamo ni jedan koji bi bio PD/SW a koji bi konkurisao
Blinker-u koji je komercijalni program i kao takav se ne može preuzeti sa
Sezama.
Ono što se može preuzeti to su pre svega razne biblioteke za Clipper, onda
razni oficijelni upgrade-i Clipper-a tj. ispravke njegovih bagova i takođe
neki upgrade Blinkera sa 2.0 na 2.01. Sve to je u direktorijumu
IBMPC\CLIPPER, pa pogledaj.
clipper.126nbatocanin,
Evo nove verzije funkcije NtoC za ispisivanje broja slovima.
ntoc.zipclipper.127dr.grba,
>> >> Jel' može jedan koautor? (:
>>
>> MONOgrafija je MONO jer nema koautora :))
A sad sam uočio i skraćenicu meni namenjenu : mo NO GR. afija ... (:
clipper.128bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
52cus a01 182567 CA-Clipper 5.2c update sa US verzije 5.2 (#1/2)
52cus a02 179909 CA-Clipper 5.2c update sa US verzije 5.2 (#2/2)
Problems resolved by CA-Clipper 5.2c:
1. Fixed most instances of the DBFNTX/1210 error.
2. Fixed INDEXKEY() so that when it is called with an invalid order
argument it will no longer corrupt the data at memory location
0000:0000 in dos and will no longer generate a General Protection
Error in Exospace.
3. Fixed CMEM.OBJ (in Clipper.lib) so that the malloc(), _fmalloc(),
free() and _ffree() memory allocation functions will return the
correct information.
4. Fixed VM Integrity error when evaluating detached code blocks that
are nested three or more deep.
5. Fixed VAL() so it no longer left justifys the result.
6. Fixed ACHOICE() so that it will not redraw the menu window after
returning from the user specified function unless:
A. the user specified function changes the number of elements in
the menu array.
B. the user specified function returned the new return code of
AC_REDRAW (which can be found in ACHOICE.CH and has the
numeric value of 4).
7. Fixed the Expanded Memory Manager so it will not attempt to use
more than eight megabytes of EMM. Currently, Clipper can not take
advantage of more than eight megabytes of EMM. Please note that the
printed documentation is incorrect. This was the cause of many
corruptions on systems that had more than eight megabytes of
expanded memory.
8. Fixed an incorrect calculation in _xvalloc() that caused the
Virtual Memory Manager to allocate 1K to much if the requested size
+ 16 (in bytes) was an even multiple of 1024.
9. Fixed an internal calculation that did not account for overflow when
converting a segment:offset address to an absolute address. This
could only be encountered by calling the VM API function:_xvalloc().
10. Fixed several problems in the DBFCDX replaceable database driver.
11. Fixed a compatability problem between CA-Clipper Tools-II and
CA-Clipper 5.2x. Developers using CA-Clipper Tools-II noticed
unresolved symbols at link time. The CT2PATCH.OBJ file will resolve
these problems and should be included as an object on the link line.
Please note that CT2PATCH.OBJ is only intended for use with
CA-Clipper Tools-II, those not using CA-Clipper Tools-II should not
include this file in their applications.
12. Fixed DBU so that closing a file with an associated filter will no
longer cause a DBCMD/2001 error.
13. Fixed DBU so that performing a replace will no longer cause a "Lock
Required" error.
14. Fixed REPORT FORM so header will print when creating a report whose
width is greater than 254 characters.
15. Fixed REPORT FORM so that it now ejects properly for groups.
16. Fixed REPORT FORM so that double spaced forms will now print
properly.
17. Determined that the EG_SYNTAX error in REPORT FORM was not caused by
an empty database. It was caused by the absence of a field name for
the report. This is the correct behavior.
18. Fixed REPORT FORM so that it will respect the "SUMMARY ONLY" option
when requested.
19. Fixed REPORT FORM so that it no longer prints an extra form feed
after the report is completed.
20. Fixed RL so that it will save entered data from all entry screens
instead of only the current display screen.
21. Fixed RL so that it will no longer save the rightmost column when it
is empty.
22. Fixed RL so that it accepts "T" or "F" in it's question fields. It
previously was limmited to "Y" or "N".
clipper.129saks,
Da li iko ziv ima neku biblioteku za Cl501 pomocu koje se mogu kreirati objekti
a da isti budu dostupni i CLD-u ? Do sad sam video samo verziju CLAS(y) za
Cl500, i istu demonstracionu za 501.
Ako neko raspolaze nekom takvom bibliotekom, molio bih istog da me kontaktira
putem poste, jer sam jako zainteresovan.
Saks
clipper.130ialeksic,
Da li neko zna kako se moze prekoraciti ogranicenje od 4096 elemenata
po dimenziji za ARRAY? [Bez gimnastike ;) ].
clipper.131nbatocanin,
> U programu NTOC.PRG (num2str.zip, 15.3.93.) postoji
> greška:
Hvala na ispravki, ovo sam video tek kad sam poslao novu verziju. U
njoj nema ovih problema (nadam se :) ).
clipper.132ndragan,
/ mehanizam povezivanja zavisi od datoteke indeksa koji se u kliperu ne
/ azurira automatski za sve radne oblasti koje koriste isti indeks. Cak
Tu me je i fokspro razočarao - isto ne osvežava indekse u drugim
oblastima. Ono što je video kad je otvorio, to mu je.
clipper.133gaston,
Khm, khm ...
Problem i pitanje od jednog kliperasa za drugove foxovce:
1) Nabavio sam (gresna mi kliperska dusa) Fox za Dos 2.5 with Dev. Kit.
Jedino sto su neki delovi PAK arhiva na disku osteceni, konkretno deo
za extended support lib (eslx.pa2) i knowledge base (psskb.pak).
(Boze, pardon, moderatore, nemoj da ponistavas ovu poruku, nije piratska
majke mi !)
Da skratimo, uspeo sam da instaliram Standard EXE supp.lib. i Stand-Alone
EXE (bez Extended EXE supp.lib.).
Sa standard suppportom je sve OK, ali kako i sta treba uraditi da se napravi
nezavisni EXE fajl ? U fox dir-u od exe fajlova imam sledece:
FOX
FOXPROX
FOXR
FOXPRO
PATCH - dovde znam sta je sta
FOXBIND - sta je ovo ?
WLINK8 - ovo je valjda Watcom linker
???? - gde je kompajler ???
Ima li kompajlera u avionu ?
Ako ga nema, ima li ga kod koga od vas ?
2) Ima li koja lepa knjiga za foksic ?
3) Ima li fox pro neki konfiguracijski fajl poput dibejzovog config.db ?
Ajd pa tako ... Nesa
P.S. Ako cika moderator vise voli Clipper nego foksic, onda sam ga trajno
na_ebo ...
clipper.134bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
clhlp23 zip 174678 ClipHelp v2.3, help sistem za Clipper 5.01/S87
ClipHelp is intended to help you incorporate attractive and
effective on-screen help in your applications, providing:
* An almost unlimited number of help topics.
* Topics size of from just a few lines to a virtually unlimited length.
* Easily incorporated context-sensitivity.
* Single and multi-user applications suitability.
* Full color potential - almost all of the 128 basic combinations and
their 128 flashing counterparts.
* Easily learned color editing facility.
* Ability to use text generated with your preferred ASCII text editor,
such as QEdit.
* Facility for capturing parts of your application's screen presentations
at run time and later inclusion in full color in the help file using
ClipHelp's color editor.
* Automatic generation of user manuals for your applications built from
ClipHelp's files, including automatically generated tables of contents
(Registered users version).
* Ability to customise help screen and index border text when ClipHelp
is incorporated in applications where a language other than English is
used (Registered users version).
Please note that in the Shareware version the size of help files is
limited to about 250 lines, or about 20 screen displays, which it is
hoped will be large enough for you to be able to thoroughly test
ClipHelp and decide whether you wish to become a Registered User.
clipper.135nbatocanin,
> Da li neko zna kako se moze prekoraciti ogranicenje od
> 4096 elemenata po dimenziji za ARRAY? [Bez gimnastike ;)
Nikako bez gimnastike ;) Možda je sledeće rešenje: razbiješ niz na
dovoljan broj podnizova od po 4096 elemenata. Zatim umesto poziva
elementa niza Big[i] koristiš funkciju Big(i) koja računa koji
element tražiš i daje ti odgovarajući. Ako ti je stalo do notacije,
možeš koristiti nešto ovako:
#translate Big[<x>] => BigFunc(<x>)
BigFunc ne mora biti funkcija - sve se može izvesti u jednoj liniji!
clipper.136mickeyl,
=> Sa standard suppportom je sve OK, ali kako i sta treba uraditi da se
=> napravi nezavisni EXE fajl ? U fox dir-u od exe fajlova imam sledece:
Da sa naredbom BUILD EXE! Prije toga ide BUILD PROJ ....
Pogledaj HELP!
=> 3) Ima li fox pro neki konfiguracijski fajl poput dibejzovog config.db ?
Da CONFIG.FP!
clipper.137cnenad,
ŁŁŁ ne saraduje sa DOS 6.0. E pa nije bas u pitanju sam DOS,
ŁŁŁ vec Double Space. Ako je on u memoriji, pocinju problemi sa
ŁŁŁ debagerom i program koji se prevede ne radi.
Koliko je ovo tacno ? Sta je sa programima koji se ne proveravaju
preko DEBUGER-a vec se sami startuju.
Mozda se meni program zaglavljuje zbog DBLSPACE-a ?
clipper.138zdule,
Jedan ortak iz vojske srpske krajne me je Ęzamolio
da bacim ovde neki njegov problem
HI,
IMAM PROBLEM KOD CLIPPER-A
AKO IMAM POLJE KOJE SADRžI PODATKE
OBIL_JEDIN := "MODRICA, BJELJINA, BANJALUKA, GRADACAC"
A UNESENI PODATAK ZA PRETRAZIVANJE JE
XOBIL_JEDIN := "BJELJINA"
KAKO DA PODESIM FILTER TAKO DA MI PRILIKOM BROWSA POKAZUJE I
TO POLJE
(AKO SAM BIO DOVOLJNO RAZUMLJIV)
SET EXACT OFF MI POKAZUJE SAMO AKO SE "BJELJINA" NALAZI NA
POžETKU POLJA. KAKO DA TO URADIM AKO SE ONO NALAZI NEGDE U
SREDINI.
clipper.139rjovic,
E ljudi jedan moj ortak se interesuje da li je i kako je moguće napisati
program
u Clipper-u koji će besprekorno raditi kao DOOR, i ako je neko to već radio,
interesuje ga da li je moguće uz pomoć nekog DOORWAY-a moguće običan program
pisan u Clipp-u startovati i koristiti remonte-vano.
Relja
clipper.140v.nesic,
> AKO IMAM POLJE KOJE SADRžI PODATKE
> OBIL_JEDIN := "MODRICA, BJELJINA, BANJALUKA, GRADACAC"
> A UNESENI PODATAK ZA PRETRAZIVANJE JE
> XOBIL_JEDIN := "BJELJINA"
> KAKO DA PODESIM FILTER TAKO DA MI PRILIKOM BROWSA POKAZUJE I
> TO POLJE
XOBIL_JEDIN $ OBIL_JEDIN
i to je to :)
clipper.141bulaja,
│ako imam polje koje sadrzi podatke
│ obil_jedin := "modrica, bjeljina, banjaluka, gradacac"
│a uneseni podatak za pretrazivanje je
│ xobil_jedin := "bjeljina"
│kako da podesim filter tako da mi prilikom browsa pokazuje i to polje
└───
SET FILTER TO (xobil_jedin $ obil_jedin)
clipper.142spantic,
> Mozda se meni program zaglavljuje zbog DBLSPACE-a ?
Pošto se niko nije javio, mislio sam da je reč o izolovanom problemu.
Isti je rešen kada se odustalo od DoubleSpace na tom računaru.
clipper.143.bale.,
> KAKO DA PODESIM FILTER TAKO DA MI PRILIKOM BROWSA POKAZUJE I
> TO POLJE
Evo ti jedna kratka procedura za pretraživanje po više uslova.
Sva polja (b[i]) moraju biti stringovi. Deo na početku do while
može da se debelo prepravi...
Napomena: Ja nisam Clipper programer, desilo mi se slučajno ;-)
function ffilter
privat retcode, k, w, z, e
retcode=.t.
e = .t.
k = 0
do while retcode .and. e
k = k + 1
if k = 5 <--- umesto 5 ukupan broj polja
e = .f.
endif
w = lower(ltrim(rtrim(b[k])))
z = field(k)
if .not. (w == "")
retcode = w$(lower(&z))
if &z == ""
retcode = .f.
endif
endif
enddo
return retcode
clipper.144ialeksic,
>>>Nikako bez gimnastike ;) Mozda je sledece resenje: razbijes niz na...
Da to je elegantna zaobilaznica, ali izgleda da bi u tom slucaju
za svaki takav BIG ARRAY moralo da se definise citav set odgovarajucih
funkcija za manipulaciju vektorima (koji su pandan standardnim kliper
funkcijama), jer kako ja vidim ime funkcije je vezano za ime vektora, ili
da se definise jos jedan parametar koji bi bio IME vektora.
BTW, pitam se koji je to faktor koji je dizajnera limitirao na 4096?
Za limit memo i char varijabli od 64K evidento da je to velicina DOS
segmenta, a ovde...? Nije valjda frljoka !? Celih, lepih 4096 mi lici
na to ;). Inace koliko se secam, to ogranicenje je ostalo od uvodjenja
APPAY-a jos u starom dobrom s'87.
clipper.145ialeksic,
Da li je neko u posedu dokumentacije za API:
C52G03B.NG Technical Reference za Clipper v5.2
Izgleda da tu ima NOVITETA. Sa svakom novom verzijom klipera promeni
se i EXTEND sistem. Dokle bre? :(
clipper.146bulaja,
│da li je i kako je moguce napisati program u Clipper-u koji ce besprekorno
│raditi kao DOOR, i ako je neko to vec radio, interesuje ga da li je moguce
│uz pomoc nekog DOORWAY-a moguce obican program pisan u Clipp-u startovati
│i koristiti remonte-vano.
└───
Uz pomoc DoorAway moguce je kao door koristiti svaki DOS program, pa
prema tome i onaj pisan u Clipper-u. Problem je sto je to resenje jako
sporo i prakticno vrlo slabo primenljivo. Ako se program napise tako da
ne koristi menije i slicne stvari vec forsira command line rezim, onda
ce to raditi brze i bice upotrebljivije. Moze se napisati i Clipper
program koji koristi svoje funkcije za rad sa COM portovima (koje se
moraju napisati:) ili usluge nekog fossil drajvera, npr. X00.SYS (ovo
poslednje bi trebalo da je najbolje resenje, ali nisam probao u praksi).
clipper.147jpavlov,
Da li neko ima (a hoće da ustupi) neki editor,
koji bi radio sa Clipper-om '87. Dovoljno je da se
iz njega mogu štapati izveštaji, i eventualno
izvršiti neka mala doterivanja, i naravno, da
može da prikaže više od 80 kolona. Znam da ima na
Sezamu editor napisan u Clipper-u 5.01... ali ja
se još nisam rastao od '87 iako ću to uskoro verovatno
uraditi.
Pozdrav svima i hvala unapred
clipper.148bulaja,
│Evo nove verzije funkcije NtoC za ispisivanje broja slovima.
└───
Ubaceno umesto stare u r:\ibmpc\clipper\num2str.zip :).
clipper.149bulaja,
Moze li se saznati aktivni index key (kao string), bez kopanja po NTX fajlu?
clipper.150rjovic,
██ Uz pomoc DoorAway moguce je kao door koristiti svaki DOS
██ program, pa
E kada ga već pomenu da li ga neko od prisutnih ima?
Relja
clipper.151neman,
Pokusaj sa
cKey := INDEXKEY( INDEXORD() )
neman
clipper.152dejanr,
==========
xbase/user.forum #787, from gregin, 128 chars, Tue Aug 17 13:17:53 1993
Comment(s).
----------
TITLE: BLINKER 3.0
Can anyone tell me, is Blinker 3.0 out yet ? They're advertising
free upgrades from Blinker 2, in DBAdvisor.
==========
xbase/user.forum #788, from irae, 320 chars, Thu Aug 19 03:05:10 1993
Comment to 787.
----------
It's supposed to be shown at Technicon next week. It is not out yet,
though I don't think it's too far away from out. I'd expect it in a
month or two. Also, I hear rumors that CA just bought ExoSpace and it
will be a $99 product availible from your local CA dealer, but only
rumors today, maybe real tomorrow.
Ira
clipper.153dejanr,
==========
xbase/press.release #7, from irae, 4002 chars, Thu Aug 19 20:25:56 1993
----------
TITLE: ExoSpace
Contact: Bob Gordon, (516)342-2391
COMPUTER ASSOCIATES ACQUIRES EXOSPACE TECHNOLOGY;
IMMEDIATELY CUTS PRICES 67 PERCENT
Software Runs CA-Clipper Applications In Protected Mode
ISLANDIA, N.Y., August 18, 1993--Computer Associates International, Inc.
has acquired ExoSpace, a product that allows CA-Clipper applications to
run in protected mode, and immediately announced significant price
reductions.
Taking full advantage of extended (XMS) memory, CA-Clipper/ExoSpace
provides everything developers need to give their CA-Clipper
applications access to more memory. This removes the 640K memory
barrier that has limited developers in the past.
ExoSpace is the result of collaboration between two CA-Clipper
third-party developers: ObjecTech, Inc. and SofDesign International,
Inc. Financial terms of the transaction were not disclosed.
"CA-Clipper developers have been asking for a protected-mode interface for
some time," said Marc Sokol, CA's vice president of product strategy.
"Designed by third-party developers, CA-Clipper/ExoSpace provides this
capability in an easy-to-use package that can significantly enhance
application performance. We have sharply reduced prices to bring this
useful technology to as wide a base of developers as possible."
CA announced the following price cuts:
*The suggested retail price for ExoSpace has been reduced
from $299 to $99 for users of CA-Clipper 5.2 (a 67
percent savings), and to $189 for users of CA-Clipper
5.01 (a 37 percent savings).
*For $299, users can receive CA-Clipper/ExoSpace and the
CA-Clipper 5.2 competitive upgrade, which includes a
free copy of CA-dBFast, CA-Clipper Tools or the
CA-Clipper/Compiler Kit for dBase IV.
Applications using CA-Clipper/ExoSpace can be loaded in as little as
256K of conventional DOS memory as long as sufficient extended memory is
available.
CA-Clipper/ExoSpace also simplifies application debugging by simplifying
memory management. Errors caused by memory corruption are easier to
spot because they are reported immediately rather than showing up after
the corruption has hidden its cause.
CA-Clipper/ExoSpace:
*Extends directly-addressable memory by up to 2500%--from
640K to 16 megabytes.
*Eliminates virtual-memory swapping, improving performance.
*Runs applications in as little as 256K of conventional
memory, leaving plenty of space for network shells,
terminal emulators, and other TSRs (Terminate and Stay
Resident Programs).
*Includes a protected-mode linker that automatically
overlays code and data as necessary.
*Can be added to existing applications by simply
relinking--often without code changes.
*Requires no runtime license fees.
System Requirements
CA-Clipper 5.01 or higher. IBM PS/2, AT, or 100% compatibles using the
Intel 80286, '386, '486, Pentium or compatible CPU; DOS 3.1 or higher; 2
megabytes of memory; hard drive, and 5.25 or 3.5 inch disk drive.
CA-Clipper/ExoSpace works with all networks compatible with DOS 3.1 or
higher; and with DOS Protected Mode Interface (DPMI), Virtual Control
Program Interface (VCPI), and XMS protocols.
-------
Computer Associates International, Inc. (NYSE: CA), with over 7,000
employees around the world, is the leading software company for
integrated systems, database management, business applications and
application development solutions. These programs operate across a full
spectrum of mainframe, midrange and desktop computers. Founded in 1976,
CA became a public company in 1981, and now serves most of the world's
major business, government, research and educational organizations.
Fiscal 1993 revenues exceeded $1.8 billion.
clipper.154ndragan,
/ MONOgrafija je MONO jer nema koautora :))
žovek voli stereo :)
clipper.155v.nesic,
> Moze li se saznati aktivni index key (kao string), bez kopanja po NTX fajlu?
indexkey()
clipper.156dr.grba,
>> (Boze, pardon, moderatore, nemoj da ponistavas ovu poruku,
>> nije piratska majke mi !)
└────┬──────┘
└─ Nije piratska? (((((:
>> Sa standard suppportom je sve OK, ali kako i sta treba uraditi da
>> se napravi nezavisni EXE fajl ?
Piše u knjizi koju tražiš, a to je...
>> 2) Ima li koja lepa knjiga za foksic ?
...ona koju si našao u kutiji sa programom (((:
clipper.157solajac,
****************************************************
NTOC.PRG (verzija iz AVGUSTA 93.-ispisuje milijarde)
****************************************************
Nekoliko sugestija:
- Program se od linije 133 - 137 nikada ne izvršava, tj. uslov u
liniji 133 je isti kao u liniji 114.
- Mislim da bi NTOC trebalo da prikazuje JEDANAESTMILIJARDI, a ne
JEDANAESTMILIJARDA, kao što je sada.
- Program pada (linija 217, BOUND ERROR) za iznos veći od 999 mi-
lijardi.
Predlog u vezi ovog pada: Pošto kraj, u vezi veličine iznosa,
ipak mora da postoji, predlažem da za iznos veći od 999 mili-
jardi NTOC vraća prazan string.
Pozdrav, Solajac.
clipper.158ndragan,
/ FOXBIND - sta je ovo ?
Ovo bi trebalo da potrpa više rutina u jedan fajl. Bilo je i u ranijim
verzijama i nikad nisam koristio.
/ WLINK8 - ovo je valjda Watcom linker
Jeste.
/ ???? - gde je kompajler ???
Ugrađen u foxprox.exe - otkad je FoxPro. Verovatno je negde u overleju.
Pročitaj Create Project iz helpa, pa malo prošetaj kroz ono što tamo
piše; kad kreneš sa tim praktično, isprobaj sve opcije koje dobiješ u
dijalogu za Build.
Ovo pričam na osnovu 2.0; 2.5 još nisam video.
/ 3) Ima li fox pro neki konfiguracijski fajl poput dibejzovog config.db
Config.fp - pročitaj Configuring iz helpa.
clipper.159bulaja,
││Uz pomoc DoorAway moguce je kao door koristiti svaki DOS program,
│└───
│E kada ga vec pomenu da li ga neko od prisutnih ima?
└───
Nije valjda da ga pingvini nemaju? O:)
R:\IBMPC\BBS\*.*
----------------------
drwy221 arj 194460 DoorAway 2.21, omogucava da svaki program radi kao door
clipper.160bulaja,
│cKey := INDEXKEY( INDEXORD() )
└───
Hvala i tebi i v.nesic-u. Znao sam da funkcija postoji al' je nisam
nigde nasao u NG, a gledao sam sam db*() a tamo nisam nasao :).
clipper.161bulaja,
│For $299, users can receive CA-Clipper/ExoSpace and the CA-Clipper
│5.2 competitive upgrade, which includes a free copy of CA-dBFast,
│CA-Clipper Tools or the CA-Clipper/Compiler Kit for dBase IV.
└───^ ^
Da li je neko video taj CA-Clipper Tools i sta je to uopste? :)
clipper.162dsolid,
Molim za pomoć. Zašto mi update C52c javlja grešku ept0036 za cld.exe
i cld.lib, a ostalo uradi?
clipper.163cnenad,
ŁŁŁ Mozda se meni program zaglavljuje zbog DBLSPACE-a ?
Prebacio sam program sa komprivanog drajva na obican i sve radi ko
podmazano. Dakle DBLSPACE smeta programima radjenim u kliperu.
clipper.164d.petrovic,
Ă> ██ Uz pomoc DoorAway moguce je kao door koristiti svaki DOS
Ă> ██ program, pa
Ă>
Ă> E kada ga već pomenu da li ga neko od prisutnih ima?
Call Snake Dance
clipper.165rjovic,
██ Nije valjda da ga pingvini nemaju? O:)
Da nemam ga okačenog kao arhivu, jer kada sam skidao WildCat skinuo sam i sve
fajlove koji su pristizali u to doba na BBS.
U svakom slučaju hvala na pomoći.
Relja
clipper.166gari,
HELP! HELP! HELP!
Pokushao sam da instaliram clipper 5.2c (update sa SEZAM-a)
i na PRVOM koraku (prevodjenje DBU-a) mi daje neke greshke!
Kada vecc nisam uspeo da to uradim pokushao sam sa PLL-om,
ali i tu mi je davao RAZNE greshke!
Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
unapred veoma zahvalan za bilo kakvu pomocc, Gari.
p.s. Imam US verziju sa upgrade-om na 5.2b, a kod DBU-a mi
prijavljuje nepoznatu promenljivu _C6 (linija 71 - view_err)
clipper.167nbatocanin,
> Pošto se niko nije javio, mislio sam da je reč o
> izolovanom problemu. Isti je rešen kada se odustalo od
> DoubleSpace na tom računaru.
Ja sam danas imao problema na računaru DOS 6.0 i DBL. Program je
trivijalan (5 naredbi), pa ću detaljnije ispitati stvar.
clipper.168nbatocanin,
> Da to je elegantna zaobilaznica, ali izgleda da bi u tom
> slucaju za svaki takav BIG ARRAY moralo da se definise
> citav set odgovarajucih funkcija za manipulaciju vektorima
> (koji su pandan standardnim kliper funkcijama), jer kako
> ja vidim ime funkcije je vezano za ime vektora, ili da se
> definise jos jedan parametar koji bi bio IME vektora.
Mislim da se sve može sakriti pretprocesorom, trebalo bi razmisliti.
> BTW, pitam se koji je to faktor koji je dizajnera
> limitirao na 4096?
Svaki element niza se predstavlja strukturom od 16 bajtova, a
16*4096 jeste 65536! Ovo nije provereno, nego pretprostavljam.
clipper.169nbatocanin,
> Moze li se saznati aktivni index key (kao string), bez
> kopanja po NTX fajlu?
IndexKey(0)?
clipper.170gari,
Svi su ti odgovorili indexkey(),
ali ako sam te dobro razumeo
tebi treba indexord()
pozdrav, Gari.
clipper.171gari,
ispravka: indexkey(indexord())
O):)
clipper.172v.nesic,
> Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
Ja sam uspeo. Pošto mi je prošljakalo iz prve teško da mogu da ti
dam bilo kakav savet. Ovo ti pišem samo da znaš da je UPGRADE ok
urađen.
clipper.173rjovic,
██ Call Snake Dance
Thanks.
Relja
clipper.174bulaja,
│Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
└───
Meni je sve proslo Ok, ali nisam uradio prekompajliranje jutilitija (a
install me nije nie pitao:). Ako je tu eventualni problem, onda uradi
glavni upgrade (exe, lib, source) pa onda rucno kompajliraj dok ne uspe :).
clipper.175d.petrovic,
Ă> Ja sam danas imao problema na računaru DOS 6.0 i DBL. Program je
Ă> trivijalan (5 naredbi), pa ću detaljnije ispitati stvar.
Meni je jedan program zaglavljivao bez pravila na 486/50 dok na svemu
ostalom radi. Tek sam sad ukapirao da je tamo valjda bio dblspace.
clipper.176ndragan,
/ FOXBIND - sta je ovo ?
Ovo bi trebalo da potrpa više rutina u jedan fajl. Bilo je i u ranijim
verzijama i nikad nisam koristio.
/ WLINK8 - ovo je valjda Watcom linker
Jeste.
/ ???? - gde je kompajler ???
Ugrađen u foxprox.exe - otkad je FoxPro. Verovatno je negde u overleju.
Pročitaj Create Project iz helpa, pa malo prošetaj kroz ono što tamo
piše; kad kreneš sa tim praktično, isprobaj sve opcije koje dobiješ u
dijalogu za Build.
Ovo pričam na osnovu 2.0; 2.5 još nisam video.
/ 3) Ima li fox pro neki konfiguracijski fajl poput dibejzovog config.db
Config.fp - pročitaj Configuring iz helpa.
clipper.177bulaja,
Locirao sam probleme u kompatiblinosti koji su mi se javili u nekim
programima pri prelazu sa Clipper-a 5.01 na CA-Clipper 5.2. Ovde sam
ranije opisao problem, ali da ponovom :). Program mi se stalno
zakucavao, nije pomagala ni promena onih simbola CLIPPER501 u CLIPPER52,
ni prekompajliranje svih biblioteka. Sumnjao sam da tu brlja najvise
NanFor, pa sam i njega celog prekompajlirao, ali nista nije pomoglo :(.
Posto sam sumnjao da je jedini preostali potencijalni problem (posto je
CA ocigledno dobro uradio svoj deo posla) u funkcijama NanFor Lib-a koje
mnogo vole da petljaju sa Clipper internim strukturama. Izbacivao sam
jednu po jednu FT_* funkciju i nakraju pronasao da je u mom slucaju
brljotine pravila FT_LastKey(). Ja sam je inace intenzivno koristio za
ciscenje keyboard buffera u MEMOEDIT() korisnickoj funkciji, sad cu
videti kako da se snadjem bez toga :(. Evo vam ovde opis i source
FT_LASTKEY() funkcije.
FT_LASTKEY()
Force LastKey() to return a programmer-defined value.
It is occasionally useful to force LastKey() to return a known value.
This is easily accomplishing by using the KEYBOARD command, but this
has undesireable side effects (the keyboard buffer is cleared, and
the keystroke is processed whether you needed it to be or not). This
function accomplishes the same task but without the side effects. It
does so by directly modifying the memory location where Clipper stores
the LastKey() value.
Some highly unorthodox programming techniques, not to mention rather
strange use of Clipper internals, was necessary to make this function
work. If this makes you uncomfortable, then don't use this function,
you worthless crybaby.
Public FT_LastKey
Extrn LastKey:Far
Extrn __ParNL:Far
Segment _NanFor Word "CODE"
Assume CS:_NanFor
Proc FT_LastKey Far
Mov AX,1 ; Specify param #1
Push AX ; Put on stack
Call __ParNL ; Get key value
Add SP,2 ; Realign stack
Mov CX,Seg LastKey ; Load segment of known symbol
Mov BX,Offset LastKey ; Load offset of known symbol
Mov ES,CX ; Load segment register
Mov BX,[Word Ptr ES:BX + 8] ; Get address
Mov [Word Ptr BX],AX ; Store key value
Mov [Word Ptr BX + 2],DX
Ret
Endp FT_LastKey
Ends _NanFor
End
clipper.178draganm,
*> ...ona koju si nasao u kutiji sa programom (((:
Zar ti ne znas da je tu knjigu greskom nije dobio uz originalni
paket, a sada zbog sankcija ne zele da mu je isporuce ? :)))
clipper.179nbatocanin,
> NTOC.PRG (verzija iz AVGUSTA 93.-ispisuje milijarde)
> Nekoliko sugestija:
Vidim da si se specijalizovao za kritiku NtoC-a ;)
> - Program se od linije 133 - 137 nikada ne izvršava, tj.
> uslov u liniji 133 je isti kao u liniji 114.
Da, potpuno si u pravu, ovo je greškom ostalo iz prethodne verzije.
> JEDANAESTMILIJARDI, a ne JEDANAESTMILIJARDA, kao što je
> sada.
Uh, izgleda da ću morati još jednom da ga analiziram.
> - Program pada (linija 217, BOUND ERROR) za iznos veći od
> 999 mi- lijardi.
žuj, ne bih upotrebljavao tako krupne reči ;) ("program" i "pada") za
sitnu proceduricu od par desetina linija: ako vam treba neka takva
izmena, lako ćete je i bez mene ubaciti.
clipper.180nbatocanin,
> Da li je neko video taj CA-Clipper Tools i sta je to
> uopste? :)
Imao sam Nantucket Tools I i II - to je najobičnija osrednja
biblioteka za Clipper. Sad, ovo novo, ne znam. Pretpostavljam da je
to samo nova verzija. Inače, veoma je zanimljivo da čak ni te
biblioteke nisu bile prohodne u novu verziju: svaki novi Clipper je
zahtevao novu biblioteku! šta sve živ čovek ne radi da bi zaradio
pare.
clipper.181nbatocanin,
> Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
Upgrade za Sezam-a automatski pravi prelaz sa *bilo* koje od verzija
5.2x na 5.2c. Jedini problem je da morate obezbediti programčić
PATCH i staviti ga u PATH, inače sve bude na izgled ok, ali se
upgrade ne uradi. Ovo programče imate u upgrade-u za 5.2a.
clipper.182gari,
> *bilo* koje od verzija
;) da si u NS odma' bih te pozvao da vidish da necce bash
tako "lako" da se uradi upgrade...
> morate obezbediti programcic PATCH i staviti ga u PATH
:) ne radim od juche na rachunarima:
Kod mene je instaliran DOS 5 sa svim patch-ovima za dos,
imam rezidentan ramdrive, smartdrv i gmouse, kulturno sam
prelazio sa verzije na verziju clipper-a (shto podrazumeva
da imam i PATCH.EXE), ali prelaz sa 5.2b na 5.2c kod mene
N E R A D I !
Pokushaccu da ponovo instaliram clipper 5.2 i onda ccu
ponovo probati. Ako ne radi, primoran sam da ostanem
na ovoj verziji i da chekam sledeccu instalacionu verziju
clippera, svakodnevno kunem one koji su pisali patch.exe
i instal.exe (5.2c) i prvom prilikom kada budem imao vishe
od mesec dana vremena i naidjem na neki iole kvalitetan
dbase like jezik (SAMO NE FOX), a to znachi skoro nikada,
precci ccu na njega zbog VELIKIH bug-ova koji se u poslednje
vreme pojavljuju kod CA, pa izdaje verzije clipper-a kao
da prodaje bombone ;>.
pozdrav, Gari.
p.s. ako budem uspeo da patchujem sa 5.2 na 5.2c onda ccu
JAVNO u ovoj konferenciji priznati da sam verovatno
ja napravio greshu u nekom od prethodnih prelazaka
i povlachim prelazak na drugi jezik O:)
clipper.183aquarius,
<> Da li je neko video taj CA-Clipper Tools i sta je to uopste?
Jeste vidjen je i nije bas ono sto misli nbatocanin, nego malo bolje.
Uostalom, ako pogledas fajl CATLSFUN.ZIP, prosudices sam. A kad smo
vec kod toga ima tu jos nesto FUN... :))))))
Introduction
──────────────────────────────────────────────────────────────────────────
CA-Clipper Tools contains over 800 functions which you can use to
develop CA-Clipper applications and system-level routines. These
functions give CA-Clipper programmers capabilities previously reserved
for C or Assembler programmers with detailed system knowledge.
In order to use working memory as economically as possible, virtually
all the functions are written in Assembler and are highly optimized.
This guarantees high speed with a minimal use of memory. This
efficiency is further supported by the modularity of the software within
the CA-Clipper Tools library.
──────────────────────────────────────────────────────────────────────────
~AquariuS~
catlsfun.zipclipper.185ttop,
> ;) da si u NS odma' bih te pozvao da vidish da necce bash
> tako "lako" da se uradi upgrade...
Evo ja sam skoro iz NS-a, a sada je tačno 04:10a dan nedelja,
i sve je radilo kako treba :) KUC KUC. Išao je upgrade sa 5.2b
na 5.2c bez problema.
Ako ima problema ti me mail na SEZAM il' još bolje na RHINOCEROS
pa da se dogovorimo :) .
Pozdrav , Ttop.
clipper.186aquarius,
<> Da li je neko video taj CA-Clipper Tools i sta je to uopste?
Evo ga i .NG ! :)
Ako ima daljih pitanja, tu sam.
~AquariuS~
catoolng.zipclipper.187aquarius,
<> Imao sam Nantucket Tools I i II - to je najobicnija osrednja
<> biblioteka za Clipper. Sad, ovo novo, ne znam. Pretpostavljam
<> da je to samo nova verzija.
CATLSFUN.ZIP uz poruku 11.183
~AquariuS~
clipper.188gari,
J A V N O !!!!
Priznajem da sam najverovatnije ja
neshto pogreshio prilikom
upotrebe Clipper-a 5.2b verzije i
nisam bio sposoban da instaliram
novu verziju.
Izvinjavam se svima na optereccenju
PAD-a i hvala na svim sugestijama...
pozdrav, Gari.
p.s. Instalirao sam ponovo
Clipper 5.2 i sa njega
preshao bez problema :)
clipper.189nbatocanin,
> ispravka: indexkey(indexord())
IndexKey(0) daje izraz za *aktivan* indeks, znači, isto to.
clipper.190nbatocanin,
> Introduction
> ───────────────────────────────────────────────────────────
> CA-Clipper Tools contains over 800 functions which you can
> use to develop CA-Clipper applications and system-level
> routines.
> ...
> In order to use working memory as economically as
> possible, virtually all the functions are written in
> Assembler and are highly optimized.
Kao što rekoh: u dlaku prepisan tekst iz Nantucket Tools I i II.
Pretpostavljam da su i funkcije tu negde. Da ne bude zabune: ima tu
veoma lepih funkcija, ali me veoma ljuti što to već nije u
CLIPPER/LIB!
clipper.191nbatocanin,
>> morate obezbediti programcic PATCH i staviti ga u PATH
>
> :) ne radim od juche na rachunarima:
Taman posla da to mislim i nadam se da nisam tako zvučao. I ja sam
imao isti problem sa upgrade za 5.2c: nisam imao PATCH, a
program za instalaciju uopšte nije prijavio nikakvu grešku -
jednostavno nije uradio posao!
> Pokushaccu da ponovo instaliram clipper 5.2 i onda ccu
> ponovo probati.
Ovo si trebao prvo da probaš. Uzgred, šta ti javlja PATCH? On bi
trebao da javi broj datoteka koje iz nekog razloga nije uspeo da
obradi.
> ... i prvom prilikom kada budem imao vishe
> od mesec dana vremena i naidjem na neki iole kvalitetan
> dbase like jezik (SAMO NE FOX), a to znachi skoro nikada,
> precci ccu na njega zbog VELIKIH bug-ova koji se u
> poslednje vreme pojavljuju kod CA, pa izdaje verzije
> clipper-a kao da prodaje bombone ;>.
Puno sreće u traženju idealnog DBMS-a, trebaće ti. A zašto se
ograničavaš na xBase? Kad je bal nek je maskenbal: probaj i druge
proizvode, možda je na drugoj strani ono pravo.
Što se tiče grešaka u Clipper-u, slažem se da se CA (odnosno, ekipa
koja radi Clipper) ponaša malo neozbiljno. Ipak, greške na putu
5.2-5.2c nisu baš katastrofalne, mada ima neprijatnih. Bolje je što
redovno izlaze dodaci, nego da se CA pravi lud i ponaša kao da nema
grešaka.
Moja taktika je da uvek sačekam malo sa primenom nove verzije i
tek onda počnem da je upotrebljavam, zbog eventualnih bagova.
clipper.192aquarius,
<> Kao sto rekoh: u dlaku prepisan tekst iz Nantucket Tools I i
<> II. Pretpostavljam da su i funkcije tu negde. Da ne bude
<> zabune: ima tu veoma lepih funkcija, ali me veoma ljuti sto to
<> vec nije u CLIPPER/LIB!
───────────────────────
A sta bi oni onda prodavali ? :)
~AquariuS~
clipper.193aquarius,
<> J A V N O !!!!
<> Priznajem da sam najverovatnije ja
<> neshto pogreshio prilikom
<> upotrebe Clipper-a 5.2b verzije i
<> nisam bio sposoban da instaliram
<> novu verziju.
Fata je Fata, al dvaput je dvaput. :)
Ostajes li na Clipper-u ?
~AquariuS~
clipper.194ndragan,
/> JEDANAESTMILIJARDI, a ne JEDANAESTMILIJARDA, kao što je
/ Uh, izgleda da ću morati još jednom da ga analiziram.
Da ja pogledam i onaj naš, trebalo bi da ispisuje "milijarada" :).
Elem, jedino se sećam da radi sa petnaest cifara... kako se izgovara ono
čudo sa osamnaest, pa da dodam malo koda u slovima.prg?
Juče sam načuo da je avgustovska inflacija 1680%, što dignuto na godinu
znači petnaest nula. Posle sam čuo da, kao, nije toliko nego 1860%.
clipper.195bulaja,
Postoji li neka funkcija koja vraca file name aktivne baze podataka
(.DBF)? Ne treba mi ALIAS(), vec bas zelim da saznam pun naziv datoteke.
Npr. ako je baza otvorena sa
USE "File.DBF" NEW ALIAS xFile
kako da saznam ime datoteke ("FILE.DBF")? Gledao sam svuda i nigde nisam
uspeo da nadjem slicnu funkciju, a bilo bi neverovatno da je nema :).
clipper.196gari,
> ===============================
> 9.962 PC.PROG.2:clipper
> bulaja, 18.07.Ned 10:10, 2257 chr
> ---------------------------------------------------------
> Treba li vam u Clipper-u nesto nalik na LIST, za pregled dugackih
> tekstualnih datoteka. Nista lakse :), uz koriscenje TBrowse i
NanFor
> funkcija za File I/O (FT_F*). Radi sa neograniceno dugackim ...
Probao sam prvo da napravim sa clipper funkcijama
fopen, freadstr, fseek i fclose, medjutim davalo mi
je cudne rezultate...
Onda sam raspakovao NANFOR, preveo bulajin program...
...i !!! gle cuda !!! daje potpuno ISTE rezultate
kao i sa clipper funkcijama !@#%@ :(
Posto sam pokusavao na SVE (meni znane) moguce nacine
da pokrenem da to proradi, dosao sam do nicega. :(
Uz ovu poruku saljem i zip fajl koji sadrzi:
bulaja.prg i proba.txt
(prog bulaja.prg bi trebao da prikaze (list) fajl proba.txt)
Ako bi mogao Bulaja ili ko je vec to uradio da vidi ovo sto
saljem jer ne znam gde sam pogresio...
pozdrav, Gari.
p.s. Ovo mi je dosta hitno jer sam vec promenio u svojoj
biblioteci staru funkciju za prikaz fajla pa sada
ne mogu da instaliram korisnicima nove verzije software-a...
bu_list.zipclipper.197aquarius,
Zna li neko tacno, cemu ovo sluzi ? :(
/*
Directory of C:\CLIPPER5\OBJ
NTXLOCK2 OBJ 302 06-10-93 5:22p
CDXLOCK OBJ 6679 08-06-93 5:23p
*/
~AquariuS~
clipper.198ndragan,
/ kako da saznam ime datoteke ("FILE.DBF")? Gledao sam svuda i nigde
Nem' pojma. U Foksu je to funkcije Dbf(), a postojala je još u dosta
starim verzijama, pa je moguće da se vuče još od Dbašića, po čemu mislim
da treba da je ima i u Kliperu.
clipper.199snemcev,
>> kako da saznam ime datoteke ("FILE.DBF")? Gledao sam svuda i nigde
>> nisam uspeo da nadjem slicnu funkciju, a bilo bi neverovatno da je
>> nema :).
Kaži "dragička"! NEMA! Jedino rešenje je korišćenje univerzalne funkcije
za otvaranje datoteka, pa da ona u nekom nizu pamti imena, a da posebna
funkcija na osnovu broja radne oblasti, vraća zapamćen naziv.
clipper.200bulaja,
│Nem' pojma. U Foksu je to funkcije Dbf(), a postojala je jos u dosta
│starim verzijama, pa je moguce da se vuce jos od Dbasica, po cemu mislim
│da treba da je ima i u Kliperu.
└───
Postoji DBF() i u Clipperu (i spada u obsolete items, preporucuje se
koriscenje ALIAS()), ali ona vraca samo alias a ne ime baze.
clipper.201bulaja,
│Kazi "dragicka"! NEMA! Jedino resenje je koriscenje univerzalne funkcije
│za otvaranje datoteka, pa da ona u nekom nizu pamti imena, a da posebna
│funkcija na osnovu broja radne oblasti, vraca zapamcen naziv.
└───
:( Ovo pamcenje mi nicemu ne sluzi posto pravim funkciju opste namene,
ostaje mi jedino da se i ime DBF fajla prenosi kao parametar.
clipper.202neman,
> ŁŁŁ Mozda se meni program zaglavljuje zbog DBLSPACE-a ?
>
> Prebacio sam program sa komprivanog drajva na obican i sve
> radi ko podmazano. Dakle DBLSPACE smeta programima
> radjenim u kliperu.
Pa da, pise negde u uputstvu za DBLSPACE da ga ne treba koristiti za
WINDOWS TMP datoteku(e). Verovatno se isto odnosi i na Clipper.
neman
clipper.203neman,
> Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
Jesam :), a kod druga i sa 5.2 -> 5.2c
neman
clipper.204neman,
> program za instalaciju uopste nije prijavio nikakvu gresku
> - jednostavno nije uradio posao!
Ipak je prijavio gresku. Ispisivao je na praznom ekranu -1, a kad uradi
sve ok ispisuje 0. Ko je razumeo, shvatio je :)
neman
clipper.205bulaja,
│p.s. Ovo mi je dosta hitno jer sam vec promenio u svojoj biblioteci staru
│funkciju za prikaz fajla pa sada ne mogu da instaliram korisnicima nove
│verzije software-a...
└───
Greska ti je banalna :). U bulaja.prg u liniji 27 stoji
FB:skipBlock := { |n| FT_FSkip(n+1) }
^^^
a treba (n) umesto (n+1) :), tj.
FB:skipBlock := { |n| FT_FSkip(n) }
clipper.206dr.grba,
Mnogi progameri, u koje spada većina nas, su skloni da preskaču drugarske
sugestije kojih ima na tone po raznim tutorijalima, NG i Hypertext fajlovima,
istovremeno se ljuteći zašto "baš ovo nedostaje u jeziku, kakva glupost,
sad moram to sam da rešavam....."
Ponekad su, naravno, krive i razne anomalije čiji uzrok može biti različit.
Najgore je kad postoji neki feature koji nije dokumentovan, a može mnogo da
znači.
I tako.... koliko puta ste se ljutili što je alert prozor crven? Koliko
puta ste pobesneli što se na mono VGA monitorima ne razaznaje trenutno
aktivna opcija?... I što ovo ne možete da promenite?.... STOP!
Možete da promenite....
Naravno, niste znali za (omaškom nedokumentovanu) opciju funkcije ALERT()
kojom možete promeniti boju alerta. Konkretno:
═══════ Clipper 5.01 vs 1.29 Anomalies (#03) > Menu > Anomalies > ... ════
────────────────────────────────────────────────────────────────────
ALERT() Undocumented features.
Clipper Version 1.29 dtd 04/15/91.
Problem Statement
ALERT()'s prompt is limited to 4 choices. There is also an
undocumented third parameter, cColorString, which may be a color
pair such as "W/N".
Cause
Documentation omission.
────────────────────────────────────────────────────────────────────
Poreklo podatka je NG fajl sa Compuserve mreže. Na Sezamu se ovaj fajl može
naći pod generalijama R:ĐIBMPCĐCLIPPERĐCL5103.ZIP
Skinite ga i (ne kao ja ): ) pročitajte, biće nečeg i za vas... RTFM! (;
clipper.207nbatocanin,
> Ipak je prijavio gresku. Ispisivao je na praznom ekranu
> -1, a kad uradi sve ok ispisuje 0. Ko je razumeo, shvatio
> je :)
al' je vidljivo ;) Ma to sam i ja video, al nije mi jasno što ne kaže
srpski šta mu fali :)
clipper.208aquarius,
<> ═══════ Clipper 5.01 vs 1.29 Anomalies (#03) > Menu >
<> Anomalies > ... ════
<> ───────────────────────────────────────────────────────────────
<> ALERT() Undocumented features.
<>
<> Clipper Version 1.29 dtd 04/15/91.
...
<> Documentation omission.
--> Report Name: CL5103 ==> Report Date: 08/22/91
Author: Compiled by Jo W. French dba Practical Computing of La Canada
Ovo je bila godina '91, a sad je '93, CA i dalje mudro cuti. I sto je
najgore CL5103.NG ne sadrzi sve. A sta je sa CA-Clipper 5.20 (a,b,c).
"Documentation omission" se malo ofucalo ! :))))
LOCAL n
n := ALERT( "Radi li CA-Clipper 5.20c pouzdano", ;
{ "Da", "Ne", "Mozda", "Cekamo CA 5.20d" }, ;
"GR+/R", ;
)
Koliko je n ?
~AquariuS~
clipper.209dr.grba,
>> Koliko je n ?
Valjda je po defaultu 1. Jeste? Nije? ):
clipper.210vision,
Hi.
Koristim Clipper '87 i interesuje me da li neko zna kako da
kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
iskljucenĘ).
Pozdrav.
clipper.211bulaja,
│Koristim Clipper '87 i interesuje me da li neko zna kako da
│kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
└───
Nije nikakav problem napisati funkcije za to, imas ih npr. u Nanforum
Toolkit-u (za Clipper 5.x).
│I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
│iskljucenĘ).
└───
SetCursor() bez argumenata vraca stanje kurzora (0 - off, 1+ - on).
clipper.212dejanr,
>> I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
>> iskljucen).
Kažeš A=SETCURSOR() i vrati ti stanje kurzora.
>> Koristim Clipper '87 i interesuje me da li neko zna kako da
>> kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
Teško će to ići a da bude iole brzo. No, mogu se napraviti fini mali
asemblerski potprogramčići koji to rade. Meni je nedavno trebao AND pa
ti šaljem njega (doduše, za clipper 5):
PAGE ,132
NAME razno
include extenda.inc
CODESEG RAZNO
DATASEG
CLpublic <LTEST>
; *********************************************************
; Sintaksa: rez = ltest(broj, maska) : log
;
CLfunc log ltest <int broj, int maska>
CLcode
mov ax,broj
mov bx,maska
mov cx,false
and ax,bx
jz lor_end
mov cx,true
lor_end:
CLret ax
END
clipper.213dr.grba,
>> I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
>> iskljucenĘ).
setcursor(0) - nema kursora
setcursor(1) - normalan, underscore
setcursor(2) - pola bloka
setcursor(3) - pun blok
clipper.214snemcev,
>> Nije nikakav problem napisati funkcije za to, imas ih npr. u Nanforum
>> Toolkit-u (za Clipper 5.x).
Iste su čudo od sporosti! Još jednom potvrđeno pravilo - ako hoćeš
matematiku u Clipper-u, uradi je u C-u.
PS C ne znam!
clipper.215eotek,
H E L P ! :)
Moze li mi neko pomoci oko sledeceg:
- treba da se u okviru clipper aplikacije omoguci slanje
podataka faks-modemom na drugi racunar (dakle, prikaz izvestaja
pored opcija:ekran,stampac,fajl I NA TEL. BROJ). Dakle trebalo
bi da se podaci mogu poslati na MODEM I/ILI na FAKS. Pri tome
ne dolazi u obzir da se koriste drugi programi (telix ili sl.).
Najlepse je - pri tome - ( >>) ) sto to jos treba da radi u
pozadini (dakle korisnik nastavlja sa radom, a u pozadini se
bira(ju) broj(evi), salje i na kraju se prikaze nekakav
izvestaj).
- Ovo bi trebalo da bude moguce uz neke dodatne LIB (da li ?,
pregledao sam ih dosta, ali su vise nego traljave, a u opisu
jedne (cini mi se EXPAND 3.0) stoji i : pogledajte u drugim LIB
koje to bolje rade !!)).
- Ili je moguce napisati u C, ako da - koje LIB i koji C
(DOS only please). Ne upucujte me - pls - na ASM.
Zahvalan do neba (a i sire)
eotek
clipper.216gari,
║ │p.s. Ovo mi je dosta hitno jer sam vec promenio u svojoj
║ │biblioteci staru funkciju za prikaz fajla pa sada ne mogu
║ │da instaliram korisnicima nove verzije software-a...
║ └─────────────────────────────────────────────────────────
║Greska ti je banalna :). U bulaja.prg u liniji 27 stoji
║
║ FB:skipBlock := { |n| FT_FSkip(n+1) }
║ ^^^
║a treba (n) umesto (n+1) :), tj.
║
║ FB:skipBlock := { |n| FT_FSkip(n) }
╚════════════════════════════════════════════════════════════
Greska mi NIJE NIKAKO banalna, nego je u pitanju to sto
sam u tom trenutku trazio resenje da bi ovo proradilo!
Posto sam zaboravio da posaljem staru verziju, onda si
dobio ovu RADNU. Ako bi stavio po tvome to bi davalo
kriminalne rezultate.
U medjuvremenu (posto niko nije dao nista valjano za ovo)
evo resenja koje SASVIM RADI:
Umesto:
FB:skipBlock := { |n| FT_FSkip(n) }
Treba:
FB:skipBlock := { |n| FILE_LINE_SKIP(n) }
I dalje:
FUNCTION FILE_LINE_SKIP( nSkip )
LOCAL retVred := FT_FRecno()
FT_FSkip( nSkip )
RETURN ( FT_FRecno()-retVred )
pozdrav, Gari.
p.s. Nadam se da ce ovo bar nekom pomoci, a izvinjavam se
onima koji su cekali na resenje jer sam imao frku
na poslu cca nedelju dana...
clipper.217nbatocanin,
> (doduše, za clipper 5):
>
> PAGE ,132
> NAME razno
> include extenda.inc
Extend sistem je potpuno kompatibilan u verzijama S'87 i 5.x.
clipper.218nbatocanin,
> - treba da se u okviru clipper aplikacije omoguci slanje
> podataka faks-modemom na drugi racunar (dakle, prikaz
> izvestaja pored opcija:ekran,stampac,fajl I NA TEL. BROJ).
Nemam iskustva sa slanjem faksova iz Clipper-a. Ali, čini mi se da je
jedno od prihvatljivih rešenja DesqView. Tako bi se ratosiljao veoma
zeznutog posla pisanja programa koji radi u pozadini.
clipper.219hercog,
Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Sale
clipper.220dr.grba,
>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Nisam siguran da li razumem pitanje, ali dovoljno je navesti ih na vrhu
.LNK fajla. Na primer:
BLINKER DEMONSTRATION DATE 1993/12/31
BLINKER DEMONSTRATION MINUTES 15
kaže da moj demo program možeš koristiti 15 minuta u cugu, a do kraja
godine. Naravno, ispituje se sistemski datum.
clipper.221gari,
Da, a postoje i funkcije BliDemMin(), BliDemDte(),... koje
citaju koliko je ostalo minuta, dana i poziva procedura do
kraja demonstracije, a ako ih pozoves sa parametrom,
onda se to povecava, za br. minuta, dana iili poziva.
Naravno, treba da znas da ako hoces te funkcije da
koristis u programu, onda MORAS da se opredelis definitivno
za Blinker, da vodis racuna da u .LNK fajlu za svaku od
tih funkcija mora da postoji i komanda za linkovanje
(vidi poruku 11.220), a ukoliko se pojavi nova verzija
Clipper-a koju Blinker koji imas nece moci da izlinkuje,
onda ti je jasno da moras ili da cekas novu verziju Blinker-a,
ili da menjas sve sto ti zavisi od njega...
Moj ti je savet da Blinker koristis SAMO u razvoju aplikacije i
izradi DEMO verzija programa, a izvrsne verzije da pravis
sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
a korisniku ipak dajes verziju programa koja zahteva manje
RAM memorije od verzije linkovane Blinker-om.
pozdrav, Gari.
clipper.222v.nesic,
Imam Clipper 5.2, i Blinker 2.0 koji bih da koristim sa njim.
Da li rade zajedno, ili mi treba neki noviji B ?
clipper.223dejanr,
>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Dosta jednostavno, samo u link fajlu kažeš BLINKER DEM DATE 1993/10/01 i
program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola sata.
Mislim da je to sve dosta detaljno i lepo opisano u Norton Guide-u koji
ide uz Blinker.
Preporučujem takođe prikaz Blinker-a iz "Računara 90" koji je napisao
nbatocanin - u okviru njega diskutuju se i te zanimljive nove opcije.
clipper.224dejanr,
Rade zajedno, bar koliko sam ja primetio.
clipper.225dejanr,
>> Moj ti je savet da Blinker koristis SAMO u razvoju aplikacije i
>> izradi DEMO verzija programa, a izvrsne verzije da pravis
>> sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
>> a korisniku ipak dajes verziju programa koja zahteva manje
>> RAM memorije od verzije linkovane Blinker-om.
Možda, ali tako si se lišio nekih lepih BLINKER opcija kao swpruncmd...
Ja već duže vreme sve linkujem Blinker-om, samo u konačnim verzijama
stavim INCREMENTAL OFF. Do sada nije bilo problema (kuc-kuc :). Mislim
da sam RTLINK čak obrisao sa diska.
clipper.226snemcev,
>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i
>> DATE?
U .lnk fajl ubaci (po želji)
BLINKER DEMONSTRATION MINUTES n
BLINKER DEMONSTRATION DATE dd/mm/yy
BLINKER DEMONSTRATION CALLS n
Blinker sam vodi računa da ovi limiti budu ispoštovani za vreme rada
programa.
clipper.227nesa,
Dobio sam "Blink Ink", The Newsletter of Blinker.
Možda već znate ali ću ipak prepisati par redaka:
Blinker 3.0 Details
-------------------
■ Povećana brzina linkovanja
■ Dinamic overlay
■ Integrisan memory swap i 286 DOS extender
(with no runtime royalities)
(Dakle, nakon linkovanja prevazilazimo magičnu brojku DOS
limita od 640 kb)
DOS Extender izvršava programe u protected modu povećavajući memoriju
("adresibilnu" :)) od 1Mb do 16Mb!
Program linkovan Blinkerom 3.0 automatski detektuje da li mašina
ima 286 mikroprocesor i memorije da radi u protected modu. Ako nema
izvršiće se klasično (ko do sada, prim.prev. :))) ) upotrebom
dinamic overlaj-a.
Blinker 3.0 kreira Microsoft Windows - kompatibilne .EXE brzo
i lako za programe pisane u Microsoft Visual C++, C, C++, Assembler,
Fortran, Pascal, Watcom C, Symantec C++, CA Clipper 5.x
(koristi Clip4Win), Borland C, C++ i Assembler.
^^^^^^^^
|||||||| da li je to moguće :)))
Blinker 3.0 podržava CodeView 4.x. Tu je i uputstvo na 400
strana i NG naravno.
Ako vas interesuje, mogu izdvojiti i neka pitanja i odgovore
vezane za probleme sa dosadašnjom verzijom.
Lično se nadam da će nbatocanin ili bulaja uskoro dati neki
prilog o 3.0 Blinkeru!
clipper.228snemcev,
>> BLINKER DEMONSTRATION DATE dd/mm/yy
Sorry, u žurbi pogreših. Tačno je
BLINKER DEMONSTRATION DATE yyyy/mm/dd
clipper.229snemcev,
>> Lično se nadam da će nbatocanin ili bulaja uskoro dati neki
>> prilog o 3.0 Blinkeru!
Lično se nadam da će isti ubrzo stići do nas :))))
clipper.230mickeyl,
=> sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
=> a korisniku ipak dajes verziju programa koja zahteva manje
=> RAM memorije od verzije linkovane Blinker-om.
Ne bih se složio sa ovom tvrdnjom. Moji programi linkovani s
BLINKER-om ne zahtjevaju više od 150 KB RAM-a.
Primjera radi EXE verzija je dugačka preko 750 KB, a program
linkovan sa BLINKER-om zahtjeva samo 127 KB RAM-a. Naravno
koristim CL...MAX.LNK pri linkovanju.
clipper.231hercog,
**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola
**> sata.
Meni prijavljuje invalid input command, tj grešku 1103
Sale
clipper.232bulaja,
│Meni prijavljuje invalid input command, tj gresku 1103
└───
Bug. O:)
clipper.233dr.grba,
>> Ako vas interesuje, mogu izdvojiti i neka pitanja i odgovore
>> vezane za probleme sa dosadašnjom verzijom.
Sad sledi brdo mail poruka tipa "E, a da ti pošaljem diskete i papir
za kopiranje..." (((:
clipper.234hercog,
**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola
**> sata.
Meni prijavljuje invalid input command, tj grešku 1103
Sale
clipper.235snemcev,
Ima li neko LLIBCA.LIB? Pa još da je voljan da mi ga bači i mail...
clipper.236bulaja,
│Ima li neko LLIBCA.LIB? Pa jos da je voljan da mi ga baci i mail...
└───
He he, treba i meni :). Bas sam ga pre neki dan video u spisku fajlova
na Hekom BBS-u (znaci mozda je PD!?:), pa ce se valjda dovuci odatle :).
clipper.237snemcev,
>> Meni prijavljuje invalid input command, tj grešku 1103
Ajd' napiši šta si tačno otkucao, pa da vidimo gde je greška.
clipper.238arazumenic,
Da li neko zna kako da u MEMOEDIT() funkciji ograničim broj redova?
Naime, potrebno mi je da u zavisnosti od nekih parametara maksimalni
broj redova bude odredjen broj (zbog formatizovanja štampe).
Saša
clipper.239mickeyl,
Imam MSC5.0 i hoću da napravim funkciju u c-u za clipper. Kompajliram
kako mi piše u knjizi, ali problem se javlja pri linkovanju. Naime
linker mi traži LLIBCA.LIB, koju ja namam (imam LLIBCE i LLIBCR), ali
od ove ni traga. Inače koliko znam trebao bi da imam kompletan MSC ver
5.0, ali eto nama ove LIB datoteke. Je li dođe ova datoteka uz MSC ?
clipper.240milanv,
Prilikom prevoda nekih svojih starih programa sa C'87 na
5.01 naišao sam na dve nekompatibilnosti, o kojima do sada nisam
ništa čuo iz iskustva drugih:
1. Sledeća, pojednostavljena, konstrukcija, koja je sasvim
OK radila na 87-ici, u C_5.01 se, uz poruku "Error BASE/1077
Argument error: .NOT.", zakucava u prvoj dole prikazanoj liniji:
--------------------------------------------------
IF .NOT. Stamp_ok()
Alarm(tra-la-la)
ELSE
Stampaj(tra-la-la)
ENDIF
FUNCTION Stamp_ok
IF ISPRINTER()
RETURN (.T.)
ELSE
č 0,40
? CHR(7)
č 0,50 SAY 'Proverite stampac !'
INKEY(15)
IF LASTKEY() = 27
č 0,50 SAY ' '
RETURN (.F.)
ENDIF
IF ISPRINTER()
č 0,50 SAY ' '
RETURN (.T.)
ELSE
? CHR(7)
INKEY(15)
IF LASTKEY() = 27
č 0,50 SAY ' '
RETURN (.F.)
ENDIF
IF ISPRINTER()
č 0,50 SAY ' '
RETURN (.T.)
ENDIF
ENDIF
ENDIF
-----------------------------------------------------
Zašto
2. Sledećih 15 redova ne staje u svaki red ekrana, već u
svaki drugi.
DISP OFF NEXT 15 Left(neko_polje,79)
Naravno, postoji rešenje da se dužina ispisa skrati na 78
karaktera. Zašto?
clipper.241bulaja,
│ 1. Sledeca, pojednostavljena, konstrukcija, koja je sasvim
│OK radila na 87-ici, u C_5.01 se, uz poruku "Error BASE/1077
│Argument error: .NOT.", zakucava u prvoj dole prikazanoj liniji:
│ IF .NOT. Stamp_ok()
└───
Logicno :). Uleti u CLD pa pogledaj za koju ti to vrednost argumenta
tj. funkcije Stamp_Ok() (koja ce inace moze napraviti mnogo lepse:)
javlja greska, ali unapred pretpostavljam da je to jedan NIL. Ako
pogledas funkciju Stamp_Ok(), videces da je moguce da se prodje kroz
sve IF-ove a da ni jedan od uslova ne bude zadovoljen (ako si cekao
30 sekundi ili dva puta pritisnuo taster, a pri tome je stampac
ostao jos uvek off line), sto znaci da funkcija vraca NIL. Ako ti je
ovo kompletna funkcija, bice to dovoljno da na kraj dodas RETURN
(.F.) (u principu funkcija uvek treba da vraca neku default vrednost
:), ili da dodas taj return u ELSE u poslednjem IF. Pretpostavljam
da je u ovome problem, a ti proveri :).
clipper.242nbatocanin,
> Lično se nadam da će nbatocanin ili bulaja uskoro dati
> neki prilog o 3.0 Blinkeru!
I oni se nadaju ;)
clipper.243cnenad,
ŁŁŁ**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i
ŁŁŁ**> radi pola
Startujem takav program, radim s njim pet minuta, znaci ostaje jos 25 ?
clipper.244gari,
> Startujem takav program, radim s njim pet minuta, znaci ostaje
> jos 25
Ne, nego SVAKI put kada se startuje program imas 30 min.
Ako mislis da je to previse da das korisniku
kao demo verziju, a onda mu ti daj 2 min. ;)
pozdrav, Gari.
clipper.245toma,
Mali problem.
Kako u Clipper-u pročitati iz kog direktorijuma je program učitan?
clipper.246magician,
=> Kako u Clipper-u pročitati iz kog direktorijuma je program učitan?
Za slične stvari koristim funkciju iz Nanforum-a 'FT_ORIGIN()'. Ona
ti vraća drive, dir i filename.
clipper.247snemcev,
>> Startujem takav program, radim s njim pet minuta, znaci ostaje jos 25 ?
Jok, u svakoj seansi imaš po 30 minuta. Posle isteka tog vremena,
program prekida sa radom.
clipper.248ndragan,
/ Naime, potrebno mi je da u zavisnosti od nekih parametara maksimalni
/ broj redova bude odredjen broj (zbog formatizovanja štampe).
Da li si razmišljao o drugačijem metodu štampanja memo polja? Zašto ne
bi memo polje imalo neograničenu dužinu?
clipper.249snemcev,
>> Za slične stvari koristim funkciju iz Nanforum-a 'FT_ORIGIN()'. Ona
>> ti vraća drive, dir i filename.
I Expand 3.0 ima odgovarajuću funkciju - XPmyName()
clipper.250jtitov,
> Dobio sam "Blink Ink", The Newsletter of Blinker.
DOBIO? Hoces reci pozajmio. Nadam se da ce vlasnik to dobiti nazad... :)
clipper.251d.petrovic,
Jel vam poznato kako izgleda funkcija za pakovanje u jedrenjaku?
E, pa u jednom programu koji ima cija se baza sastoji od 11 .DBF i
jednog .DBT fajla ta funkcija pravi 11 .DBF i 11 .DBT fajlova.
Eeeeee, ali nisam ja to zabrljao. To se desava na 486/50 i jos nisam
ustanovio zbog cega, ali kad se ocisti autoexec i config onda vise ne
brljavi. QEMM 7.01 ili nesto drugo... videcu pa cu vam javiti
clipper.252arazumenic,
-> Da li si razmisljao o drugacijem metodu stampanja memo polja? Zasto ne
-> bi memo polje imalo neogranicenu duzinu?
Evo zasto:
Kod stamapnja ponude za bilo sta (robu, usluge itd.) znam da mi zaglavlje
zauzme 12 - 20 redova. Onda u zavisnosti od toga sta se stampa, moze se
zauzeti jos 4 - 30 redova. Dodaj na to gornju i donju marginu od po 6 redova
(jedini fiksni broj), ispadne da je broj redova koji se stampaju 30 - 62,
sto zanci da mi ostaje jos mesta za 10 - 42 redova. E, sada mi treba da se
doda jos neki tekst u taj prostor. Ako stavim neograniceni broj redova, pa
operator pretera sa spisateljskim mogucnostima, ode stampanje strane na dva
lista, a to bas hocu da sprecim.
Ako imas resenje, pomagaj!
Sasa
clipper.253bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
This file contains LLIBCA.LIB of the MS-C 5.1 Compiler, which works fine
with C (also when using MS-C 6.0). If you are using MS-C 6.0 please make
sure to use the /FPa /Gh AND don't use /Zi. Please pay attention to
the file LLIBCA.TXT, which contains the original disclaimer of
MicroSoft.
clipper.254bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
rpcxlb10 zip 195663 RPCXLib: Clipper lib sa grafickim funkc. (prikaz PCX)
RPCXLib is a CLIPPER LIBRARY with GRAPHIC FUNCTIONS.
Features :
* RShowPCX function to display a PCX graphic file :
- very FAST !
- of UNLIMITED SIZE
- on a SPECIFIC screen location
- on EGA/VGA and SUPERVGA screens
- up to a resolution of 640 x 480 x 256 (SUPERVGA)
- with AUTOMATIC DETECTION and USE of almost all SUPERVGA adapters
- with support of the INTERNATIONAL VESA STANDARD
* Functions to mix ones own CLIPPER COLOURS
YOU CAN COMPOSE 262.144 DIFFERENT COLOURS !
* Functions to slowly DIM the screen
* Functions to determine the GRAPHIC CONFIGURATION of a PC :
Is there a EGA, VGA, MCGA or SUPERVGA adapter available ?
When there is a SUPERVGA adapter available you can, in most
cases, determine the brand
* A NORTON GUIDE with a description of all functions in the library
clipper.255bulaja,
│RPCXLib: Clipper lib sa grafickim funkc. (prikaz PCX)
└───
Biblioteka inace i nije nesto (u stvari nije nista mnogo vise od obicnog
PCX viewer-a), al' mozda nekom dobro dodje :). Inace ce ovih dana biti
nekih upotrebljivih Clipper biblioteka u dir-u, treba samo da izvrsim
selekciju sta valja od ovoga sto smo skinuli (jos davno:).
clipper.256snemcev,
>> R:\IBMPC\CLIPPER\*.*
>> ----------------------
>> llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
Ovo je stvarno bilo ekspresno! Svaka čast!
PS Još samo da proradi...
clipper.257jtitov,
> Dobio sam "Blink Ink", The Newsletter of Blinker.
DOBIO? Hoces reci pozajmio. Nadam se da ce vlasnik to dobiti nazad... :)
clipper.258toma,
■> I Expand 3.0 ima odgovarajuću funkciju - XPmyName()
Jes vala, i to radi! Izvukao sam je posebno iz lib-a i
dobio .obj od svega 226 byteova.
Idemo dalje, novo pitanje glasi:
Kako datoteci dodeliti atribut 8 (volume label). Funkcija XPfattr()
iz Expand-a 3.0 odbija poslušnost kad je u pitanju broj 8.
ps. treba za neku malu zaštitu, tu datoteku ne kopira ni jedan program.
Nije neka al je zaštita.
clipper.259vision,
Izvinjavam se sto nisam ranije pisao (prosla mi pretplata i tako te
zajebancije:). Nego da predjem na stvar:
Pod jedan: Simulirao sam nekako '&' operaciju clipperom i to napravio sam
petju od 0 do 7:), pa sam dati broj uvek delio sa 2 i tako to znate ono
'skolski':) ali je sporo, ali sta je tu je:).
Pod dva: KORISTIM S'87 i nema SetCursor() :(. Oce li neko da mi prebaci lib
sa setcursor-om, ili pa da napravi mali asm:).
Hvala 'ni za sta':)
clipper.260d.petrovic,
Ă> Eeeeee, ali nisam ja to zabrljao. To se desava na 486/50 i jos
Ă> nisam
a ko bi drugi, jelte... ;)
kad se izbaci share radi lepo :). Nedostajala je jedna linija koja
glasi
CLOSE __TEMP
i neću više da pišem ništa u jutarnje sate :)
clipper.261mickeyl,
=> llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
Super, to sam upravo tražio!
clipper.262toma,
Jel može kratak tekst > Kako sam povezao Clipper i C < ?
Sve što mi je palo na pamet sam probao, ali ništa, ustvari, program
se linkuje bez i jedne greške, e sad što posle neće da radi...
ps. MSC 5.1
clipper.263bulaja,
│Jel moze kratak tekst > Kako sam povezao Clipper i C < ?
│Sve sto mi je palo na pamet sam probao, ali nista, ustvari, program
│se linkuje bez i jedne greske, e sad sto posle nece da radi...
└───
Aj' posalji primer sta nece da radi, pa da vidimo sta nevalja :).
clipper.264toma,
■> Aj' posalji primer sta nece da radi, pa da vidimo sta nevalja :).
Aiii, ma nemam ja pojma o povezivanju, probao sam čisto da
vidim kako se to radi. Problem je i što nemam "Jedrenjaka", čini
mi se da je u njoj bilo govora o tome...
Probao sam nešto trivijalno:
proba.prg
Stampaj()
c.c
#include "\clipper5\include\extend.h"
CLIPPER stampaj()
{
printf("Toma");
}
Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
neki poseban postupak... Neznam ništa :(
clipper.265ndragan,
/ operator pretera sa spisateljskim mogucnostima, ode stampanje strane
/ na dva lista, a to bas hocu da sprecim.
/ Ako imas resenje, pomagaj!
Korisnik je uvek u pravu, kakav god da je konj. Ja im omogućim da
štampaju koliko god hoće, a ako su baš toliko ludi, oni to i urade.
Jeste da u duši navijam za zelene, pa imam grižu savesti što sam toliko
šume uništio, ali s druge strane sam đavo zna koliko sam šume spasao -
ta faktura je ranije bila pet drugih papira, koji su se prepisivali na
dva tri mesta, i ko zna koliko je to onda trošilo.
clipper.266hercog,
Ajd nek mi neko lagano objasni šta sve treba uraditi da bi se
iskoristila blinkerova funcija DEMONSTRATION...
Šta gođ da sam pokušavao nije telo da radi. Zato otkuckajte sve
lepo, svaki korak :)
Sale
clipper.267arazumenic,
-> Korisnik je uvek u pravu, kakav god da je konj. Ja im omogucim da
-> stampaju koliko god hoce, a ako su bas toliko ludi, oni to i urade.
O.K. Slazem se da je korisnik uvek u pravu, pa makar bio i konj. A ti
isti konji su zapeli da im stampa ide na jedan list posto poto, jer u
protivnom, stampa ode preko memoranduma.
Sasa
clipper.268mickeyl,
=> Jel može kratak tekst > Kako sam povezao Clipper i C < ?
Evo kako sam ja izvorni kod DUG_IDE u c-u prilagodio svojim
potrebama i sve to spojio s clipper aplikacijom.
----------------------------------------------------------------------
#include <extend.h> <----- Ovo sam ja dodao, inače ta linija
treba obavezno da stoji
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <bios.h>
char *getascii (unsigned int in_data ŠĆ, int off_start, int off_end);
/*void main (void)*/
CLIPPER control() <---- Ovde sam deklarisao ime kako će se
funkcija koju će Clipper aplikacija
zvati
š
unsigned int dd Š256Ć; /* DiskData */
unsigned int dd_off; /* DiskData offset */
unsigned int loop; /* Loop variable */
int num_drv; /* Number of Hard disks */
char *prenos; <----- Ovde sam dodao svoju varijablu ciju
vrednost iz c programa zelim da
vratim u clipper program
union REGS registers; /* Used for Interrupt for BIOS data */
unsigned int bios_cyl Š2Ć, bios_head Š2Ć, bios_sec Š2Ć; /* Cylinders, Heads,
Sectors */
/* How many disk drives & parameters */
num_drv = 1; /* Byte at Segment 40H Offset 75H
*/
for (loop = 0; loop < num_drv; loop++) /* Loop through drives */
š
/* Get IDE Drive info */
while (inp (0x1F7) != 0x50) /* Wait for controller not busy */
;
outp (0x1F6, (loop == 0 ? 0xA0 : 0xB0)); /* Get first/second drive */
outp (0x1F7, 0xEC); /* Get drive info data */
while (inp (0x1F7) != 0x58) /* Wait for data ready */
;
for (dd_off = 0; dd_off != 256; dd_off++) /* Read "sector" */
dd Šdd_offĆ = inpw (0x1F0);
/* Get BIOS drive info */
registers.h.ah = 0x8; /* Get drive info */
registers.h.dl = 0x80 + loop; /* Drive is 80H for Disk 0, 81H for Disk
1 */
int86 (0x13, ®isters, ®isters);
if (! registers.x.cflag) /* All OK if carry not set */
š
bios_head ŠloopĆ = registers.h.dh + 1; /* Heads are from 0 */
bios_sec ŠloopĆ = registers.h.cl & 0x3F; /* sec is bits 5 - 0 */
bios_cyl ŠloopĆ = ((registers.h.cl & 0xC0) << 2) + registers.h.ch +
2; /* +1 because starts from 0 and +1 for FDISK leaving one out */
ć
prenos=getascii (dd, 10, 19);
ć
_retc(prenos); <---- I ovde sam iskoristio makro iz
extend.h za vracanje stringa u
clipper aplikaciju
ć
char *getascii (unsigned int in_data ŠĆ, int off_start, int off_end)
š
static char ret_val Š255Ć;
int loop, loop1;
for (loop = off_start, loop1 = 0; loop <= off_end; loop++)
š
ret_val Šloop1++Ć = (char) (in_data ŠloopĆ / 256); /* Get High byte */
ret_val Šloop1++Ć = (char) (in_data ŠloopĆ % 256); /* Get Low byte */
ć
ret_val Šloop1Ć = 'Đ0'; /* Make sure it ends in a NULL character */
return (ret_val);
ć
------------------------------------------------------------------------
U clipper program staviš recimo : var=CONTROL(), nakon čega
u ovom mom slučaju var dobija vrednost serijskog broja IDE
diska.
Da bi kompajlirao program u c za clipper upotrebi sledeću
sintaksu:
CL /c /AL /Zi /Oalt /FPa /Gs <ime datoteke>.c
Eto to je moje prvo iskustvo C+Clipper i odmah mi je
proradilo, čim sam nabavio LLIBCA.LIB.
p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
poruke.
clipper.269magician,
=> p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
=> poruke.
Ma, šta ti pada na pamet ;)
clipper.270toma,
■> Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
■> neki poseban postupak... Neznam ništa :(
STOJ!
Radi, sad znam da povezujem! Nabavio sam "Jedrenjaka" ali ni tad
nije išlo glatko jer sam naviknut na Clipper <ime_fajla> [opcije]
kucao: cl <ime_fajla> [opcije] !!!!!
toma = Turbo DILEJA 16v injection!!!!!
clipper.271gari,
Evo ti brate korak po korak:
U komandnoj liniji ide: BLINKER @BLINK.LNK
U fajlu BLINK.LNK treba da ide otprilike ovo:
FILE E:\LD
OUTPUT E:\LD
BLINKER DEMONSTRATION MINUTES 2
LIB CLIPPER, EXTEND, ML
E, pa ako ne bude sa ovim radilo (naravno prilagodis
svojim potrebama vrednosti iza FILE, OUTPUT i LIB)
onda imas ili verziju blinker-a od pre hrista ili
se nalazis u Zoni sumraka ;)
Nadam se da ce ti ovo pomoci,
pozdrav, Gari.
clipper.272snemcev,
>> p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
>> poruke.
Ljutiti? More, čitao bih ja i megabajtne poruke, samo da su korisne
koliko tvoja. Jedan primer govori više od hiljadu reči.
clipper.275mickeyl,
=> Ajd nek mi neko lagano objasni šta sve treba uraditi da bi se
=> iskoristila blinkerova funcija DEMONSTRATION...
Evo ti sadržaj mog DEMO.LNK-a. Kroz primjer ćeš najlakše da
središ stvar.
BLINKER DEMONSTRATION DATE 1993/12/31
BLINKER DEMONSTRATION MINUTES 120
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F25;V006;
BLINKER OVERLAY OPSIZE 100
BLINKER OVERLAY UMB OFF
BLINKER EXECUTABLE SERIAL #DEMO_VER
OUTPUT DEMO.EXE
FILE demo
#
BEGINAREA
....
ENDAREA
čCL87MAX.LNK
Linkuješ sa BLINKER č<ime LNK fajla>
clipper.276neman,
U mreznoj aplikaciji koristim sledeci niz naredbi
IF reclock( 10 ) .AND. chkrec()
REPL polje WITH vrednost
DBCOMMIT(); UNLOCK
ENDIF
gde reclock(n) zakljucava slog, a chkrec() proverava da li je doslo
do promene vrednosti od strane drugog korisnika sloga za vreme
izmene podataka.
Ideja je bila da pri svakoj promeni bilo kog sloga izvrsim i DBCOMMIT()
da bi podaci bili UPISANI na disk. Za UNLOCK u NG kaze da kada se
izvrsi ta komanda promene budu vidljive i ostalim korisnicima, ali bez
snimanja na disk.
Testirajuci brzinu aplikacije uvideo sam da DBCOMMIT() dosta usporava
izvrsenje aplikacije, cak i na jednokorisnickoj masini.
Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika, a samim
tim i moje licne :), to jos nisam uradio.
Dakle, interesuju me tudja iskustva u vezi ovog problema.
P.S.
Resenje tipa
USE ...
REPLACE
UNLOCK
CLOSE
je jos sporije.
neman
clipper.277ppekovic,
>> Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
>> neki poseban postupak... Neznam ništa :(
Prvo je potrebno da program prevodiš u Large modelu (/AL) a
valjalo bi da se isključi i optimizacija (/Od).
Paya
clipper.278dejanr,
>> Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika, a samim
>> tim i moje licne :), to jos nisam uradio.
Meni je mehanizam sa RLOCK...UNLOCK uvek lepo radio, nikada nije bilo
potrebno koristiti DBCOMMIT.
clipper.279neman,
> Meni je mehanizam sa RLOCK...UNLOCK uvek lepo radio,
> nikada nije bilo potrebno koristiti DBCOMMIT.
Hm, ovo me je zaintrigiralo pa sam uradio neke testove, doduse
na mom PC-ju, ne i na Novell mrezi.
JEDINI (siguran) nacin da podaci budu snimljeni na disk je da se uradi
DBCOMMIT(). To ne vazi ako je kesirano upisivanje na disk.
Opet napominjem da zatvaranje datoteka i ponovno otvaranje nije
resenje zbog sporosti te operacije.
Kriticne su operacije npr. dugotrajno azuriranje podataka bez napustanja
maske za unos ( tada bi se zatvorile datoteke i podaci bi bili snimljeni ),
zatim svodjenje stanja sa upisom u datoteku i jos po nesto. Nestanak struje
u takvoj situaciji je KATASTROFA, pogotovu kod azuriranja.
Resenje je naravno UPS, ali nije bas jeftino obezbediti UPS za svaki
racunar u vecoj mrezi.
Sto se Novell-a tice, resetovanjem servera igracu se narednih dana.
Sada pretpostavljam da nisi imao problema sa RLOCK() i UNLOCK zato sto
Novell sam u odredjenim vremenskim razmacima vrsi snimanje podataka
( vreme se moze zadati ) na disk.
Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
ranije pomenute situacije. Nanfor i Netto imaju neku podrsku za to.
Imali iskustva sa koriscenjem TTS-a ?
neman
clipper.280dejanr,
>> Kriticne su operacije npr. dugotrajno azuriranje podataka bez napustanja
>> maske za unos ( tada bi se zatvorile datoteke i podaci bi bili snimljeni)
>> zatim svodjenje stanja sa upisom u datoteku i jos po nesto. Nestanak
>> struje u takvoj situaciji je KATASTROFA, pogotovu kod azuriranja.
Mislim da to samo po sebi i nije tolika katastrofa. Naime, ako neko radi u
masci i tu usred rada nestane struje, nekako je "blisko pameti" da će to
što je u toj masci radio morati da uradi ponovo. Nisam primetio da se
korisnici za to bune ;) Ono što jeste katastrofa je da više prethodnih
intervencija na slogovima ne bude upamćeno, ne samo zato što bi to trebalo
ponovo raditi, nego zato što ne može čovek da popamti šta je sve radio i
gde je intervenisao. Recimo, na Sezamu backup konferencija itd radimo
povremeno, ali backup korisničke baze mora da se radi jako, jako često -
da ona (daleko bilo) pukne, silna nevolja bi bila dovesti je ponovo u red :(
>> Resenje je naravno UPS, ali nije bas jeftino obezbediti UPS za svaki
>> racunar u vecoj mrezi.
Da... ali je dosta da se obezbedi UPS za server. Transakcije koje su
ranije izvršene će tada svakako biti realizovane, a tekuća... šta da
se radi.
>> Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
>> END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
>> ranije pomenute situacije.
Nisam znao da to ima dBASE IV, to je sjajna stvar. Video sam da je to
osnova BTrieve rada, i mislim da je jako dobra ideja.
clipper.281v.nesic,
Traži se !
Negde sam video programčić koji zamenjuje standardni GET rider i
omogućava da se brojne vrenosti unose kao na digitronu.
Ako ga neko ima, ili zna gde sam ga video...
clipper.282neman,
> sto je u toj masci radio morati da uradi ponovo. Nisam
> primetio da se korisnici za to bune ;) Ono sto jeste
> katastrofa je da vise prethodnih intervencija na slogovima
> ne bude upamceno, ne samo zato sto bi to trebalo
Pre dve godine, postavio sam aplikaciju u jednom video klubu. Objasnio sam
vlasnici kako se unose podaci. Sutradan sam dosao i pitao kako ide a ona rece
da je unela oko 150 clanova. Ja pogledah - ono nista, ni traga ni glasa od
podataka. Objasnim joj ponovo sve - sutra ista pesma. I onda se upali
sijalica. Ona UOPSTE nije izlazila sa maske za unos po celi dan :((((((
Sutradan sam ja podmetnuo svoje prste i zavrsio oko 700 clanova. Od tada
sam na svakih pet unetih stavki zatvarao i ponovo otvarao datoteku. A onda
sam saznao za COMMIT :))))))))) Ko prizna pola mu se doda ;)
> Da... ali je dosta da se obezbedi UPS za server.
> Transakcije koje su ranije izvrsene ce tada svakako biti
> realizovane, a tekuca... sta da se radi.
Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke. Kod
sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi ubrzalo
obradu a ako i dodje do pada sistema - Jovo nanovo.
clipper.283neman,
> Ako ga neko ima, ili zna gde sam ga video...
Potrazicu na svojim disketama .... evo ga :)
neman
ngetdemo.prgclipper.284.bale.,
> Da... ali je dosta da se obezbedi UPS za server. Transakcije koje su
> ranije izvršene će tada svakako biti realizovane, a tekuća... šta da
> se radi.
"Seci uši, krpi dupe" filozofija. E... :( A tolika nauka o bazama
podataka i sistemima otpornim na otkaze, čemu? Dokle bi stigao SDK
kad bi koristio Clipper?
(Ne moraš da odgovaraš, nije bitno, znam da imaš odgovor :)
clipper.285d.petrovic,
Ă> Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika,
Ă> a samim tim i moje licne :), to jos nisam uradio.
Ă> Dakle, interesuju me tudja iskustva u vezi ovog problema.
Zdravo je ubaciti ga povremeno i nije mi jasno gde se to
toliko gubi vreme, valjda možeš da izvršiš upis na disk kada korisnik
završi sa jednom promenom. Aplikaciju ti praviš i ti treba da odlučiš
kada treba ubaciti dbcommit().
Ja sam u nenadov ninkey() ubacio da se kod neaktivnosti
tastature od n sekundi izvrši upis na disk, a svuda gde treba
izvršiti upis umesto dbcommit() postavljam promenljivu koja
kontroliše upis na .T. . Može neko da pita:"Šta, ako nestane struje,
a korisnik je neprekidno radio prethodnih sat vremena". Odgovor:"Još
ne videh tako ažurnog srbina da ne pusti tastaturu na miru na 2-3
sekunde" ;>>
clipper.286dejanr,
>> "Seci uši, krpi dupe" filozofija. E... :( A tolika nauka o bazama
>> podataka i sistemima otpornim na otkaze, čemu?
Sva nauka kaže da ne postoji sistem koji je potpuno otporan na otkaze,
može se samo napraviti sigurniji ili manje siguran sistem. UPS na serveru,
program koji redovno piše na disk i redovan backup, po meni, čine dovoljno
siguran sistem za većinu primena. Ako je nekome baš velika frka, može da
napravi mirroring diska.
>> Dokle bi stigao SDK kad bi koristio Clipper?
Prvo, SDK koristi Clipper programe, hvala na pitanju. Na PC računarima.
Drugo, softver koji koristi SDK na većim mašinama se ubija od sigurnosti,
a baze podataka koje su napravili (imena i računi firmi) ne vrede pet
para (iako ih prodaju, ili su ih prodavali, za hiljadu maraka). Pa opet
nekako funkcionišu, kao što se vidi.
clipper.287.bale.,
> Drugo, softver koji koristi SDK na većim mašinama se ubija od
> sigurnosti, a baze podataka koje su napravili (imena i računi firmi)
A koji su oni u RC-u? PTT ili SDK? Na kraju, kako hoće, za mene je to
i dalje "seci uši, krpi dupe" ;-))) Vidiš da sam nedokaziv, lepo sam
ti rekao da se ne trudiš odgovarajući...
clipper.288v.nesic,
> Potrazicu na svojim disketama .... evo ga :)
Hvala :)
clipper.289mickeyl,
=> Pre dve godine, postavio sam aplikaciju u jednom video klubu. Objasnio
=> sam vlasnici kako se unose podaci. Sutradan sam dosao i pitao kako ide a
=> ona rece da je unela oko 150 clanova. Ja pogledah - ono nista, ni traga
=> ni glasa od podataka. Objasnim joj ponovo sve - sutra ista pesma. I onda
=> se upali sijalica. Ona UOPSTE nije izlazila sa maske za unos po celi dan
=> :(((((( Sutradan sam ja podmetnuo svoje prste i zavrsio oko 700 clanova.
=> Od tada sam na svakih pet unetih stavki zatvarao i ponovo otvarao
=> datoteku. A onda sam saznao za COMMIT :))))))))) Ko prizna pola mu se
=> doda ;)
E pa tu mi nešto smrdi :(. Nije ti disk buffer toliki da bi
čuvao sve vreme te podatke, a da se pri tom ne piše na disk.
Po meni, tvoj program nije bio dobar. Kakve veze ima unosna
maska sa snimanjem podataka na disk? Ako je tvoj program
radio APPEND BLANK i REPLACE, moralo je u bazi od 150
članova, da bude njih preko 100 unesenih i sačuvanih na
disku. I da je na kraju završila isključivanjem računara, a
ne regularnim izlaskom iz programa, moralo bi nešto da
ostane. U najgorem slučaju bila bi datoteka zeznuta, a ne
prazna.
=> Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke. Kod
=> sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi ubrzalo
=> obradu a ako i dodje do pada sistema - Jovo nanovo.
Nije mi jasna ta tvoja tvrdnja COMMIT usporava obradu. To
više mogu da shvatim teoretski, jer u praksi to se i ne
primjeti. To iz ličnog iskustva. Naravno ako ga staviš na
pravo mjesto tj. posle svakog unosa novih podataka.
clipper.290neman,
> E pa tu mi nesto smrdi :(. Nije ti disk buffer toliki da
> bi cuvao sve vreme te podatke, a da se pri tom ne pise na
> disk. Po meni, tvoj program nije bio dobar. Kakve veze ima
> unosna maska sa snimanjem podataka na disk? Ako je tvoj
> program radio APPEND BLANK i REPLACE, moralo je u bazi od
> 150
He he, meni mozes svasta da kazes ali da mi program ne radi,
e to me tangira zestoko. Elem, iskljuci eventualni kes program,
ukucaj i prevedi sledeci program ( ja imam trenutno Clipper 5.2c )
CLS
USE test
FOR i := 1 TO 1000
APPE BLANK
@ 24, 0 SAY i
NEXT
Baza test recimo ima samo jedno polje npr P tipa Character duzine 10
Pre nego sto pokrenes isprazni bazu. Kada pokrense program, pusti ga da
izbroji do recimo 200-500 pa RESETUJ racunar dok radi program. Kada se
racunar pokrene pogledaj koliko slogova u bazi. Videces da od onih 100
slogova imas samo 00 tj 0 slogova ;>. Ako ubacis DBCOMMIT() u FOR - NEXT
petlju imaces 200-500 slogova u bazi.
Sto se tice Clipper-ovog bafera za podatke on je velik 64KB. ( barem )
DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog programceta
sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
clipper.291ndragan,
/ isti konji su zapeli da im stampa ide na jedan list posto poto, jer u
/ protivnom, stampa ode preko memoranduma.
Šta? Hoćeš reći da ne odštampaš novo zaglavlje za novu stranu (makar
bilo i prazno tamo gde dođe moremandum)? Ako se račun nastavlja na drugu
stranu, mora da ima makar skraćeno zaglavlje. Nema teorije da se dozvoli
da neka štampa pređe preko ivice papira.
clipper.292ndragan,
/ Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
/ END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
U FP2.+ postoji bibliotetka netware.plb; nismo se još sigrali s otim,
ali nameravamo u dogledno vreme. Trebalo bi da radi upravo te stvari,
jer se funkcije otprilike tako i zovu.
clipper.293cnenad,
ŁŁŁ => ona rece da je unela oko 150 clanova. Ja pogledah - ono
ŁŁŁ nista, ni traga => ni glasa od podataka. Objasnim joj ponovo
ŁŁŁ sve - sutra ista pesma. I onda
Jes da DBASE IV nije CLIPPER ali i meni se nesto slicno dogadjalo u
pocetnickim danima kad sam unosio podatke u bazu i umesto CLOSE DATA,
QUIT jednostavno i efikasno pritiskao crveno dugme na kojem pise OFF !
I normalno ono sto je unoseno od zadnjeg snimanja sa CTRL-END nije
bilo snimljeno, u stvari ti slogovi su postojali i na njih su bili
duplirani podaci koji su ranije uneti ali se njima nije nikako moglo
pristupiti vec samo izvrsiti brisanje tih slogova i pack cele baze.
Eh, koliko sam podataka bez veze po nekoliko puta unosio :( !
clipper.294nesa,
>> Potrazicu na svojim disketama .... evo ga :)
Može li se dobiti! :))
clipper.295snemcev,
Jel zna neko TAžNO kako se Clipper kompajler ponaša pri kompajliranju
funkcija koje su u okviru kodnih blokova?
Interesuje me da li ih pretprocesor ikako menja. Npr, kako će posle
kompajliranja izgledati .ppo datoteka za ovaj kod?
---------------------------------
#command Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
---------------------------------
clipper.296toma,
■> DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog
■> programceta sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
Evo ti rešenje.
Pod jedan, smem da se kladim da nigde u svojim programima nemaš
ovako nešto, jer je jednostavno nepotrebno. Razlika u brzini se najviše
vidi u delu programa kad se polja popunjavaju/dodaju automatski,
znači bez intervencije operatera. Tu i ako se izgube podaci nije uopšte
strašno, jednostavno se opet "sami" izračunaju.
Pod dva, situacija kada operater radi, t.j. kad je bitno da podaci
sačuvaju za kasnije.
1. Izedituj getsys.prg, tu imaš linije:
// apply keystrokes until exit
while ( get:exitState == GE_NOEXIT )
GetApplyKey( get, Inkey(0) )
end
2. Umesto inkey(0) stavi ninkey(0), a u njemu, kao što reče
gosn.Dejan Petrović:
■> Ja sam u nenadov ninkey() ubacio da se kod neaktivnosti
■> tastature od n sekundi izvrši upis na disk, a svuda gde treba
■> izvršiti upis umesto dbcommit() postavljam promenljivu koja
■> kontroliše upis na .T. . Može neko da pita:"Šta, ako nestane struje,
■> a korisnik je neprekidno radio prethodnih sat vremena". Odgovor:"Još
■> ne videh tako ažurnog srbina da ne pusti tastaturu na miru na 2-3
■> sekunde" ;>>
btw, Dejane, možemo li da dobijemo ninkey(). Sa tvojim dodacima,
obavezno!
clipper.297arazumenic,
-> Sta? Hoces reci da ne odstampas novo zaglavlje za novu stranu
-> (makar bilo i prazno tamo gde dode moremandum)? Ako se racun
-> nastavlja na drugu stranu, mora da ima makar skraceno
-> zaglavlje. Nema teorije da se dozvoli da neka stampa prede
-> preko ivice papira.
Pa upravo je o tome i rec, da se ne dozvoli da da stampa predje preko
ivice papira. Inace, cela stamapa jednostavno mora da stane na jednu
stranu (takvi su "konjski" zahtevi). Zato mi i treba da se memoedit
ogranici na odredjen broj redova.
Sasa.
clipper.298mcgoran,
case 1
======
1) trtmrt.prg:
#command Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Trt(5) })
case 2
======
1) trtmrt.prg:
#translate Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Mrt( 5 ) })
case 3
======
1) trtmrt.prg:
#define Trt(a) Mrt(a)
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Mrt(5) })
Any question... !?
clipper.299toma,
■> Negde sam video programčić koji zamenjuje standardni GET rider i
■> omogućava da se brojne vrenosti unose kao na digitronu.
■>
■> Ako ga neko ima, ili zna gde sam ga video...
Ovo me je konačno "dotuklo"! Seo sam i realizovao plan star cca
1.god. Dakle uz poruku je zakačen getsys.prg koji omogućava ovo što se
traži i to po sledećim pravilima:
- normalno, reaguje samo na numeričke vrednosti
- radi sve dok se ne "stisne" neki taster koji je različit
od +-1234567890 i backspace, posle toga prelazi u normalan
mod, i omogućava editovanje
Sve ovo je urađeno za veče (cca 1 ipo sat) i možda ima i grešaka,
ali zato ste vi tu!
getsys.zipclipper.300d.petrovic,
Ă> btw, Dejane, možemo li da dobijemo ninkey(). Sa tvojim dodacima,
Ă> obavezno!
Samo da ubacim komentare i izbacim nepotrebno. Ako ga nema za par
dana podseti me opet :)
clipper.301d.petrovic,
Evo kad si zapeo :)
Screen Saver mora isto da štampa
ko kaže da ti treba keš kad voziš kliper program ? ;)))
ninkey.zipclipper.302nesa,
> / Pada mi napamet da u DBASE IV postoje naredbe BEGIN
> TRANSACTION, / END TRANSACTION i ROLLBACK koje bi trebale da
> efikasnije kontrolisu
>
> U FP2.+ postoji bibliotetka netware.plb; nismo se još sigrali s
> otim, ali nameravamo u dogledno vreme. Trebalo bi da radi
> upravo te stvari, jer se funkcije otprilike tako i zovu.
Kasno sam se priključio! Može li dodatno objašnjenje?! :(
clipper.303snemcev,
>> case 2
>> # translate Trt( <a> ) => Mrt( <a> )
>> Any question... !?
Jeah! Ovo mi rešava problem. Nigde u .NG nisam mogao da nađem razliku
između #commnad i #translate. Tamo su dati kao sinonimi.
clipper.304mickeyl,
=> He he, meni mozes svasta da kazes ali da mi program ne radi,
=> e to me tangira zestoko. Elem, iskljuci eventualni kes program,
Nisi me dobro razumio, mada ni ja tebe nisam najbolje
razumio. Mislio sam da ti nešto kod unosa nije valjalo,
pošto mi se takva stvar nikad nije desila. Ja obično
prvo što objasnim nekom duduku jeste da računar smije
isključiti samo kad je u DOS promptu. Mada me čudi da
Clipper toliko mnogo čuva podataka u baferu. Ja sam
mislio da uvijek čuva u baferu par zadnjih slogova,
dok one u međuvremenu snima na disk.
=> Pre nego sto pokrenes isprazni bazu. Kada pokrense program, pusti ga da
=> izbroji do recimo 200-500 pa RESETUJ racunar dok radi program. Kada se
=> racunar pokrene pogledaj koliko slogova u bazi. Videces da od onih 100
=> slogova imas samo 00 tj 0 slogova ;>. Ako ubacis DBCOMMIT() u FOR - NEXT
=> petlju imaces 200-500 slogova u bazi.
Tačno. Ali je si li ti njoj rekao da kad završi unos tek
tako isključi računar ili da regularno izađe u DOS, pa tek
onda da ga isključi. Dakle ovo se moglo desiti samo da je
nestalo struje ili ona zbog svog neznanja isključila računar
prije vremena :(. Izgleda da se ovo drugo i desilo.
=> DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog
=> programceta sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
Ma u pravu si, samo nisam u prvi mah skonto šta ti znači ono
pri sekvencijalnoj obradi. Ja posle svakog unosa imam COMMIT
i u tom slučaju se ne čeka mnogo, tj. uopšte se ne primjećuje
da dolazi do nekog drastičnog usporenja.
Pozdrav i ne ljuti se.
clipper.305mickeyl,
=>=> Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke.
=>=> Kod sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi
=>=> ubrzalo obradu a ako i dodje do pada sistema - Jovo nanovo.
=>
=> Nije mi jasna ta tvoja tvrdnja COMMIT usporava obradu. To
=> više mogu da shvatim teoretski, jer u praksi to se i ne
=> primjeti. To iz ličnog iskustva. Naravno ako ga staviš na
=> pravo mjesto tj. posle svakog unosa novih podataka.
Vođe sam se ja za*ebao :(((. Nisam dobro shvatio šta si
podrazumjevao pod onim sekvencijalna obrada :(. U pravu si
pravo rješenje i jeste da posle svakog unosa staciš COMMIT.
Kod sekvencijalne obrade, ako izostaviš COMMIT, može da ti
se desi da se neke promjene snime na disk i u tom slučaju,
ne možeš Jovo nanovo :((.
clipper.306nbatocanin,
> Testirajuci brzinu aplikacije uvideo sam da DBCOMMIT()
> dosta usporava izvrsenje aplikacije, cak i na
> jednokorisnickoj masini.
Ovo je vrlo čudno: COMMIT je vrlo brz, a DBCOMMIT() još brži, jer
snima samo tekuću radnu zonu. Ako nemaš baš *ogroman* broj polja+memo
u slogu, ovo bi moralo da bude praktično trenutno (snimanje 1-2K na
disk!). Još ako koristiš SHARED za otvaranje, u memoriju se učitava
manje podataka, pa je COMMIT još brži. Ja isto uvek uradim COMMIT po
upisu i nikad mi to nije usporilo program. Nešto mi je ona funkcija
ChkRec() sumnjiva?
clipper.307nbatocanin,
> neaktivnosti tastature od n sekundi izvrši upis na disk, a
> svuda gde treba izvršiti upis umesto dbcommit() postavljam
> promenljivu koja kontroliše upis na .T.
Clipper automatski povremeno prazni memorijske bafere, samo se ne
može tačno odrediti kad. COMMIT služi da se isprazne svi baferi kod
kritičnih operacija. Pražnjenje bafera se obično radi kad je
tastatura nektivna, tj. kada korisnik ništa ne ukucava, zato nisam
siguran da ubacivanje COMMIT-a u funkciju za skaniranje ima nekog
efekta?
clipper.308bipin,
Kako u *.pll-u zameniti f-ju BiloKoju() za novu verziju iste.
Za biblioteku je <<< TLIB proba -+ BiloKoju >>> a za PLL?
clipper.309neman,
> Pozdrav i ne ljuti se.
Nema problema, ja to samo onako ;)
clipper.310neman,
> Ovo je vrlo cudno: COMMIT je vrlo brz, a DBCOMMIT() jos
> brzi, jer snima samo tekucu radnu zonu. Ako nemas bas
> *ogroman* broj polja+memo u slogu, ovo bi moralo da bude
> prakticno trenutno (snimanje 1-2K na
Pa dobro, odokativno sam primetio usporenje kod aplikacije
, disku se pristupa vise sto ima za posledicu sporiji odziv.
To i nije mnogo znacajno kod prostog azuriranja podataka,
problem se javlja recimo sekvencijalne obrade kada treba
pristupati vecem broju slogova i azurirati ih. Problem se samim
tim javlja i kod mreznih aplikacija jer da bi performanse celog
sistema aplikacija-mreza-racunari bile sto bolje treba sto efikasnije
tj sto manje pristupati podacima ( molim da ne bude komentara
tipa " a sta je sa client-server bazama " jer razgovaramo o Clipperu )
Onda sam napisao ranije pomenuto programce kojim sam testirao
uticaj DBCOMMIT()-a. Imam disk sa vremenom pristupa od 26ms i
386DX na 20 MHz, BUFFERS=10. Odnos vremena izvrsenja programa
sa DBCOMMIT() i bez doticne funkcije je ipak prevelik da bih
olako presao preko toga. Treba uzeti u obzir i cinjenicu da
ima korisnika ( uopste gledano ) koji poseduju AT 286 / 12 MHz
masine ( dobro ih sluze ) i nije mi svejedno reci da kupe neku
386DX/40 MHz, disk < 16ms da bi aplikacija isla brze.
Sto se tice broja od 1 - 2 K nisam bas siguran da je samo toliko.
Nemam literaturu o organizaciji CLipper-ove memorije za podatke,
tako da cu sledeca racunica ne mora da bude tacna ali ...
Velicina bafera - 64K
Ako imas 10 otvorenih datoteka ukljucujuci i indekse onda svaka zona
zauzme po oko 6-7 KB. E sad ako se kaze da UNLOCK cini promene vidljive
ostalim procesima tu moze da se kaze da ima do 1 K podataka. Medjutim
DBCOMMIT() prazni bafere, pa kad prvo isprazni (snimi) pomenutih 6-7 kb,
pa isprazni DOS bafere 512*n bajtova pa jos i izvrsi i solid-write
to mu onda dodje do 10-ak K ?
ChkRec() upotrebljavam na sledeci nacin
STATIC _m_chkfld
// Azuriranje
defrec()
@ y, x SAY ... GET ...
READ
IF RECLOCK(10) .AND. CHKREC()
REPL
DBCOMMIT(); UNLOCK
ENDIF
PROC defrec
LOCAL wi
_m_chkfld := {}
FOR wi := 1 TO FCOUNT(); AADD( _m_chkfld, FIELDGET(wi)); NEXT
RETURN
FUNC chkrec
LOCAL wret := .T.
FOR wi := 1 TO FCOUNT(); wret := wret .AND. _m_chkfld[wi] == FIELDGET(wi);
NEXT
IF !wret
ALERT("podaci su izmenjeni tokom rada;ponovite a`uriranje")
ENDIF
RETURN wret
clipper.311toma,
■> .................... Pražnjenje bafera se obično radi kad je
■> tastatura nektivna, tj. kada korisnik ništa ne ukucava, zato nisam
■> siguran da ubacivanje COMMIT-a u funkciju za skaniranje ima nekog
■> efekta?
Ja jesam :), primer:
use test
for n:=1 to 1000
append blank
replace POLJE with str(n)
next n
a:=0
@10,10 get a
read
.......žekao sam 40 sec i resetovao. Nije se NIŠTA upisalo na disk!
clipper.312v.nesic,
> kritičnih operacija. Pražnjenje bafera se obično radi kad je
> tastatura nektivna, tj. kada korisnik ništa ne ukucava, zato nisam
žini mi se da ti imaš original programa pa ću da te zamolim da
nekom zgodnom prilikom ovde javiš šta kaže dokumentacija po tom
pitanju, tj kada se vrši snimanje na disk sem u slučaju
eksplicitnog zahteva sa nekom od commit naredbi.
clipper.313snemcev,
U vezi korišćenja direktiva pretprocesora #command i #translate
Imam recimo funkciju Trt koju pozivam sa argumentima (a, b, c). Treba mi
direktiva pretprocesora koja bi poziv funkcije Trt(a, b, c) pretvorila u
Trt(a, const, b, c). Ako uzmem #command, Clipper prijavljuje 'C 2079
Circular #translate/#command'. Može li se ovo uopšte uraditi i kako?
clipper.314ndragan,
/> U FP2.+ postoji bibliotetka netware.plb; nismo se još sigrali s
/ Kasno sam se priključio! Može li dodatno objašnjenje?! :(
Bogami si me naterao da pročitam šta veli help na tu temu (ako imaš
fokspro, pročitaj, otprilike dvadeseta tema odozgo, ako ne, nisi mnogo
propustio - dvetri poruke).
Ono što mene zanima je da li TTS omogućuje zaštitu od prljavog čitanja.
O čemu se radi: na dve mašine sabiramo nešto nas dvojica i upisujemo
rezultat na isto mesto. Neka tamo u početku piše 1000, i to smo
pročitali obojica. Ja dodam 20 i hoću da upišem; on dodaje 30 i hoće da
upiše. Ako sam ja prvi uleteo, šta će Novel uraditi (ako smo obojica
markirali početke i krajeve transakcija):
- upisaće 1020 a njemu javiti da transakcija nije prošla
- upisaće 1020, pa posle 1030 a onih 20 pojela cica maca
- upisaće 1050 i pokazati više simptome inteligencije nego što ja
očekujem od njega
- zbingovaće se i reći da pozovemo NjetWare, gde će nam pozdraviti
širu rodbinu što radimo sa žutom verzijom, koje i mi njima isto tako
želimo nazad
Zna li neko?
clipper.315ndragan,
/ se desi da se neke promjene snime na disk i u tom slučaju,
/ ne možeš Jovo nanovo :((.
Isprojektuj obradu da bude ponovljiva. Može, može.
clipper.316mcgoran,
#define trt(a,b,c) trt(a,x,b,c)
clipper.317bulaja,
│Cini mi se da ti imas original programa pa cu da te zamolim da nekom
│zgodnom prilikom ovde javis sta kaze dokumentacija po tom pitanju, tj
│kada se vrsi snimanje na disk sem u slucaju eksplicitnog zahteva sa
│nekom od commit naredbi.
└───
Prilikom svakog SKIP ili GO TO, tj. dbSkip() i dbGoTo() (ovo pise i u
uputstvu, a i u NG). Verovatno je praznjenje bafera vezano i za keyboard
inactivity, a mozda i za memory manager.
clipper.318snemcev,
>># define trt(a,b,c) trt(a,x,b,c)
Brzo, kratko, jasno.
A sad malo da zakukuljim - kako kad treba da ostane isti broj parametara?
Npr. Trt(a, b, c) => Trt(c, a, b)
clipper.319toma,
■> zip20 a01 122567 Info-Zip, PKZip 2 kompatibilni arhiver (source)
■> zip20 a02 119897 Info-Zip, PKZip 2 kompatibilni arhiver (source)
Kad bi se ovo povezalo s Clipperom ....
clipper.320mcgoran,
#abrakadabra TRT MILOJKA => MILOJKA TRT ;(
Copyright (C) NoSense Soft Systems., All Rights Reserved
clipper.321mickeyl,
=> Isprojektuj obradu da bude ponovljiva. Može, može.
Znam da može, ono se odnosilo samo na najjednostavniju
obradu. Pa reko ajd da upozorim :).
clipper.322v.nesic,
> Npr. Trt(a, b, c) => Trt(c, a, b)
Pa isto sa #define, samo pazi da onda uvek moraš da pišeš Trt, trt
ili TRT neće da rade sa #define, sa #command i #translate hoće...
clipper.323v.nesic,
> Prilikom svakog SKIP ili GO TO, tj. dbSkip() i dbGoTo() (ovo pise i u
> uputstvu, a i u NG). Verovatno je praznjenje bafera vezano i za keyboard
Ja probao i ne radi. Evo programa :
use proba
for i:=1 to 10000
append blank
replace proba->proba with "dsfljh"
endif
go 1
alert("Resetuj me!"," Ako smeš :> ")
Kada mi se pojavi poruka udarim Ctrl-Alt-Del i kada dođe sebi sa
DBU PROBA utvrdim da je datoteka prazna.
clipper.324ndragan,
/ .......žekao sam 40 sec i resetovao. Nije se NIŠTA upisalo na disk!
Dobio si fajl dužine nula, ili prazan kao što je bio. DOS tek prilikom
zatvaranja fajla upisuje njegovu dužinu u direktorij; eventualno je
povećava kad program zatraži nove klastere, onda upiše one prethodne.
Sve skupa, treba povući vodu (u foksu se pomenuta naredba zove Flush) s
vremena na vreme u toku unosa, a kod ovakvih 'obrada' namestiti da budu
ponovljive.
clipper.325cnenad,
ŁŁŁ (istina, ne za te koji koriste declipper, takve jos, fala
ŁŁŁ Bogu, nisam imao,
Dejane da li mislis na DISCLIPPER ili bas DECLIPPER, jer skinuo sam
sa EUKLID-a DISCLIPPER ali program ne radi kako treba odnosno nisam
nista uspeo sa njim da uradim. A ako je u pitanju DECLIPPER onda
je to izgleda nesto novo i opasno ?
clipper.326toma,
■>> Prilikom svakog SKIP ili GO TO, tj. dbSkip() i dbGoTo() (ovo pise
■>> i u uputstvu, a i u NG). Verovatno je praznjenje bafera vezano i
■> za keyboard
■>
■> Ja probao i ne radi. Evo programa :
Izgleda da ne radi zato što nije radio pod mrežom :))
Šta kaže NG za GO:
■ Refreshing database and index buffers: In a network environment,
you can refresh database and index buffers without moving the record
pointer using GO RECNO(). Refer to the Network Programming chapter
in the Programming and Utilities book for more information.
Jel to to?
clipper.327nbatocanin,
> Ja jesam :), primer:
>
> use test
> for n:=1 to 1000
> append blank
> replace POLJE with str(n)
> next n
> a:=0
> @10,10 get a
> read
> .......žekao sam 40 sec i resetovao. Nije se NIŠTA upisalo
> na disk!
U pravu si. Prvo što sam pomislio je da se upis vrši kada se popuni
memorijski bafer. Zato sam ovaj primer izmenio tako da slog bude
veličine 50-60K. Međutim, ništa se ne upisuje na disk i u slučaju
takvih velikih slogova!
A što se tiče "rada u pauzi", evo šta kaže NG:
NOIDLE prevents CA-Clipper from detecting and taking advantage
of idle time during execution of compiled applications. CA-Clipper
detects idle states (e.g. keyboard wait states) during execution of
compiled applications. When an idle condition is detected, the system
uses the slack time to perform garbage collection, file updates, and
other routine housekeeping duties. This increases system performance
by performing this work while the application is waiting for user
input.
Note: NOIDLE is provided for applications in which idle time
processing is unacceptable. Since it reduces overall system performance,
its use is generally not recommended.
Izgleda da se prethodno ne odnosi na fizičko upisivanje u datoteku.
clipper.328nbatocanin,
> Sto se tice broja od 1 - 2 K nisam bas siguran da je samo
> toliko. Nemam literaturu o organizaciji CLipper-ove
> memorije za podatke, tako da cu sledeca racunica ne mora
> da bude tacna ali ...
> Velicina bafera - 64K
U pravu si: ono 1-2K sam rekao otprilike i bez razmišljanja.
Verovatno se radi o većoj vrednosti. Međutim, što se tiče bafera od
64K, nema šanse: za baferisanje podataka se koristi VMM, a on alocira
memoriju do 64MB!
> ChkRec() upotrebljavam na sledeci nacin
žini mi se da ovaj sistem sa memorisanjem sloga može znatno usporiti
rad. Probaj da izbaciš ovo. Interesuje me da li se nešto menja u
brzini.
clipper.329nbatocanin,
> Kako u *.pll-u zameniti f-ju BiloKoju() za novu verziju
> iste. Za biblioteku je <<< TLIB proba -+ BiloKoju >>> a za
> PLL?
Napraviš novi PLL.
clipper.330nbatocanin,
> Ono što mene zanima je da li TTS omogućuje zaštitu od
> prljavog čitanja.
Nemam iskustva sa TTS-om, ali mi se čini da ovo mora da kontroliše
tvoja aplikacija (sistem za upravljanje bazom podataka, što bi
rekli). Otkud TTS da zna *tačno* šta ti hoćeš? Možda baš hoćeš da
gubiš promenu u ovakvim situacijama?
clipper.331nbatocanin,
> žini mi se da ti imaš original programa pa ću da te
> zamolim da nekom zgodnom prilikom ovde javiš šta kaže
> dokumentacija po tom pitanju, tj kada se vrši snimanje na
> disk sem u slučaju eksplicitnog zahteva sa nekom od commit
> naredbi.
Uh, trenutno mi papiri nisu ovde, ali videću.
clipper.332nbatocanin,
> A sad malo da zakukuljim - kako kad treba da ostane isti
> broj parametara? Npr. Trt(a, b, c) => Trt(c, a, b)
Pošto se pretprocesirane linije ponovo pretprocesiraju sve dok može,
lako će ti se desiti da upadneš u mrtvu petlju. Zašto komplikuješ i
ne rešiš sve oko argumenata u okviru f-je Trt?
clipper.333dr.grba,
>> sa EUKLID-a DISCLIPPER ali program ne radi kako treba odnosno nisam
>> nista uspeo sa njim da uradim...
Disclipper može da razbije kod pisan u Clipperu S'87, pod uslovom da
je pisam u plain vanila Clipperu.
clipper.334.bale.,
>> .......žekao sam 40 sec i resetovao. Nije se NIŠTA upisalo
>> na disk!
>
> U pravu si. Prvo što sam pomislio je da se upis vrši kada se popuni
> memorijski bafer. Zato sam ovaj primer izmenio tako da slog bude
> veličine 50-60K. Međutim, ništa se ne upisuje na disk i u slučaju
> takvih velikih slogova!
E, kako sad a da ne zaje*avam? ;-))) Nije nego, možda je ovako, a
možda onako... Možda pukne, a možda i ne :)
clipper.335snemcev,
>> Pošto se pretprocesirane linije ponovo pretprocesiraju sve dok može,
>> lako će ti se desiti da upadneš u mrtvu petlju. Zašto komplikuješ i
>> ne rešiš sve oko argumenata u okviru f-je Trt?
Zato što je Trt sistemska funkcija iz Clipper-ovih biblioteka ;(((
Izgleda da ona ideja sa #define i obraćanjem pažnje na mala i velika
slova može da posluži kao rešenje. Any other ideas?
clipper.336cnenad,
ŁŁŁ Disclipper moze da razbije kod pisan u Clipperu S'87, pod
ŁŁŁ uslovom da
To mi rece Vlada, ali videh da Dejan spominje DECLIPPER pa reko da
pitam jel imo neko iskustva sa takvim stvarima.
clipper.337arazumenic,
Kako nisam dobio odgovor na ranije pitanje, evo ga ponovo, jer mi je
zbilja veoma potrebno:
Kako u memoedit funkciji ograničiti unos na odredjeni broj redova?
Saša
clipper.338toma,
■> Kako u memoedit funkciji ograničiti unos na odredjeni broj redova?
Odmah da ti kažem, ovo je samo teorija, tj nisam probao ali
trebalo bi da radi.
Pretpostavljam da si proučio Batoćaninov Editor u Clipper-u, e
problem je što se tasteri koji prave novu liniju prvo izvrše pa onda
predaju kontrolu funkciji, ali.. odo da probam...
I naravno, jedna dobra ;) i jedna loša :( vest.
Dakle, uspeo sam da kontrolišem taster ENTER na sledeći način:
(delovi iz Editora..)
provera:=.F.
WHILE .T.
DoNotesEdit()
// Koja je komanda?
Ch := LastKey()
if provera
broj_linija:=mlcount(tekst,tekst_sirina)
if broj_linija > 10
keyboard chr(K_UP)+chr(K_END)+chr(K_DEL)
endif
loop
endif
......... Dakle ako je ENTER i broj linija veći od 10, vrati
kursor na prethdnu poziciju (UP + END + DEL) ....., naravno potreban
je i deo u user-defined :) funkciji....
CASE Mode == ME_IDLE
// Ispisivanje pozicije
Ch := LastKey ()
if Ch==K_ENTER
provera := .T.
keyboard chr(K_CTRL_W)
endif
..................
OTHERWISE // Mode == 2 i Mode == 3
Ch := LastKey ()
CASE Ch == K_CTRL_W
if !provera
Ret := ME_IGNORE
else
Ret := K_CTRL_W
endif
..... Ovo je isprobano i radi, aliiiii...
Loša vest. Novu liniju pravi ENTER (što smo rešili) i strelica na
dole (isključivo strelica, ništa PgDn, ništa Ctrl-X). Isti mogu da
izazovu kreiranje nove linije prelaskom u najdonji :) red teksta ili
prelamanjem linij (ENTER i insert mod). Dakle i strelica se da
repišiti na ranije opisan način. Međutim i dalje ostaje problem šta
ćemo sa rečima koje automatski padaju u sledeći red. Kao jedina
ostaje mogućnost da proveravamo ama baš svaki taster koji Memoedit
sam obradi (Mode == ME_IDLE) i onda:
ako je ENTER, ubacimo u bafer K_UP K_END K_DEL
ako je K_DOWN, --- || --- K_UP,
i ako je bilo šta drugo ubacimo K_BS (Backspace).
Napominjem da sam probao i realizovao samo ENTER, za ostalo ne
garantujem :))
ps. Sorry ako je nečitko i nejasno, malo je kasno, tj. rano
clipper.339majkl,
> Ono što mene zanima je da li TTS omogućuje zaštitu od
> prljavog čitanja.
Bez obzira da li se koristi TTS ili ne, čitanje vrednosti radi
izmene treba vršiti tek nakon zaključavanja. Pre i nije potrebno, i
rešava problem.
Mislim da ni TTS (kada bi trebao da omogući takvu zaštitu) ne bi
mogao drugačije, a onda bi naleteo na problem: da li je ovo čitanje
radi promene ili ne (recimo uzimanje podataka iz šifarnika). TTS-u
ostaje rešavanje drugih problema, poput dead lock-a i sl.
clipper.340dr.grba,
>> To mi rece Vlada, ali videh da Dejan spominje DECLIPPER pa reko da
>> pitam jel imo neko iskustva sa takvim stvarima.
Na kraju se UVEK svede na to da mi je lakše da osmislim svoje, pa to
i realizujem nego da čačkam tuđ kod. Eventualno da nešto naučim, da
vidim neki princip rešenja, onako kako Nenad radi u svojoj školi
Clippera u Računarima. Ali da sednem, pa petljam po celom source-u
aplikacije u kojoj je neko ostavio tragove svih svojih žurbi i
cajtnota... Ni u svojim programima to ne radim...
I zato, moj ti je kolegijalni savet da se ne trudiš i ne insistiraš
na upotrebi raznih razbijača koda. Suma sumarum - neće ti doneti
nikakvo dobro.
clipper.341cnenad,
ŁŁŁ I zato, moj ti je kolegijalni savet da se ne trudis i ne
ŁŁŁ insistiras na upotrebi raznih razbijaca koda. Suma sumarum -
ŁŁŁ nece ti doneti
Pitam da neko ne bi slucajno moj EXE razbijao a ne da ja razbijam
tudje. Ako znas ono ako ne mozes da ih pobedis pridruzi im se...
clipper.343arazumenic,
-> Odmah da ti kažem, ovo je samo teorija, tj nisam probao ali
-> trebalo bi da radi.
Hvala na ideji!
Ovo ću koliko sutra da probam, mada mi je želja bila da ako je moguće
ne koristim taj editor, jer mi nisu bile potrebene ugradjene funkcije.
Saša
clipper.344dr.grba,
Juče sam u PC.PROG:algoritmi napisao par reči o svom iskustvu u
traženju algoritma za dodelu kontrolnog broja žiro računu, kao
što traži SPPFN, eto čisto da ne zadremamo (:
Smlatio sam neko programče koje vam prepuštam na milost i nemilost.
Taj algoritam ja dalje razvijam za protrčavanje kroz nekoliko baza,
a ovaj deo svakako ostaje kao trajna kontrola za budućnost. Štaviše,
mislim, malo bolje razvijenom funkcijom logičke kontrole bi se mogao
trajno rešiti proces unosa žiro računa...
Svima kojima treba MOJ žiro račun u smislu dodele novčanih sredstava
sugeriram da ga traže na ma wr dr.grba (;
mod11.zipclipper.345dr.grba,
>> Pitam da neko ne bi slucajno moj EXE razbijao a ne da ja razbijam
>> tudje. Ako znas ono ako ne mozes da ih pobedis pridruzi im se...
Sećaš li se one priče o kriptovanju, pre izvesnog vremena u grupi
bussines? E, pa kriptovanjem rešiš sve stringove čijom bi izmenom
lopov došao do besplatnog programa za svoje potrebe.
clipper.346cnenad,
ŁŁŁ Secas li se one price o kriptovanju, pre izvesnog vremena u
ŁŁŁ grupi bussines? E, pa kriptovanjem resis sve stringove cijom
ŁŁŁ bi izmenom lopov dosao do besplatnog programa za svoje
ŁŁŁ potrebe.
Da, secam se. Ali ja i dalje ostajem pri pitanju. Moze li se necim
razbiti EXE pisan u 5.01. Kriptovanje je na mestu ali sta to vredi ako on
razbije EXE u SOURCE ? Onda nije tesko promeniti ime korisnika programa ?
clipper.347bipin,
# > Kako u *.pll-u zameniti f-ju BiloKoju() za novu verziju
# > iste. Za biblioteku je <<< TLIB proba -+ BiloKoju >>> a za PLL?
#
# Napraviš novi PLL
U pitanju su objekti onog Slovaka.
Jedino PLL daje korektnu aplikaciju, a kada povezem sa LIB-om
zaglavljuje kod kreiranja System1.dbf bez kreiranja Syserror.txt.
Isto se desava kada kreiram LIB ili PLL.
clipper.348d.petrovic,
Ă> razbiti EXE pisan u 5.01. Kriptovanje je na mestu ali sta to
Ă> vredi ako on razbije EXE u SOURCE ? Onda nije tesko promeniti ime
Ă> korisnika programa ?
ma ne zamaraj se bre :). Mislim da program preveden rtlink-om, sa
dinamičkim overlejima ne može da razbije. Program preveden blinkerom
isto ne može. E... program bez overleja..., nemam pojma, ali ko to
još pravi u kliperu ? ;))
clipper.349snemcev,
>> Štaviše, mislim, malo bolje razvijenom funkcijom logičke kontrole bi
>> se mogao trajno rešiti proces unosa žiro računa...
Da, ali samo za "obične" žiro račune. Koji kontrolni broj u ovom računu
(osim poslednjeg, koji je UVEK kontrolni broj)?
65500-840-215-62420
>> Svima kojima treba MOJ žiro račun u smislu dodele novčanih sredstava
>> sugeriram da ga traže na ma wr dr.grba (;
A jel ima kontrolni broj? ;))
clipper.350snemcev,
>> U pitanju su objekti onog Slovaka.
Bači bre to! Jes' da je interesantno, al' je sporo do zla boga.
clipper.351mandrejevic,
Pomagajte drugovi...
Kako da napravim PICTURE za TBCOLUMN?
Direktni pristup radi:
oC := TBColumnNew('Dat.Izd.', {|| Transform(_work -> dat_izd, '@d')})
Ali hocu da napravim univerzalni TBROWSE:
oC := TBColumnNew(cNaslov, {|| Transform(cImePolja, cPicture)})
^^^^^^^^^
Probao sam sve varijane sa makro operatorima ali nista ne pomaze ??!!
Dobijem recimo 'da._.zd'
clipper.352cnenad,
ŁŁŁ isto ne moze. E... program bez overleja..., nemam pojma, ali
ŁŁŁ ko to jos pravi u kliperu ? ;))
Ja, za sada... A inace linkujem BLINKER-om.
clipper.353oldtimer,
Pitanje postavlja kolega iz firme, pa reply može u mail ali je
bolje na voice (firma se zove MOVENS, čeljko, 1768-963, ili na
kućni broj 123-231)
Imam sledeci problem:
Pri upisu na mrežni disk Clipper mi javi internu grešku
i iskoči iz rada. Zapis je nečitak kao i sledećih nekoliko
(desetak) u toj datoteci. Ako je nastavljeno sa radom, a
greška nije ispravljena ostali zapisi su regularni. Pri
naknadnom ispravljanju (brisanje loših rekorda i pakovanje
datoteke) loši postaju zapisi koji su pre pakovanja bili iza
prljavog dela.
Podatke mogu koristiti samo ako one ispravne prebacim u
privremenu datoteku, obrišem izvornu i onda preimenujem
privremenu.
Ovo se desilo nekoliko puta u toku ove godine, a neznam
šta je uzrok tome jer se dešava na operaciji koja se dnevno
izvršava i po stotine puta. Radi se o dodavanju po nekoliko
desetina zapisa u datoteku odjednom i više korisnika istovremeno.
žudno mi je to što je datoteka neupotrebljiva i kada obrišem
loše zapise.
Da li je u pitanju nešto vezano za Clipper ili je neki problem
sa mrežnim diskom (Seagate - 300 MB - Novell 3.11)?
B) Miša
clipper.354nbatocanin,
>>> .......žekao sam 40 sec i resetovao. Nije se NIŠTA
>>> upisalo na disk!
>>
>> U pravu si. Prvo što sam pomislio je da se upis vrši kada
>> se popuni memorijski bafer. Zato sam ovaj primer izmenio
>> tako da slog bude veličine 50-60K. Međutim, ništa se ne
>> upisuje na disk i u slučaju takvih velikih slogova!
>
> E, kako sad a da ne zaje*avam? ;-))) Nije nego, možda je
> ovako, a možda onako... Možda pukne, a možda i ne :)
žuj, rasprave o ovakvim situacijama mogu biti samo komplikovanije i
za najbolje operativne sisteme/programe: šta će se desiti ako nestane
struja u toku kritičnih situacija?
U vezi teme, prevideo sam ono što reče NDragan: DOS ne menja dužinu
datoteke sve dok se ne zatvori. Zato se može reći da Clipper ne
upisuje *ništa* u DBF sve dok se ne zada COMMIT ili se datoteka
zatvori! Hmmm, kad malo razmislim, ovo i nije tako loše: kad radim
neku transakciju, mogu da računam da nikad neće biti upisan samo deo
slogova, već ili svi ili nijedan! Ali, ako želim da ostane što više,
onda nema druge nego COMMIT iza svake operacije.
clipper.355nbatocanin,
> Zato što je Trt sistemska funkcija iz Clipper-ovih
> biblioteka ;((( Izgleda da ona ideja sa #define i
> obraćanjem pažnje na mala i velika slova može da posluži
> kao rešenje. Any other ideas?
Daj malo više detalja, pa da vidimo.
clipper.356nbatocanin,
> Kako u memoedit funkciji ograničiti unos na odredjeni broj
> redova?
Ovako bez probe:
1) U statusnoj liniji normalno ispisuješ brojeve Lin/Col, a kada
korisnik prešiša, ti mu ispišeš blink poruku "MALI, NE PRETERUJ" ;)
2) Isto to, ali kad se brojač redova popne na nedozvoljen nivo
ignorišeš tekuću komandu i generišeš skok na poslednji regularan red.
3) Napraviš običan GET željenog broja stringova.
clipper.357d.petrovic,
Ă> ŁŁŁ isto ne moze. E... program bez overleja..., nemam pojma, ali
Ă> ŁŁŁ ko to jos pravi u kliperu ? ;))
Ă>
Ă> Ja, za sada... A inace linkujem BLINKER-om.
Pa koliki su ti programi? ;)
clipper.358.bale.,
> slogova, već ili svi ili nijedan! Ali, ako želim da ostane što više,
> onda nema druge nego COMMIT iza svake operacije.
A šta je sa dvofaznim COMMIT-om? Kad već Clipper to sam ne radi (ili
radi?), možeš to da ubaciš u svaku aplikaciju. Pa onda rollback itd,
ispade aplikacija od 1000 linija velika 4MB ;-) Naravno, isključi se
cache diska, osim, eventualno, ako je ugrađen u OS, a znamo da nije :)
clipper.359snemcev,
>> Daj malo više detalja, pa da vidimo.
Recimo da se funkcija zove dbUseArea() i da njen treći parametar treba
promeniti tako da umesto vrednosti "koznasta" dobije vrednost
"e:\koznasta". Kontrola pristupa podacima iz programa tj. program može
da uzima podatke samo sa unapred određenog mesta, a ne iz tekućeg
direktorijuma ili ko zna odakle.
clipper.360v.nesic,
> Kako da napravim PICTURE za TBCOLUMN?
> ...
> oC := TBColumnNew(cNaslov, {|| Transform(cImePolja, cPicture)})
oC := TBColumnNew( cNaslov, &( '{|| Transform(' + cImePolja + ;
', "' + cPicture + '")}' ) )
clipper.361dusanp,
=> CA-Clipper detects idle states (e.g. keyboard wait states)
=> during execution of compiled applications. When an idle
=> condition is detected, the system uses the slack time to
=> perform garbage collection, file updates, and
Postavlja se zanimljivo pitanje: neka sve i radi tako kako
pise, ali pretpostavljam da se cela magija odvija kada je cliper
u nekoj inkey(0) pauzi. E sad, ako ja koristim moju verziju inkeja,
koja se originalnom obraca samo preko inkey(), clipper prakticno
nece nikada detektovati idle time. Sta mislite o tome?
clipper.362bulaja,
│E sad, ako ja koristim moju verziju inkeja, koja se originalnom obraca
│samo preko inkey(), clipper prakticno nece nikada detektovati idle time.
└───
Clipper ima svoj interni keyboard mehanizam, cije usluge samo koriste
zamene za Inkey() koje napises. Preko tog internog keyboard sistema
(koji ne mozes da promenis) su napravljene i stvari kao sto su SetKey(),
typeahead buffer, LastKey(), praznjenje database buffera i druge
funkcije viseg nivoa. Iz NanForum 2.1 source-a je moglo da se nauci
korisnih stvari o celom tom mehanizmu u Clipper-u 5.01 (npr. gde je
adrese keyboard buffera), nazalost on je promenjen u CA-Clipper 5.2,
a to jos nigde nije dokumentovano :).
clipper.363arazumenic,
-> 1) U statusnoj liniji normalno ispisuješ brojeve Lin/Col, a kada
-> korisnik prešiša, ti mu ispišeš blink poruku "MALI, NE PRETERUJ" ;)
Moj jedini odogovor na može biti: LEPO SI ME NASMEJAO!
-> 2) Isto to, ali kad se brojač redova popne na nedozvoljen nivo
-> ignorišeš tekuću komandu i generišeš skok na poslednji regularan red.
Probaj. Videćeš da ne ide.
-> 3) Napraviš običan GET željenog broja stringova.
Definitivno otpada, jer se uneti sadržaj upisuje u datoteku.
clipper.364v.nesic,
Povodom rasprave vođene po pitanju kada kliper snima podatke, evo
još jednog priloga:
use proba
for i := 1 to 1000
append blank
next
go 1
commit
for i := 1 to 1000
replace proba->polje with str(i)
skip
next
alert("Resetuj me", " ! ")
Datoteka proba ima polje dužine 1024 znaka.
Rezultat: prvih 492 sloga su bili ažurirani, ostatak je bio prazan.
clipper.365d.petrovic,
Ă> -> 3) Napraviš običan GET željenog broja stringova.
Ă> Definitivno otpada, jer se uneti sadržaj upisuje u datoteku.
Kakve to veze ima ?
clipper.366d.petrovic,
Ă> Datoteka proba ima polje dužine 1024 znaka.
Ă> Rezultat: prvih 492 sloga su bili ažurirani, ostatak je bio
Ă> prazan.
Verovatno je malo memorije na računaru, inače nebi bilo ubačno NI 492
clipper.367neman,
> Povodom rasprave vodene po pitanju kada kliper snima
> podatke, evo jos jednog priloga:
Jos jedno pitanje se postavlja nakon svega ovog. U NG-u kaze da DBCOMMIT
treba raditi kada je slog zakljucan, a u slucaju da nije zakljucan mogu
da nastanu problemi. Kada se zatvara datoteka, Clipper vrsi njeno azuri-
ranje tj. snimanje. Ako prihvatimo tezu da DBCOMMIT() i CLOSE rade iste
stvari samo sto CLOSE i zatvara datoteku, nije mi jasno zasto ne mogu da
koristim DBCOMMIT() kad mi je volja. Ovu problematiku bi trebao da resava
operativni sistem, medjutim mislim da bi i Clipper to trebao da regulise.
Neko je pomenuo pojavu djubreta u datoteci; i kod mene se javilo na jednom
ili dva mesta ove godine. Mislim da je to posledica kolizije vise CLOSE
naredbi.
neman
clipper.368dejanr,
>> Dejane da li mislis na DISCLIPPER ili bas DECLIPPER, jer skinuo sam
>> sa EUKLID-a DISCLIPPER ali program ne radi kako treba odnosno nisam
>> nista uspeo sa njim da uradim. A ako je u pitanju DECLIPPER onda
>> je to izgleda nesto novo i opasno ?
Iskreno rečeno, ne sećam se tačno. Video sam neki program tog tipa,
mislim da se zvao DECLIPPER. Pošto sam zaključio da se radi o stvari
koju je bolje "utamaniti", naprosto sam je obrisao. ZKrstić je nešto
testirao, mislim da je ustanovio da se korišćenjem nekih caka pri
linkovanju može malo zamutiti stvar, ali je to bio program od pre
par godina, možda su u međuvremenu napravili bolji...
clipper.369arazumenic,
-> Ă> -> 3) Napraviš običan GET željenog broja stringova.
-> Ă> Definitivno otpada, jer se uneti sadržaj upisuje u datoteku.
->
-> Kakve to veze ima ?
A kako bi ti organizovao datoteku koja treba da sadrži neki tekst čija je
dužine promenljiva (od 0, pa do recimo 15 redova) nego preko memo polja?
Nećeš valjda da imaš 15 polja dužine 80 karaktera?
Saša
clipper.370dusanp,
=> Clipper ima svoj interni keyboard mehanizam, cije usluge samo
=> koriste zamene za Inkey() koje napises.
Naravno. Ali pretpostavljam da je detektovanje neaktivnosti
uradjeno u stilu "ako se program nalazi u inkeyu>xx sec, uradi
commite i sve ostalo...". Posto se ja originalnom inkey servisu
obracam samo na kratko (inkey()), pretpostavljam da se onih xx
sec nikada ne dostigne.
Jeste da se baze napune sigurno pri close-u, ali me brine
mogucnost da je interni clipper mehanizam za detektovanje idle
time-a onemogucen.
clipper.371ndragan,
/ rekli). Otkud TTS da zna *tačno* šta ti hoćeš? Možda baš hoćeš da
/ gubiš promenu u ovakvim situacijama?
Posle sam i ja razmislio - upravo mora biti tako, odnosno moram sam da
vozim računa o tome, a TTS mi samo obezbeđuje da se ne sudarim sa nekim.
clipper.372dr.grba,
>> Da, ali samo za "obične" žiro račune. Koji kontrolni broj u ovom
>> računu (osim poslednjeg, koji je UVEK kontrolni broj)?
>>
>> 65500-840-215-62420
Ovo je broj nekog levog fonda, već ima četiri grupe i iz meni neznanih
razloga ne dira se.
>> >> Svima kojima treba MOJ žiro račun u smislu dodele novčanih
>> ...
>> A jel ima kontrolni broj? ;))
Od tebe primam samo kafu i hladno jagodinsko (;
clipper.373bulaja,
Stavljate li automatski SET DELETED ON na pocetak svih svojih programa?
Ako vam nije preko potrebno filtriranje obrisanih slogova, onda ipak od
sad stavljajte SET DELETED *OFF* :). Obican dbSkip() po celoj bazi ce
ovim raditi nekoliko puta brze (ja sam sad merio na nekoj bazi i dobio
ubrzanje 7.5 puta). Ovo stoga sto postavljanjem SET DELETED ON, Clipper
prakticno uradi jedan SET FILTER TO Deleted() za svaku bazu, sto naravno
usporava rad.
clipper.374bulaja,
│Naravno. Ali pretpostavljam da je detektovanje neaktivnosti uradjeno
│u stilu "ako se program nalazi u inkeyu>xx sec, uradi commite i sve
│ostalo...".
└───
Neverujem. Verovatno je to uradjeno na najnizem (ili najvisem, zavisno
kako posmatrate:) nivou Clipper sistema. Ali pravu istinu mozda necemo
saznati dokle god neko ne nabavi onaj Clipper Technical Reference sto
ga CA reklamira :).
clipper.375snemcev,
>>>> 65500-840-215-62420
>>
>> Ovo je broj nekog levog fonda, već ima četiri grupe i iz meni
>> neznanih razloga ne dira se.
Eh, da je meni taj broj računa... Na njega u Kikindi ide onih 1% poreza
na finansijske transakcije.
clipper.376ndragan,
/ Nećeš valjda da imaš 15 polja dužine 80 karaktera?
Petnaest memorijskih promenljivih, koje onda trimuješ i slepiš, i onda
ubaciš u memo polje. Problem je što onda gubiš repovanje, a ne znaš ni
kad je bio pritisnut enter.
clipper.377cnenad,
ŁŁŁ Pa koliki su ti programi? ;)
400 Kb. exe ?
clipper.378cnenad,
ŁŁŁ 400 Kb. exe ? Sa incremental ON i bez opcije u kompajliranju /b !
clipper.379arazumenic,
-> Petnaest memorijskih promenljivih, koje onda trimuješ i slepiš, i onda
-> ubaciš u memo polje. Problem je što onda gubiš repovanje, a ne znaš ni
-> kad je bio pritisnut enter.
Eto i sam vidiš da je neprimenljivo, jer se uneti tekst mora sačuvati.
Saša
clipper.380ndragan,
/ sad stavljajte SET DELETED *OFF* :). Obican dbSkip() po celoj bazi
Evo rezultata iz FoksProa; mere su u sekundama i milisekundama.
set dele for !dele() set filter to !dele()
broj slogova off on off off
(čitanje baze u petlji scan/endscan)
7774 3,569 3,313 3,758 4,067
21768 10,180 9,397 10,530 11,152
(replace all brdok with "*", bez indeksa)
21768 31,068 27,032 27,854 28,274
(replace all brdok with "*", jedan strukturni indeks po datumu)
21768 29,149 25,996 27,102 26,668
Pre merenja, urađeno je Recall All, pa brisan svaki peti slog. Ploča SX
na 33, 2M, pola mega dato pisi kešu, Qemm 6. Disk Sigejt 1219A ili tako
nešto, 210MB. Veličina datotetke (sa 21768 slogova) 2,9MB.
Sve u svemu, u FoksProu se najviše isplati Set Deleted On, bez ručnog
petljanja sa funkcijom Deleted(), a razlike baš i nisu neke.
clipper.381bora,
U vezi diskusije o žiro računima:
1. Kontrolni broj za broj partije (četvrti broj od 7 cifara) je
uveden u žiro račune tek u zadnje dve godine. Za takve račune sedma
cifra je kontrolni broj samo za prvih 6 cifara partije (nule su
vodeće). Stariji računi to nemaju i zato je uveden kontrolni broj za
ceo žiro račun na mestu namene (3 cifre ali se upisuje samo jedna
cifra).
2. Kontrolni broj za ceo žiro račun se uvodi SAMO za žiro račune
kod kojih račun (drugi broj od 3 cifre) počinje sa 6 (grupa 6) kao
što je najčešće xxxxx-601-zzz-xxxxxxx (zzz kod takvih ne postoji i
menja se sa kontrolnim brojem.
Bora
clipper.382snemcev,
>> 1. Kontrolni broj za broj partije (četvrti broj od 7 cifara) je
Mešaš pojam cifre i broja. Uopšte mi nije jasno šta si hteo ovim da
kažeš. Znam da je poslednja cifra u broju individualne partije
kontrolna, ali na šta se odnosi "četvrti broj od 7 cifara" stvarno ne
mogu da dokučim.
>> 2. Kontrolni broj za ceo žiro račun se uvodi SAMO za žiro račune
>> kod kojih račun (drugi broj od 3 cifre) počinje sa 6 (grupa 6) kao
Koji je to drugi broj od tri cifre? Valjda misliš na drugu grupu cifara
u broju žiro računa tj. broj posle oznake filijale SPP.
clipper.383dr.grba,
>> vodeće). Stariji računi to nemaju i zato je uveden kontrolni broj
>> za ceo žiro račun na mestu namene (3 cifre ali se upisuje samo
>> jedna cifra).
Mislim da je bilo reči o zameni, tj dodeli kontrolnog broja partije
tim starim žiro-računima. Da li je to tačno i da li je to sprovedeno?
clipper.384milanv,
Da bi se dobila dužina neke .DBF baze, verovatno je najlakši
način primeniti formulu: RECSIZE() * LASTREC() + HEADER() + 1. I
to je jasno i opšte-poznato. Međutim, nije mi jasno kako se može
'izmeriti' dužina .DBT fajla. Pretpostavljam da je rešenje
trivijalno, ali ja propisno olupah zid glavom, a problem stoji...
clipper.385bulaja,
│Da bi se dobila duzina neke .DBF baze, verovatno je najlaksi nacin
│primeniti formulu: RECSIZE() * LASTREC() + HEADER() + 1. I to je jasno
│i opste-poznato. Medutim, nije mi jasno kako se moze 'izmeriti' duzina
│.DBT fajla. Pretpostavljam da je resenje trivijalno, ali ja propisno
│olupah zid glavom, a problem stoji...
└───
Evo kako se dobija duzina bilo koje datoteke, poziva se npr. sa
bu_FileSize("Memo.DBT") (slobodno promenite ime funkciji:) i vraca
duzinu datoteke.
#include "Directry.ch"
**** ---------------------------------------- ****
FUNC bu_FileSize (cFileName)
LOCAL aDir, nSize
aDir := Directory (cFileName)
IF Len (aDir) != 1
// file not found
nSize := 0
ELSE
nSize := aDir[ 1, F_SIZE]
ENDIF
RETURN (nSize)
clipper.386mcgoran,
- Povodom Dejanove poruke u PC.PROG.2 u vezi lastrec()
> Da li ste vec culi da... Clipper funkcija LASTREC() vraca 1 ako
> u bazi ima nula slogova. Takode vraca 1 ako u bazi ima jedan
> slog.
Ovo mi je malo cudno jer ja "if lastrec() == 0" koristim bez
problema u detekciji da li je .dbf prazna.
Napisah stoga, provere radi, sledeci test program u
Clipperu 5.01 (Nantucked) :
------
proc main()
dbCreate( 'test', {{'a','C',1,0},{'b','C',2,0}} )
use test new
? test->(lastrec())
------
i rezultat rada programa je 0 (nula).
Dejane Vor hepn ?!
clipper.387ematic,
> Evo kako se dobija duzina bilo koje datoteke, poziva se npr. sa
Postoji i drugi način, mada se meni lično više sviđa ovaj bulajin :)
#include "fileio.ch"
function filesize(fname)
local handle := fopen(fname), size
if handle != -1
size := fseek(handle, 0, FS_END)
else
size := 0
// Greška..
endif
fclose(handle)
return size
clipper.388d.petrovic,
Ă> ŁŁŁ Pa koliki su ti programi? ;)
Ă>
Ă> 400 Kb. exe ?
Zar nije zdravije da kod tolikog programa ode 150 K u overleje
(rtlink i blinnker prilično lepo rade sa overlejima) i ta memorija
ostane za baze ??
clipper.389domana,
Da li neko zna da je napravljen btrieve record manager za clipper 5.2. Odgovori
na licnu postu, molim :)
Miki
clipper.390bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
vern_six zip 5775 Spisak funkcija u Vern Six's Clipper 5.x biblioteci
vs_904 a01 184617 Vern Six's Clipper ToolBox v9.04 biblioteka #1
vs_904 a02 184469 Vern Six's Clipper ToolBox v9.04 biblioteka #2
vs_904 a03 181470 Vern Six's Clipper ToolBox v9.04 biblioteka #3
clipper.391cnenad,
ŁŁŁ Ă> 400 Kb. exe ? Sa Blinkerom 2.0. INCREMENTAL ON !
ŁŁŁ
ŁŁŁ Zar nije zdravije da kod tolikog programa ode 150 K u
ŁŁŁ overleje (rtlink i blinnker prilicno lepo rade sa overlejima)
ŁŁŁ i ta memorija ostane za baze ??
Ovo sam cekao. Mislim da je vreme da se uhvatim u kostac i sa tim
problemom. Moze li kratak kurs kako to izvesti ?
clipper.392ndragan,
/ Eto i sam vidiš da je neprimenljivo, jer se uneti tekst mora sačuvati.
Sačuvao bi se kad ga prebaciš u memo polje, nego kažem da se ne bi znalo
da li je pritisnut enter za kraj reda ili nije, tj. da li da taj cr
ubacuješ u memo ili ne, da li je trebalo poslednju reč iz jednog stringa
prebaciti u sledeći red i eventualno spojiti (ili je čovek ubacio
crticu)...
I obratno, za ispravke bi morao da ga pustiš u memoedit ili da vadiš oči
kako ćeš memo polje da isečeš na pet stringova, i opet da spajaš i
vraćaš nazad.
Sve skupa, zašto ne središ stvar jednom valid funkcijom - da izbroji
redove u memo polju, i da kaže "tekst je duži od 5 redova - skrati
malo", i da ga vrati u memoedit.
clipper.393ndragan,
/ Postoji i drugi način, mada se meni lično više sviđa ovaj bulajin :)
Bulajino brže radi, jer čita samo direktorij, a ovo sa niskim udarcima
(low level file functions) mora da ga nađe u direktoriju, otvori, i
zatvori. To traje.
Verzija za foks:
func fsize func fsize
para fname para fname
priv fridrih, duz priv n,d
fridrih=fopen(fname) n=adir(d,fname)
if fridrih>0 if n=1
duz=fseek(fridrih,0,2) retu d(1,2)
else else
duz=0 retu 0
endif endif
=fclose(fridrih)
retu duz
I meni se lepše sviđa desna verzija. Lako se prepravlja da vraća i
vreme, datum i/ili atribute fajla.
clipper.394dr.grba,
>> Ovo sam cekao. Mislim da je vreme da se uhvatim u kostac i sa tim
>> problemom. Moze li kratak kurs kako to izvesti ?
Evo šablona za Blinker (sa # se označavaju komentari):
# Blinker 2.0 Sample Link file for Clipper 5.01
#
# For final links - UN-COMMENT the following command:
# BLINKER INCREMENTAL OFF
#
BLINKER EXECUTABLE CLIPPER F25;SWAPPATHK:ĐSWP;
#
OUTPUT <EXE filename>
#
FILE <MAIN Clipper routine>
#
# E, ovde počinje spisak modula u overlejima:
BEGINAREA
FILE <next Clipper file>
FILE <next Clipper file>
#
# UNCOMMENT and list your own Clipper code libraries here
# LIBRARY <my library>
# LIBRARY <my other library>
#
# UNCOMMENT and list your overlayable 3rd party libraries here
# LIBRARY <3rd party>
# LIBRARY <3rd party>
ENDAREA
#
# Sad spisak modula koji ne idu u overleje, po želji ili po potrebi
# (asembler i C moduli MORAJU "dole")
#
# Uncomment and list your 3rd party non overlayable object modules here
# FILE <3rd party1>,<3rd party2>
#
# UNCOMMENT and list 3rd party non-overlayable libraries here:
#
# LIB nanfor
# LIB expand
# ...
# FILE CLD.LIB
#
# Ovde ide navod .LNK fajla koji leži u lib direktorijumu, a koji dodatno
# kontroliše gde će koji modul iz osnovnih Clipper biblioteka
#
# Call the distribution script to overlay EXTEND.LIB ( MIN / MID / MAX )
čCL501MIN.LNK
#
# Microsoft LLIBCA C library comes last if needed
# LIB LLIBCA
Sa RTLINK programom slično. u xxx.lnk fajlu ide:
fi glavni
fi prateci_1
...
fi prateci_n
fi help
beginarea
fi overlay_1
fi overlay_2
...
fi overlay_n
endarea
lib expand, nanfor
;
Naravno, radi komplikacije sve ovo može i u pletenicu da se zamota, ali
za potrebe programiranja 99% je povoljno upotrebiti ovakav šablon.
A šta ide dole, šta gore? Pa, formalno, dole ide samo main() struktura i
asembler/C rutine, a da sve ostalo može u overleje. Sad, pitanje je koliko
valjane perfomanse taj princip daje. Stoga često pozivane procedure valja
potrpati u donji deo. Tipičan primer procedure koja treba da je u donjem
delu je user defined help, koji zbog visoke frekvencije poziva daje bolje
perfomanse ako je uvek u memoriji... Ovde, dakako, sledi mnogo duža i
ozbiljnija priča....
clipper.395dr.grba,
>> =fclose(fridrih)
....
>> I meni se lepše sviđa desna verzija....
I meni, e zbog onog Fridriha (;
clipper.396jpiri,
Verovatno su se mnogi od vas (poput mene) svojevremeno slatko smejali
citajuci poruke koje su bile ugradjene u Apple-ov C kompajler (VICEVI 6.51).
Da vas podsetim, poruke su bile u stilu:
"type in (cast) must be scalar; ANSI 3.3.4; page 39,
lines 10-11 (I know you don't care, I'm just trying to annoy you)"
ili:
"Too many errors on one line (make fewer)"
Nemojte misliti da su ovakve duhovitosti rezervisane samo za Apple-ove pro-
gramere! Elem, ako pokrenete Clipper kompajler sa malo slobodnog RAM-a
(npr. Brief vam je ostao rezidentan), Clipper ce odbiti prevodjenje uz
odgovarajucu poruku ('Not enough memory'). Medjutim, ako ostavite rezidentan
npr. Telix (sto se meni sticajem okolnosti dogodilo) Clipper ce krenuti da
prevodi a onda ce se kada u programu naidje na PROCEDURE ili FUNCTION za koje,
gle cuda, odjedared nema dovoljno RAM-a, potpuno slogirati, prekinuti
prevodjenje i izbaciti vrlo promucurnu i nadasve informativnu poruku:
"FATAL C3050: Something terrible has happened!"
Ponukan ovom porukom (i zeljan dobre zabave) procesljah CLIPPER.EXE
i nadjoh jos par lepih porukica:
- "Push a WHAT?"
- "END wreaks terrible vengeance on control stack!"
- "Unresolved DO target symbol kills parse tree!"
- "Control level closure leaves gaping wound in control stack!"
- "Ford Maverick error number" (?)
U novoj verziji Clipper-a ocekujem da suvoparnu i neinventivnu
poruku "File not found" zamene sa npr. mnogo poeticnijom:
"Something's rotten in the state of Denmark!"
Em je nadahnutije, em covek o'ma' zna gde skripi.
clipper.397gari,
Ovo mi na prvi i drugi pogled izgleda super!
A ako hocete da jos vise ugodite korisnicima sezam-a
onda bi mogli (pored verzije 9.05 koja je izasla u maju)
da dignete i sledecu stvar:
DBC.ZIP 168281 03-08-92 Data Base Communications- This
program will
| link up to another computer using
this same
| program via modem & establish
communications
| to transfer records from one
database to
| another. This program is totally
generic in
| that it will work with any database
| structure. Transmitted records go
directly
| into the receiving database after
being
| verified. Error correction is
implemented. By
| Vern Six.
pozdrav, Gari.
p.s. Narode glasajte za ovo !!!
clipper.398cnenad,
ŁŁŁ Evo sablona za Blinker (sa # se oznacavaju komentari):
Grbo, stvarno si DR. ! :))) Bas sam razmisljao sa cime cu da se zezam narednih
dana kad eto meni domaceg zadatka. TNX
clipper.399dr.grba,
>> p.s. Narode glasajte za ovo !!!
Glasam za tvoje remek delo preloma teksta (:
clipper.400nbatocanin,
> A šta je sa dvofaznim COMMIT-om? Kad već Clipper to sam ne
> radi (ili radi?), možeš to da ubaciš u svaku aplikaciju.
> Pa onda rollback itd, ispade aplikacija od 1000 linija
> velika 4MB ;-) Naravno, isključi se cache diska, osim,
> eventualno, ako je ugrađen u OS, a znamo da nije :)
Nisam te baš najpreciznije razumeo. Ako misliš da je COMMIT naredba
za kontrolisan upis izmena na disk, varaš se (na žalost). Ako hoćeš
da kažeš da je potrebna neka nadgradnja/poboljšanje originalnog
Clipper-ovog sistema za pristup bazi podataka, slažem se.
clipper.401nbatocanin,
> Jeste da se baze napune sigurno pri close-u,
> ali me brine mogucnost da je interni clipper mehanizam za
> detektovanje idle time-a onemogucen.
Može da bude. Treba isprobati.
clipper.402nbatocanin,
> -> 1) U statusnoj liniji normalno ispisuješ brojeve
> Lin/Col, a kada -> korisnik prešiša, ti mu ispišeš blink
> poruku "MALI, NE PRETERUJ" ;)
>
> Moj jedini odogovor na može biti: LEPO SI ME NASMEJAO!
Dobro, ne mora baš ova poruka ;) Može i: "TO ŠTO PIŠEŠ OKAžI MAžKU O
REP" ;)
> -> 2) Isto to, ali kad se brojač redova popne na
> nedozvoljen nivo -> ignorišeš tekuću komandu i generišeš
> skok na poslednji regularan red.
>
> Probaj. Videćeš da ne ide.
Nemam vremena, ali mi se i dalje čini da može.
> -> 3) Napraviš običan GET željenog broja stringova.
>
> Definitivno otpada, jer se uneti sadržaj upisuje u
> datoteku.
Kakve to veze ima?
clipper.403stosic,
Mozda je bilo...
PERFORMANSE
-----------
Funkcija AEVAL() bi trebalo da brze obradjuje nizove od FOR petlje.
Nije uvek najcitljivije, ali ako je brze...
Koliko?
Za zainteresovane tu je i test primer.
test.zipclipper.404dr.grba,
>> da kažeš da je potrebna neka nadgradnja/poboljšanje originalnog
>> Clipper-ovog sistema za pristup bazi podataka, slažem se.
Nešto mi govori danam je ovde potreban neki C guru...
clipper.405snemcev,
>> Funkcija AEVAL() bi trebalo da brze obradjuje nizove od FOR petlje.
>> Koliko?
>> Za zainteresovane tu je i test primer.
Mislim da bi poruka bila mnogo konstruktivnija da si tu naveo rezultate
merenja umesto programa, pa ko voli nek izvoli.
Btw, drastičNo ubrzanje se postiže i u petljama tipa:
FOR i=1 TO Len(aNiz)
Obrada(aNiz[i])
NEXT
Mnogo brže radi:
nTo := Len(aNiz)
FOR i=1 TO nTo
Obrada(aNiz[i])
NEXT
clipper.406stosic,
>>Mislim da bi poruka bila mnogo konstruktivnija da si tu naveo rezultate
>>merenja umesto programa, pa ko voli nek izvoli.
Mislim da bi mnogo konstruktivnije bilo da si skinuo program i onda
se javio.
Za manje zainteresovane:
Funkcija AEVAL() (po Rick Spence-u i nbatocanin-u) brze obradjuje nizove
od FOR petlje. Kod je manje citljiv, ali valjda bar toliko brzi da se
isplati njegova upotreba (niko ne kaze koliko brzi).
U ovom primeru AEVAL() je SPORIJI od FOR petlje (0.38;0,33 sec - kod mene).
>>Btw, drasticNo ubrzanje se postize i u petljama tipa:
Btw, gde su tvoji rezultati merenja?
clipper.407dejanr,
>> Btw, drastičNo ubrzanje se postiže i u petljama tipa:
>> FOR i=1 TO Len(aNiz)
>> Mnogo brže radi:
>> nTo := Len(aNiz)
>> FOR i=1 TO nTo
Zbog toga bi trebalo onoga ko je pravio optimizacije u Clipper-u
okačiti o... ;) To je bukvalno prva optimizacija koja se radi :(
clipper.408ttop,
#include "commands.ch"
-----------
Jel može ovo neko da zakači . Al hitno. :)
Pozdrav, Ttop
clipper.409d.petrovic,
Ă> ŁŁŁ Zar nije zdravije da kod tolikog programa ode 150 K u
Ă> ŁŁŁ overleje (rtlink i blinnker prilicno lepo rade sa overlejima)
Ă> ŁŁŁ i ta memorija ostane za baze ??
Ă>
Ă> Ovo sam cekao. Mislim da je vreme da se uhvatim u kostac i sa tim
Ă> problemom. Moze li kratak kurs kako to izvesti ?
Postoje dva načina:
1. Da pozoveš Rtlink ili Blinker bez menjanja default parametara i
praviće ti overleje prilično lepo raspoređene.
2. Ako hoćeš da budeš siguran šta je gde smestio smestiš u .lnk fajl
(ovo je za RtLink):
OUTPUT R
RESIDENT FILE RGM2MSF, MENU, DECTOBIN
DYNAMIC FILE FUNKCIJE, PROCEDUR, RADMAG, INSTALL, IZVESTAJ, PRINT, CALCULAT
LIBRARY NANFOR
i dobiješ izvršni kod, jelte... koji startuješ sa:
C:Đ>r <Enter> :)))
P.S. Ovo je sve za kod pisan u kliperu, ako hoćeš da smestiš neki
.asm ili .c program u overleje onda to ide u statičke overleje. Da
objašnjavam ? :)
clipper.410bulaja,
│DBC.ZIP 168281 03-08-92 Data Base Communications- This program will
└───
Ok, videcemo sta se moze uraditi :). Samo kazi mi sa kog je ovo BBS-a
(ja se vise ne secam:), ClipBoard-a, Hekoma, Blinkera,..?
clipper.411arazumenic,
-> Sve skupa, zašto ne središ stvar jednom valid funkcijom - da izbroji
-> redove u memo polju, i da kaže "tekst je duži od 5 redova - skrati
Eh, tako sam u samom startu rešio problem. Ali, želja mi je bila da u samom
memoeditu uvedem ovo ograničenje.
Saša
clipper.412arazumenic,
-> Dobro, ne mora baš ova poruka ;) Može i: "TO ŠTO PIŠEŠ OKAžI MAžKU O
-> REP" ;)
Ovakve ili slične poruke ostavljam tebi da ih ti ugradjuješ u svoje programe.
-> Nemam vremena, ali mi se i dalje čini da može.
Postoji razlika izmedju "čini mi se da može", "znam da može" i "radi".
Ja sam probao i ne može, a i po ostalim porukama koje su proistekle iz
mog pitanja, zaključujem da i drugi ne mogu da iskontolišu memoedit na
način na koji sam želeo.
-> Kakve to veze ima?
Pogledaj poruku 11.369 i dalje.
clipper.413toma,
■>>> nTo := Len(aNiz)
■>>> FOR i=1 TO nTo
■>
■> Zbog toga bi trebalo onoga ko je pravio optimizacije u Clipper-u
■> okačiti o... ;) To je bukvalno prva optimizacija koja se radi :(
Ih pa nisu samo Srbi najpametniji. A šta ako unutar petlje ima
jedno aadd(aNiz, "Šta sada!"). Nije baš isto, a?
clipper.414d.petrovic,
moze :)
clipper.415dejanr,
>> Ih pa nisu samo Srbi najpametniji. A šta ako unutar petlje ima
>> jedno aadd(aNiz, "Šta sada!"). Nije baš isto, a?
Naravno da nije, o tome optimizacija mora da vodi računa - izvan petlje
se vade konstante koje se u petlji ne menjaju.
I, što jes jes, vodili su računa pa ostavili sve konstante :(
PS U nekim jezicima se specijalno kod FOR petlje kaže da važe vrednosti
koje su bile u trenutku nailaska na FOR, a posle ako i menjaš, to ne
utiče na granice. To je u suštini ok kompromis, jer ako će se granice
menjati, trebalo bi koristiti WHILE.
clipper.416cnenad,
ŁŁŁ .asm ili .c program u overleje onda to ide u staticke
ŁŁŁ overleje. Da objasnjavam ? :)
Sto se mene tice, ne znam C niti imam nameru da povezujem clipper sa
C-om ali ako nekom drugom treba zasto da ne ?
clipper.417snemcev,
>> Btw, gde su tvoji rezultati merenja?
Za prepucavanje nisam raspoložen, a poruka je bila krajnje dobronamerna.
Kraj diskusije.
clipper.418snemcev,
>> Zbog toga bi trebalo onoga ko je pravio optimizacije u Clipper-u
>> okačiti o... ;) To je bukvalno prva optimizacija koja se radi :(
Jeste i baš zato nisam dosad ni obraćao pažnju na to, al' od kad sam
probao... neverovatno kako na takvu banalnost nisu mislili.
Btw, jel neko voljan da pogleda u zvaničnoj dokumentaciji da li Clipper
uopšte i sprovodi bilo kakvu optimizaciju?
clipper.419snemcev,
>> Jel može ovo neko da zakači . Al hitno. :)
Sudeći po nazivu, to može biti iz bilo kog paketa. Jel može nešto
konkretnije?
clipper.420stosic,
>>Za prepucavanje nisam raspolozen...
Nije rec o prepucavanju vec o nacinu odgovaranja na poruku.
Za one koji su skoro nezainteresovani:
//---------------------------------------------------
// Da li AEVAL() brze obradjuje nizove od FOR petlje?
// Da, tako kaze Rick Spence.
//
// Zasto ovaj primer to ne potvrdjuje?
//
// Slucajnost?
// Tako se ne meri vreme?
//
// Sta VI mislite?
//---------------------------------------------------
#define ROW 1
#define COL 2
#define CHA 3
// Matrica EKRAN sadrzi jednu masku za ekran.
// To je u ovom programu retko popunjena matrica, pa se za njeno cuvanje
// formira nova. Matrica SADRZAJ_EKRANA cuva samo karaktere iz maske.
//
procedure test()
local ekran[25][80]
local sadrzaj_ekrana
local element
local i, j
local sekunde
// Generisanje maske
//
ekran[1][2] := "A"
ekran[25][79] := "B"
// AEVAL() na delu
//----------------
sekunde := seconds()
sadrzaj_ekrana := {}
i := 0
aeval(ekran, { |x| i++, j := 0,;
aeval(x, { |y| j++, iif( y <> nil, ;
( element := array(3), ;
element[ROW] := i, ;
element[COL] := j, ;
element[CHA] := y, ;
aadd(sadrzaj_ekrana,element) ), ;
.f. ) ;
} ) ;
} )
? "AEVAL() na delu : (sec)" + str( seconds() - sekunde )
// FOR petlja na delu
//-------------------
sekunde := seconds()
sadrzaj_ekrana := {}
for i := 1 to 25
for j := 1 to 80
if ekran[i][j] <> nil
element := array(3)
element[ROW] := i
element[COL] := j
element[CHA] := ekran[i][j]
aadd(sadrzaj_ekrana,element)
endif
next
next
? "FOR petlja na delu: (sec)" + str( seconds() - sekunde )
return
clipper.421dr.grba,
>> Mnogo brže radi:
>>
>> nTo := Len(aNiz)
>> FOR i=1 TO nTo
Naravno, ovo je česta zavrzlama za početnike. Teško im da shvate da
trpanjem funkcijskog izraza u zaglavlje petlje teraju funkciju da se
izvrši uvek ponovo i ponovo i ponovo... Dok se ovako promenljiva i
samo inkrementira, što ne može brže...
clipper.422dr.grba,
>> Funkcija AEVAL() (po Rick Spence-u i nbatocanin-u) brze obradjuje
>> nizove od FOR petlje. Kod je manje citljiv, ali valjda bar toliko
Valjda je poznato da u gotovo svim prog. jezicima petlja tipa FOR...NEXT
predstavlja najsporiju strukturu. U knjizi "Quick Basic 4.0: Selected
Topics" Microosoft kaže nešto poput: "Pa koristite je, nema problema,
radiće, jes' da je malo 50 puta sporija od drugih petlji, al' nema veze."
>> >> Btw, drasticNo ubrzanje se postize i u petljama tipa:
>>
>> Btw, gde su tvoji rezultati merenja?
Pre nego što se obojica raspalite, zamolio bih vasda malosmirite loptu
i ne prepucavate se u konfu.
clipper.423dr.grba,
>> P.S. Ovo je sve za kod pisan u kliperu, ako hoćeš da smestiš neki
>> .asm ili .c program u overleje onda to ide u statičke overleje. Da
>> objašnjavam ? :)
Ajd' objasni. žini mi se da su statički overleji sa C kodom veliki
žderači resursa. Tu baš nisam nešto valjano obavešten, a u dobrim
knjigama sam, meni na dušu, preskakao ta poglavlja ):
clipper.424stosic,
>> >> Funkcija AEVAL() (po Rick Spence-u i nbatocanin-u) brze obradjuje
>> >> nizove od FOR petlje. Kod je manje citljiv, ali valjda bar toliko
>>
>> Valjda je poznato da u gotovo svim prog. jezicima petlja tipa FOR...NEXT
>> predstavlja najsporiju strukturu. U knjizi "Quick Basic 4.0: Selected
>> Topics" Microosoft kaze nesto poput: "Pa koristite je, nema problema,
>> radice, jes' da je malo 50 puta sporija od drugih petlji, al' nema veze."
Aman doktore, stani na loptu i procitaj poruku jos jednom.
"U ovom primeru AEVAL() je SPORIJI od FOR petlje."
>> Pre nego sto se obojica raspalite, zamolio bih vasda malosmirite loptu
>> i ne prepucavate se u konfu.
Mislim da prepucavanje ne dolikuje ovoj konf, kao ni repliciranje bez
pokusaja da se da odgovori na postavljeno pitanje.
Ostaj mi da zakljucim da je AEVAL() funkcija bauk.
clipper.425dejanr,
>> Btw, jel neko voljan da pogleda u zvaničnoj dokumentaciji da li Clipper
>> uopšte i sprovodi bilo kakvu optimizaciju?
U dokumentaciji se o tome ne govori, ali već po činjenici da nema čitavog
niza switch-eva kojima bi se isključivali razni tipovi optimizacije (recimo
MSC ima tušta i tma optimizacija, ali neke od njih umeju i da zabrljaju pa
da od korektnog sorsa naprave neispravan program, tako da se pojedinačno
mogu gasiti ako je neophodno) rekao bih da je ona ostavljena na prilično
rudimentarnom nivou.
clipper.426ematic,
> Btw, jel neko voljan da pogleda u zvaničnoj dokumentaciji da li
> Clipper uopšte i sprovodi bilo kakvu optimizaciju?
Po nortonovim gajdama ;) jedina optimizacija koja se sprovodi,
odnosno koja se pominje, je optimizacija logičkih izraza. Može i da
se isključi svičem /z tako da kliper bude još gluplji, tup k'o
Summer 87 ;))
clipper.427d.petrovic,
cudne li moje poruke..., nigde fajla :)
commands.chclipper.428ttop,
> Sudeći po nazivu, to može biti iz bilo kog paketa. Jel može nešto
> konkretnije?
Ma d.petrovic bi trebao da mi zakači. A dotični "commands.ch" se
spominje u njegovoj funkciji nInkey . :)
A da, u pitanju je CLIPPER 5 .
clipper.429bcetina,
>> ... (po Rick Spence-u i nbatocanin-u) ...
Pa čekaj, zar to nije isto? :))
clipper.430stosic,
>>>> ... (po Rick Spence-u i nbatocanin-u) ...
>>
>>Pa cekaj, zar to nije isto? :))
Ne verujem da Spence prati ovu konf i da ce dati odgovor na 11.420 :)
clipper.431.bale.,
> Nisam te baš najpreciznije razumeo. Ako misliš da je COMMIT naredba
> za kontrolisan upis izmena na disk, varaš se (na žalost). Ako hoćeš
> da kažeš da je potrebna neka nadgradnja/poboljšanje originalnog
> Clipper-ovog sistema za pristup bazi podataka, slažem se.
Pa rekoh ja da verovatno to Clipper sam ne radi, pa kad on ne radi,
onda može aplikacija da radi dvofazni commit i oporavak od grešaka
pri padu sistema. To je jednostavan algoritam i pouzdan kad nema
keširanja upisa na disk. Da ne tupim sada... napisaću ga ako i dalje
nisam jasam :)
clipper.432nbatocanin,
> Ovakve ili slične poruke ostavljam tebi da ih ti
> ugradjuješ u svoje programe.
OK, nisam imao nameru da te vređam. Mislio sam da će ti moja poruka
pomoći da rešiš problem.
clipper.433nbatocanin,
> Btw, jel neko voljan da pogleda u zvaničnoj dokumentaciji
> da li Clipper uopšte i sprovodi bilo kakvu optimizaciju?
Tri manje-više rudimentarne optimizacije:
1. Skraćivanje računanja logičkih izraza
(.T. .OR. x -> .T.)
2. Eliminisanje koda koji se ne izvršava:
IF .T. ; Proc() ; END IF -> Proc()
3. Izračunavanje konstantnih izraza
x := 1 + 2 -> x := 3
clipper.434gari,
******************************************************
* POMAGAJTE STOJI MI POSAO !!! :(((((((((((((((((
* U sledecem primeru (prilagodjen za SEZAM)
* program IZBACUJE kada drugi put pozove funkciju
* Izracunaj() jer nesto nije u redu sa parametrima...
******************************************************
* CELU OVU PORUKU MOZETE PREVESTI SA:
* clipper mess
* rtlink fi mess
************************************************ bof()
local t_niz1 := {1,2,3,4}, t_niz2 := {5,4,3,2,1}, ;
t_brojac := 1, t_odgovor := 0
for t_brojac := 1 to 2
clear screen
t_odgovor := Izracunaj( t_niz1 , t_niz2 )
@ 10,10 say alltrim(str(t_brojac)) + " put = " + ;
alltrim(str(t_odgovor))
@ 20,10 say "Taster za nastavak..."
inkey(0)
next
RETURN
FUNCTION Izracunaj( t_niz_A , t_niz_B )
LOCAL retVred := 0, t_brojac := 0
for t_brojac := 1 to len( t_niz_A )
retVred += t_niz_A[t_brojac]
next
aadd( t_niz_A , retVred )
for t_brojac := 1 to len( t_niz_A )
retVred += t_niz_A[t_brojac] + t_niz_B[t_brojac]
next
RETURN retVred
************************************************ eof()
*pozdrav, Gari
*p.s. HITNO MI JE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*******************************************************
clipper.435jtitov,
Da li nekome nesto znaci kad se kaze 'program dGE 4.1'? Pitao me jedan
drugar u vezi toga, a ja ni A ni B...
clipper.436gari,
dGE 4.1 je biblioteka (po meni najbolja, mada
ne koristim ni jednu) funkcija za rad sa
grafikom u clipper-u.
Kada vidis demonstraciju ostanes bez teksta.
Imam je pa ako neko hoce "demo" verziju
onda neka preko nekog ko dolazi u NS posalje
dve diskete od 3,5"...
pozdrav, Gari.
clipper.437gari,
BBS File Bank (619) 728 - 4318
ima VISE od 10.000 raznih file-ova za clipper!!!
skinuo sam spisak fajlova pa ako Vas interesuje
uploadovacu ga (dugacak oko 300K - samo clipper)
Ako je neko slucajno pretplacen na isti neka mi
ostavi poruku mozemo se dogovoriti O:)
pozdrav, Gari.
clipper.438jorad,
>> Evo šablona za Blinker (sa # se označavaju komentari):
Drugar mi ima problema sa BLINKEROM pa me je zamolio da
pitam, zna li ko u čemu je problem
BLINKER : 1115 : bliovlmgr(S80VLMGR) : "_DOS_HOLD" : unresolved external
clipper.439dejanr,
Srećom, nije bilo teško:
>> local t_niz1 := {1,2,3,4}, t_niz2 := {5,4,3,2,1}, ;
Prvi niz ima četiri člana, drugi niz ima pet.
Pozvao si potprogram, u njemu kažeš:
>> aadd( t_niz_A , retVred )
Dakle, sada prvi niz ima pet članova kao i drugi.
Pozvao si ponovo potprogram, i tu isto:
>> aadd( t_niz_A , retVred )
Dakle, sada prvi niz ima šest članova, drugi i dalje pet.
>> for t_brojac := 1 to len( t_niz_A )
Znači, petlja ide od 1 do 6
>> retVred += t_niz_A[t_brojac] + t_niz_B[t_brojac]
Za i=6 referenciraš šesti elemenat drugog niza, i isti ne postoji,
otuda greška.
Da si probao da pregledaš rad programa u debageru, očes bi video u
čemu je problem.
clipper.440stosic,
>> POMAGAJTE STOJI MI POSAO !!! :(((((((((((((((((
>> program IZBACUJE kada drugi put pozove funkciju
>> Izracunaj() jer nesto nije u redu sa parametrima...
U drugom pozivu posle: " aadd( t_niz_A , retVred )" niz "t_niz_A" ima 6
elemenata, a "t_niz_B" - 5 . Posle pokusaja da citas 6-ti element iz
"t_niz_B" sledi ti poruka: Error BASE/1132 Bound error: array access.
Pozdrav, Boban
clipper.441stosic,
>> Srecom, nije bilo tesko:
Pretece me :)
Jeli je 11.420 tesko, nerazumljivo ...
clipper.442stosic,
>>Drugar mi ima problema sa BLINKEROM pa me je zamolio da
>>pitam, zna li ko u cemu je problem
>>
>>BLINKER : 1115 : bliovlmgr(S80VLMGR) : "_DOS_HOLD" : unresolved external
Iz Blinker NG-a:
Clipper Summer '87
If you get '__dos_hold' as an unresolved external then please check
that you have the updated version of CLIPPER.EXE, CLIPPER.LIB and
EXTEND.LIB from Nantucket (Summer '87). The original versions all
have a date of 12-21-87 and a time of 12:00 am (which may not be
displayed), while the updated versions have the same date, but a time
of 2:00am. Blinker will work correctly only with the updated version,
as there were a number of problems fixed in it.
Jos jedan razlog da se predje na neku od verzija pod brojem 5.
Pozdrav, Boban
clipper.443ttop,
> cudne li moje poruke..., nigde fajla :)
Vala baš. :)
Zahvaljujem majstore.
P.S Nego da obratite pažnju. Fajl "commands.ch" je zipovan. :)
clipper.445gari,
## Srecom, nije bilo tesko:
## >> local t_niz1 := {1,2,3,4}, t_niz2 := {5,4,3,2,1}, ;
## Prvi niz ima cetiri clana, drugi niz ima pet.
## Pozvao si potprogram, u njemu kazes:
## >> aadd( t_niz_A , retVred )
## Dakle, sada prvi niz ima pet clanova kao i drugi.
## Pozvao si ponovo potprogram, i tu isto:
## >> aadd( t_niz_A , retVred )
## Dakle, sada prvi niz ima sest clanova, drugi i dalje pet.
Postoji "mala" pojedinost:
FUNCTION Izracunaj( t_niz_A , t_niz_B )
LOCAL retVred := 0, t_brojac := 0
prema tome t_niz_A i t_niz_B bi trebalo da budu
deklarisane kao LOKALNE promenljive koje su sasvim
nevidljive za SVE OSTALE procedure i funkcije sem
ukoliko nije iz neke od njih pozvana ova funkcija
pass by reference ( Izracunaj(@niz1,@niz2) )...
sem toga u glavnom programu stoji:
local t_niz1 := {1,2,3,4}, t_niz2 := {5,4,3,2,1}
a prema tome bi trebalo da ta dva niza ostanu
NEPROMENJENI jer su vidljivi SAMO u tom delu
programa !!!
## Da si probao da pregledas rad programa u debageru,
## oces bi video u cemu je problem.
Jesam pregledao sam i nije mi jasno da se niz u
GLAVNOJ proceduri promenio iz pozivne funkcije
iako je i u jednom i u drugom delu SVE definisano
strogo kao LOCAL !!!!!!
...pitanje i dalje stoji...
p.s. inace, sam uspeo da resim na sledeci nacin:
definisao sam neki novi niz sa kojim operisem
u f-ciji Izracunaj i na njega sam preneo
parametre sa for...aadd()...next, jer
ako se prenese sa := onda rezultat rada
bude potpuno isti... (E TO MI NIJE JASNO !?)
clipper.446dr.grba,
>> Pre nego što se obojica raspalite, zamolio bih vasda malosmirite
└─────────┬─────┘
Al' mi radi spacebar ))): ──────────────────┘
clipper.447v.nesic,
> Funkcija AEVAL() bi trebalo da brze obradjuje nizove od FOR petlje.
Pa i obrađuje. Ono što si ti prikačio je klasičan primer gde ne
treba koristiti aeval jer ti trebaju i promenljive koje
predstavljaju broj indeksa. Znači, pri svakom prolasku uvećava se
interna promeljiva funkcije aeval i tvoja brojačka promenljiva.
Kada koristiš for uvećava se samo jedna koju koristiš u oba
slučaja.
clipper.448dejanr,
Eh, pa Clipper je ipak Clipper a nije C ili pascal ;)
Kada napišeš:
t_odgovor := Izracunaj( t_niz1 , t_niz2 )
a docnije negde piše:
FUNCTION Izracunaj( t_niz_A , t_niz_B )
onda u proceduri možeš da menjaš elemente nizova, da ih produžavaš
i skraćuješ itd, i to će se "vratiti" u glavni program. Dakle, kada
si u IZRACUNAJ dodao element u t_niz_A, to je važilo i za t_niz1 jer
je za clipper to isti niz, preneo ga po imenu a ne po vrednosti.
clipper.449ematic,
> Jesam pregledao sam i nije mi jasno da se niz u
> GLAVNOJ proceduri promenio iz pozivne funkcije
> iako je i u jednom i u drugom delu SVE definisano
> strogo kao LOCAL !!!!!!
U kliperu se nizovi prenose po referenci. rtfm :))
clipper.450stosic,
Najpre hvala, za javljanje.
>>Ono sto si ti prikacio je klasican primer gde ne treba koristiti aeval
>>jer ti trebaju i promenljive koje predstavljaju broj indeksa.
Ovo mi se svidja. Torpedo na Jedrenjak u predelu AEVAL()-a.
>>Znaci, pri svakom prolasku uvecava se interna promeljiva funkcije aeval
>>i tvoja brojacka promenljiva. Kada koristis for uvecava se samo jedna
>>koju koristis u oba slucaja.
Na zalost nije, iako je zanimljivo (pogledaj primer). Opet je AEVAL() sporiji.
Cini mi se da i kod merenja vremena nesto skripi.
Da li je neko video PROFILER za Clipper? Svojevremeno sam pokusao da od
programcica koji ide uz Blinker napravim nesto vise, ali nije islo.
Vremena izvrsavanja delova koda, funkcija.. su se drasticno razlikovala
posle svakog narednog startovanja programa.
Evo i primera:
****************
procedure test()
local niz[4096]
local t
afill(niz, 1)
niz[4096] := 2
t := seconds()
amax1(niz)
? seconds() - t
t := seconds()
amax2(niz)
? seconds() - t
return
function amax1(n)
local najveci := n[1]
aeval(n, {|x| najveci := iif( x > najveci, x, najveci) })
return najveci
function amax2(n)
local najveci := n[1]
local l := len(n)
local i
for i := 1 to l
najveci := iif( n[i] > najveci, n[i], najveci)
next
return najveci
clipper.451niklaus,
(:>>> Pre nego što se obojica raspalite, zamolio bih vasda malosmirite
(:>>> └─────────┬─────┘
(:> Al' mi radi spacebar ))): ──────────────────┘
Ti meni jedan candybar, a ja tebi opravim spacebar... (;
(:niklaus:)
clipper.452snemcev,
>> Znači, pri svakom prolasku uvećava se interna promeljiva funkcije
>> aeval i tvoja brojačka promenljiva. Kada koristiš for uvećava se samo
>> jedna koju koristiš u oba slučaja.
Internu promenljivu koju koristi kao index AEval prosleđuje kodnom bloku
koji izvršava kao drugi parametar, tako da nema potrebe računati index
koji već postoji.
clipper.453bulaja,
│BBS File Bank (619) 728 - 4318 ima VISE od 10.000 raznih file-ova za
│clipper!!! skinuo sam spisak fajlova pa ako Vas interesuje uploadovacu
│ga (dugacak oko 300K - samo clipper) Ako je neko slucajno pretplacen na
│isti neka mi ostavi poruku mozemo se dogovoriti O:)
└───
Salji spisak. Sto se pretplate tice, snacicemo se nekako (npr. mozemo se
dogovoriti ako ti das Jupak:).
clipper.454gari,
││BBS File Bank (619) 728 - 4318 ima VISE od 10.000 raznih file-ova
za
││clipper!!! skinuo sam spisak fajlova pa ako Vas interesuje
uploadovacu
││ga (dugacak oko 300K - samo clipper) Ako je neko slucajno
pretplacen na
││isti neka mi ostavi poruku mozemo se dogovoriti O:)
│└───
│Salji spisak. Sto se pretplate tice, snacicemo se nekako (npr.
mozemo se
│dogovoriti ako ti das Jupak:).
└────
Verovao ili ne ja sam koristio direktnu liniju i nikad nisam
bio na Jupak-u (ukoliko mi neko to malo objasni vrlo rado cu i to)
jer ja modem koristim samo da bih saznao sto vise o clipper-u...
Uz poruku saljem spisak...
pozdrav, Gari.
clipper.zipclipper.455snemcev,
>> Ti meni jedan candybar, a ja tebi opravim spacebar... (;
Probao je on sam da opravi, pa je namestio to što je namestio. Ej, Grbo,
jeftiniji ti je bio jedan candybar. ;))
clipper.456snemcev,
>>>> Salji spisak. Sto se pretplate tice, snacicemo se nekako (npr. mozemo se
>>>> dogovoriti ako ti das Jupak:).
>>
>> Verovao ili ne ja sam koristio direktnu liniju i nikad nisam
>> bio na Jupak-u (ukoliko mi neko to malo objasni vrlo rado cu i to)
>> jer ja modem koristim samo da bih saznao sto vise o clipper-u...
Al' zato ja imam Jupak, pa se možemo dogovoriti... ;) Ostatak u mail, OK.
clipper.457v.nesic,
>>> Znaci, pri svakom prolasku uvecava se interna promeljiva funkcije aeval
>>> i tvoja brojacka promenljiva. Kada koristis for uvecava se samo jedna
>>> koju koristis u oba slucaja.
>
> Na zalost nije, iako je zanimljivo (pogledaj primer). Opet je AEVAL()
sporiji.
Šta nije?
> Vremena izvrsavanja delova koda, funkcija.. su se drasticno razlikovala
> posle svakog narednog startovanja programa.
Verovatno zbog dinamičkih overleja.
clipper.458v.nesic,
> Internu promenljivu koju koristi kao index AEval prosleđuje kodnom bloku
> koji izvršava kao drugi parametar, tako da nema potrebe računati index
> koji već postoji.
U primeru stoji: aeval(ekran, { |x| i++, j := 0 ...
Dakle, postoje dva brojača interni funkcije aeval i promeljiva i.
BTW, hvala za informaciju. Nisam znao za to.
clipper.459stosic,
Sta je najaktuelnije od komercijalnog softvera za CA-Clipper5.2 ?
Narocito me interesuje podrska za objektno programiranje.
Koje su prednosti Class(y) u odnosu na o:Clip ?
clipper.460dr.grba,
>> Narocito me interesuje podrska za objektno programiranje.
I mene. Vlada mišljenje da ćemo u sledećoj generaciji Clippera (6.x?)
dobiti potpunu i pravu podršku objektnom programiranju...
Skrećem tvoju pažnju na biblioteku Netto u direktorijumu Clipper na
Sezamu. Ona je predviđena za Clipper 5.2 i služi za prilično kvalitetnu
podršku rada programa u mreži. Kako je prelazak na novu verziju/generaciju
nekog programa uvek i valjana prilika da se dobije neki novi kvalitet, to
ja sam predviđam upotrebu ove biblioteke u budućem razvoju svojih programa.
clipper.461bulaja,
│Koje su prednosti Class(y) u odnosu na o:Clip ?
└───
Zar neko ovde ima Class(y) za Clipper 5.01 ili 5.2?
Koliko sam primetio po svetskim mrezama, Class(y) je najpopularnije
objektno prosirenje Clippera, verovatno ima i najbolju podrsku (nove
verzije i sl.)
clipper.462arazumenic,
-> OK, nisam imao nameru da te vređam. Mislio sam da će ti moja poruka
-> pomoći da rešiš problem.
Nisam to ni shavtio kao uvredu, već mi je želja bila da prekinemo sa tim
raznoraznim porukama koje niko(?) nigde (?) ne bi stavio.
Saša
clipper.463nbatocanin,
> Na zalost nije, iako je zanimljivo (pogledaj primer). Opet
> je AEVAL() sporiji.
Evo ovako: AEval je u principu znatno brži od FOR ciklusa u smislu da
brže pristupa elementima nekog niza. Tvoj primer daje bolje razultate
za FOR zato što AEval radi više operacija u petlji: dok FOR
jednostavno uradi poređenje, AEval *pozove funkciju* (kod blok), a to
znači iskopira parametre na stek, ... i tek onda izvrši prethodni deo
koda. Obično AEval skupi dovoljnu prednost da se pokriju ove dodatne
operacije, ali ne uvek. Ne treba zaboraviti ni složenost podsistema za
rad sa nizovima: probajte da zamenite mesta poziva amax1 i amax2 u
primeru i dobićete sasvim druge rezultate (ali opet u korist FOR
naredbe). Ako smanjite broj elemenata niza ili isključite keširanje
diska (čitanje overleja), vreme se može promeniti i u korist AEval-a.
clipper.464kranko,
Dobio sam Clipper 5.2 i uz njega jos neki TOOLBOX.
Moze li mi neko reci cemu sluzi taj dodatak i za sta je podoban ?
Da li postoji knjiga na nasem trzistu.
clipper.465bulaja,
│Dobio sam Clipper 5.2 i uz njega jos neki TOOLBOX. Moze li
│mi neko reci cemu sluzi taj dodatak i za sta je podoban ?
└───
Mozes li nam reci sta tacno pise u tom ToolBox-u, tj. koji je njegov
puni naziv? Moze biti npr. CA-Clipper Tools, Vern Six's ToolBox (ima
ga i u Clipper dir-u) ili nesto trece. Ako se uz njega dobija neki NG,
pogledaj i javi sta pise tamo.
clipper.467dsisic,
Cao svima,
postoji li neki nacin da dojem do Blinkera 2.01 i NG-a za isti?
clipper.468gari,
> postoji li neki nacin da dodjem do Blinkera 2.01
> i NG-a za isti?
Postoji pogotovo ako imas Blinker 2.0 jer sa
Sezam-a mozes skinuti patch za blinker 2.01...
pozdrav, Gari.
p.s. ako nemas 2.0 onda se raspitaj malo po
Beogradu (ili odakle si vec) za neku
demo verziju koja radi do kraja ovog veka ;)
clipper.469nbatocanin,
> Nisam to ni shavtio kao uvredu, već mi je želja bila da
> prekinemo sa tim raznoraznim porukama koje niko(?) nigde
> (?) ne bi stavio.
Naravno da nisam mislio da staviš _baš_ onu poruku. Ideja ostaje ista
a poruka može da bude neka fina poput "PREKORAžILI STE LIMIT" i sl.
clipper.470nbatocanin,
> Sta je najaktuelnije od komercijalnog softvera za
> CA-Clipper5.2 ? Narocito me interesuje podrska za objektno
> programiranje.
Class(y), SIx driver, Flipper 6.0, Clip4Win, ...
> Koje su prednosti Class(y) u odnosu na o:Clip ?
Velike. Ima potpuniju implementaciju OOP-a i ne pravi razliku između
originalnih Clipper-ovih i naknadno definisanih klasa.
clipper.471cnenad,
Hm, bese NDRAGAN poslao ovo 1.9.93.
ŁŁŁ Elem, jedino se secam da radi sa petnaest cifara... kako se
ŁŁŁ izgovara ono cudo sa osamnaest, pa da dodam malo koda u
ŁŁŁ slovima.prg?
Bese ovo: 100,000,000,000,000,000 ? Valjda stohiljadabiliona ili
stobilijardi (ko voli da igra bilijar razumece :) ) ?!
ŁŁŁ Juce sam nacuo da je avgustovska inflacija 1680%, sto dignuto
ŁŁŁ na godinu znaci petnaest nula. Posle sam cuo da, kao, nije
ŁŁŁ toliko nego 1860%.
Za oktobar (nezvanicno) 2500 % a na godisnjem nivou cak 8,9 milijardi %
Jes da je digresija od KLIPER-a al'ima dodirnih tacaka:
@xx,xx say yyyyyy pict '999,999,999,999,999,999,999,999,999,999,999,999'
clipper.472stosic,
>Internu promenljivu koju koristi kao index AEval prosleduje kodnom bloku
>koji izvrsava kao drugi parametar, tako da nema potrebe racunati index
>koji vec postoji.
Slazem se (za J), moj propust. Samo, kako bi u datom slucaju (11.420)
uklonio I iz {|x| i++, ... ?
clipper.473stosic,
>AEval je u principu znatno brzi od FOR ciklusa...
>Tvoj primer daje bolje razultate za FOR zato sto...
>Ne treba zaboraviti ni slozenost podsistema za...
Sve to ukazuje na potrebu za dobrim PROFILER-om.
clipper.474stosic,
> SIx driver, Clip4Win, ...
Sta rade doticni?
>>Koje su prednosti Class(y) u odnosu na o:Clip ?
>
> Velike. Ima potpuniju implementaciju OOP-a i ne pravi razliku izmedu
> originalnih Clipper-ovih i naknadno definisanih klasa.
Ima li neko Class(y).doc, ng ili slicno? Moze i u mail.
clipper.475dejanr,
>> Bese ovo: 100,000,000,000,000,000 ? Valjda stohiljadabiliona ili
>> stobilijardi (ko voli da igra bilijar razumece :) ) ?!
Pre par godina imali smo jednu Pitalicu na tu temu, kako se pišu slovima
veeeeliki brojevi. Pokazalo se da naš pravopis tu ne daje odgovor, izgleda
da niko o tome nije mislio. Za razliku od, recimo, Amerikaca koji su
razradili nomenklaturu za jako velike brojeve, čak i veće od onog koji
navodiš.
I posle samo da se pitamo, zašto mi imamo ovoliku inflaciju, a ne oni?
A lepo bi umeli sve iznose da nazovu :)))
clipper.476kranko,
Zna li neko da li moze da se istampa NG u Clipper-u.
Ako moze KAKO ?
Pozdrav
clipper.478cnenad,
ŁŁŁ razradili nomenklaturu za jako velike brojeve, cak i vece od
ŁŁŁ onog koji
Kad smo vec kod toga, najveci broj za koji sam cuo naziv je GUGOL to jest
broj koji ima u sebi 100 nula. Ima li veci ?
clipper.479snemcev,
>> Slazem se (za J), moj propust. Samo, kako bi u datom slucaju (11.420)
>> uklonio I iz {|x| i++, ... ?
Jel može ceo kodni blok?
clipper.480snemcev,
>> Zna li neko da li moze da se istampa NG u Clipper-u.
>> Ako moze KAKO ?
Imaš NG_PRINT, vrlo korisno programče u paketu sa VS_904 bibliotekom.
clipper.481stosic,
> Zna li neko da i moze da se istampa NG u Clipper-u.
U najnovijoj verziji Nanfor-a (imas ga na Sezamu) postoji ngprint.prg.
Pozdrav, Boban
clipper.482stosic,
>>> Slazem se (za J), moj propust. Samo, kako bi u datom slucaju (11.420)
>>> uklonio I iz {|x| i++, ... ?
>
>Jel moze ceo kodni blok?
Znaci ne moze?
clipper.483dr.grba,
>> Zna li neko da li moze da se istampa NG u Clipper-u.
>> Ako moze KAKO ?
Programom NGP(RINT). Ima ga u raznim ShareWare paketima, pa dajem sebi za
slobodu da ga i sam okačim.
U stvari, sad videh da ga je napravio Pepijn Smits, poznati autor Expand
biblioteke.
ngprint.zipclipper.484stosic,
Ispravka: ngprint.prg ide uz expand.lib.
clipper.485bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
52an00 arj 15306 Spisak nepravilnosti u CA-Clipper 5.2
CA has NOT released an Anomalies listing for Clipper, and has stated
that they are not likely to do so.
This Anomalies listing will be maintained until CA should decide to
publish an anomalies list, and will be updated regularly.
Although CA has released their own internal error listing, it DOES NOT
contain all of the internall errors found in Clipper. Also, quite a
few of the IE's listed in their listing are poorly explained.
The IEs in this NG has been checked against CA's official listing.
Where better but still acurate explanations have been found, these have
been used instead of the official explanation from CA.
Items in the IE list marked with "?" denote that although it has been
encountered in Clipper 5.2, CA has not released an official explanation.
Items in the IE list marked with "-" denote that although it has been
encountered in Clipper 5.2, it has been explained by highly competent
sources. It does not, however, appear in CA's official list of IEs.
clipper.486bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
ie52ng arj 7990 Spisak internih gresaka CA-Clipper-a 5.2 (CA)
clipper.487gari,
Uz ovaj fajl ide NG koji se instalira uz
DGE za clipper 5...
Nisam instalirao, a lepo me je pitao za:
DB3, DB4, CLIP87, FOXBASE, FOXPRO, DBFAST,
VULCAN, QS, FORCE, C, RC, DBCOMMON, DBXL,...
Ukoliko nadjete jos neku biblioteku sa ovakvim
funkcijama, ja Vam svima skidam kapu (a uz to
i da rade na ovoliko raznovrsnih prog. jezika)
pozdrav, Gari.
clipper.488cnenad,
ŁŁŁ Zna li neko zasto zasto ne mozemo da se smeskamo?
ŁŁŁ
ŁŁŁ> @24,0 say "Pritisni Ctrl-ScrollLock dirku da dobijes
ŁŁŁ> smile..." do while !(i:=INKEY()=K_CTRL_C)
Malopre sam pregledao i sredjivao bazu SOR-a pa naletih na ovo
(sve izvlacim neke stvarcice iznebuha a ?) a posto sam bas ovih
dana ponovo namestio igricu SUPAPLEX u kojoj menjah fajl gde su
zapisani predjeni nivoi setih se da dopisem kao odgovor na ovu
poruku iz prosle konf. da za smajlije treba pritisniti valjda
CTRL-A i CTRL-B. Jedan je beo a drugi crn smajli. Valjda zato
nije sve radilo kako treba u ovom Bulajinom modulcicu ?
clipper.489cnenad,
Iz prosle konf.
ŁŁŁ pravio izvestaj pre godinu dana; otkako sam presao na 'Modify
ŁŁŁ report' (FoxPro :), programi za stampe koji su tako pisani
ŁŁŁ sveli su se sa prosecnih 6K na 1,5K.
U vezi sa ovim posto mi trenutno nije potrebna neka bolja kontrola
stampe imam pitanje za FRM datoteke radjene u DBASU IV koje kliper ne podrzava
---------------
(mada me iznervira kad se napuni bafer stampaca prilikom stampe sa REPO FORM..
[na EPSONU LX-400 (valjda je tako) je radilo kako treba tj. cekao je nekih 10
sec. za ON-LINE signal stampaca kod zamene papira - promene strane npr.;
dok kod LX-800 ili LQ-1070 cim zavrsi stampanje strane izbaci PRINTER OUT OF
PAPER i nakon IGNORE dodje do prestampavanja nekoliko slova koja su vec
odstampana tekstom koji bi trebao da bude u pocetku) (uf, ala zakomplikova)
---------------
jer preko njih stampam sve izvestaje (jer generator tih izvestaja je jedno
1000 puta bolji i od kliperovog i od DBASE 3+) da li bi se one nekako
mogle preraditi. Malo sam ih pregledao ali nisam nista zanimljivo otkrio.
Ukoliko je neko zainteresovan, uz poruku je prikacen fajl u kome se
nalaze FRM, FRG, FRO i PRF fajlovi koje formira DBASE-ov generator. Za
stampu u DBASE-u je dovoljno da postoje PRF i FRO ali me interesuje da li se
moze u kliperu iskoristiti FRM koji je prilozen pa ih zato saljem.
nivmfrg.zipclipper.490cnenad,
evo jos nesto iz pc.os. - poruka od NBATOCANIN-a
ŁŁŁ Nekoliko ljudi me je pitalo da li mogu moje programe sa
ŁŁŁ Sezama da ugraduju u svoje aplikacije. U uputstvima za
...
ŁŁŁ prodajete - puno srece pri tome! Necu vam zameriti i ako
ŁŁŁ nesto izmenite. Ako negde napisete i poreklo ovog dela
ŁŁŁ programa, bicu zahvalan i pocastvovan, mada nije obavezno. A
u principu, ako si vec tako nesto dozvolio bio bi red da te i pomenu
u dokumentaciji programa - cisto to smatram kao moralnu obavezu (ha, cuj
moral !?!? - sta je to ?) onoga ko koristi tvoj kod)
clipper.491cnenad,
ŁŁŁ nalaze FRM, FRG, FRO i PRF fajlovi koje formira DBASE-ov
ŁŁŁ generator. Za stampu u DBASE-u je dovoljno da postoje PRF i
ŁŁŁ FRO ali me interesuje da li se moze u kliperu iskoristiti FRM
ŁŁŁ koji je prilozen pa ih zato saljem.
Nalazi se samo FRG. Naknadno sam izbacio FRM, PRF, I FRO jer se u njima
nista ne vidi a ovaj FRG je generisao DBASE IV REPORT GENERATOR i lici mi
na proceduru za stampu pa sam zato samo njega poslao.
clipper.492dvesic,
Cao !
Da li je za update sa Clipper 5.2 na Clipper 5.2c
dovoljan samo 52cus.exe ili je (kao sto se u
readme kaze) potreban i PATCH.EXE ?
Ako je potreban, gde se moze nabaviti ?
Pozdrav,
Vesa.
clipper.493snemcev,
>>>>> Slazem se (za J), moj propust. Samo, kako bi u datom slucaju
>>>>> (11.420) uklonio I iz {|x| i++, ... ?
>>>
>>> Jel moze ceo kodni blok?
>>
>> Znaci ne moze?
Nisi me razumeo, a ni ja nisam bio baš jasan - hteo sam da kažem da
napišeš ceo kodni blok, da se vidi kontekst famoznog I, pa ćemo onda da
vidimo.
clipper.494cnenad,
Interesuje me (i ranije sam pitao) da li je neko uspeo da resi problem
ispisa realnog vremena (casovnik). Dobro znam da to ima u DBASE IV i FOX
sa SET CLOCK TO X,Y i SET CLOCK ON, ali kako stoje stvari sa CLP ?
Video sam ranije da je neko slao nesto radjeno u ASM za to ali je navodno
imalo bagova (ili nesto nije bilo u redu). Priznacete da funkcija TIME()
nije pogodna za to narocito ako ne dirate program nekih 10-15 minuta a
vrednost funkcije ostaje ispisana onakva kakva je bila kad je pozvana.
clipper.495dr.grba,
>> Kad smo vec kod toga, najveci broj za koji sam cuo naziv je GUGOL
>> to jest broj koji ima u sebi 100 nula. Ima li veci ?
Pisao sam davno, u nekoj koferenciji o tome, prepisavši iz knjige "Kosmos"
Karla Segana. Gugol je deset na stoti.
A GUGOLPLEKS je deset na gugol stepen. Toliko je besmisleno velik...
...kada bi kugla prečnika petnaest milijardi svetlosnih godina bila
ispunjena elektronima u stanju mirovanja, dakle bez praznog prostora,
bilo bi ih jedva 10 na 3000 (ups! da li je 300 ili 3000, moram da pronađem,
zaboravio sam...).
clipper.496dr.grba,
>> u principu, ako si vec tako nesto dozvolio bio bi red da te i
>> pomenu u dokumentaciji programa - cisto to smatram kao moralnu
>> obavezu (ha, cuj moral !?!? - sta je to ?) onoga ko koristi tvoj
>> kod)
Kada u mom demo programu CEK uključiš kalkulator, na dnu njegovog helpa
je oznaka da je Nenad autor kalkulatora. To je najmanje što sam mogao
da učinim za uslugu dobijenu korišćenjem istog.
clipper.497bulaja,
│Da li je za update sa Clipper 5.2 na Clipper 5.2c dovoljan samo
│52cus.exe ili je (kao sto se u readme kaze) potreban i PATCH.EXE ?
│Ako je potreban, gde se moze nabaviti ?
└───
Potreban je i patch.exe. Ako ga nema u top 5.2c update paketu, onda ga
sigurno ima u dogradnjama za verzije 5.2a i 5.2b (neka od njih je valjda
jos na Sezamu:). Pogledacu danas da ubacim u odvojen patch.exe u dir, pa
da se pobrisu ti stari update-ovi.
clipper.498cnenad,
ŁŁŁ je oznaka da je Nenad autor kalkulatora. To je najmanje sto
ŁŁŁ sam mogao da ucinim za uslugu dobijenu koriscenjem istog.
Tacno tako, lepo od tebe !
clipper.499snemcev,
Da li i kako u svojim programima koristite naredbu PACK? Da je korisna,
jeste, al' je spora do zla boga.
clipper.500vision,
> Da li i kako u svojim programima koristite naredbu PACK? Da je korisna,
> jeste, al' je spora do zla boga.
Spora jes (kada se ima vise recorda). Kada se na primer odredjeni record
trazi odredjenim field-om (indeksno ili ne), onda ja lepo taj kljuc samo mu
promenim tekst, naprimer ako je kljuc tekst, onda napravim jedan
'REPLACE field_name with "Delete"', i naravno uradim i jedan DELETE. Iduci put
kada se na primer index-uju baze, pre index-a uradim jedan PACK, i to je to.
Reci ces da tada PACK je spor, ali sta ces bolje jednom nego 100 puta:).
clipper.501dejanr,
>> Da li i kako u svojim programima koristite naredbu PACK?
Ja je maksimalno izbegavam. Recept je dat još u prvim danima Sezama -
umesto da se slog briše, u neko polje po kome postoji indeks treba
upisati neku "levu" vrednost koja tu nikako ne može da se pojavi.
Posle kada se unosi novi slog sa seek može da se potraži ta vrednost
i da se upiše podatak. Tek jako retko može se ukazati potreba da se
ti podaci stvarno obrišu i da se uradi pack.
clipper.504paki,
> A GUGOLPLEKS je deset na gugol stepen. Toliko je besmisleno velik...
K'o iMflacija ;)
clipper.505gari,
> Uz ovaj fajl ide NG koji se instalira uz
> DGE za clipper 5...
> Nisam instalirao, a lepo me je pitao za:
> DB3, DB4, CLIP87, FOXBASE, FOXPRO, DBFAST,
> VULCAN, QS, FORCE, C, RC, DBCOMMON, DBXL,...
>
> Ukoliko nadjete jos neku biblioteku sa ovakvim
> funkcijama, ja Vam svima skidam kapu (a uz to
> i da rade na ovoliko raznovrsnih prog. jezika)
E, da 3 puta ne uspe upload to vec prevazilazi
moje zivce, pa saljem ponovo... ;>>>>>>>>>>>>>>
pozdrav, Gari.
dge_ng.zipclipper.506d.petrovic,
Ă> Interesuje me (i ranije sam pitao) da li je neko uspeo da resi
Ă> problem ispisa realnog vremena (casovnik). Dobro znam da to ima u
Ă> DBASE IV i FOX
Ostavio je nenad ovde funkciju za skeniranje tastature. Pogledaj malo
unazad i ja sam je UL pre jedno mesec dana:
conf li /t, treba da se zove ninkey.zip ili slično...
clipper.507dr.grba,
>> Video sam ranije da je neko slao nesto radjeno u ASM za to ali je
>> navodno imalo bagova (ili nesto nije bilo u redu). Priznacete da
>> funkcija TIME()
Stvar stoji ovako: ako ne paziš sa tom ASM funkcijom, ili ti program
padne u trap, jedino cold reboot rešava stvar. Ako želiš da imaš sat
samo na poziv nekog tastera (kod mene Alt-T), upotrebi ovo:
***************************************************
* proc TIMING vraca tekuci dan, datum i sat
* prikladno za spice i za pozive
****************************************************
proc timing()
set century on // postavke za sat
set cursor off
set date german
private t_i, t_k, t_bl, t_qtime, t_a, t_biper, t_poruka
private t_por_col, t_xx, t_yy
private danŠ7Ć
// inizijalizacija naziva dana
dan := š"Nedelja, ","Ponedeljak, ","Utorak, ","Sreda, ", ;
"Cetvrtak, ", "Petak,", "Subota, "ć
t_i = dow(date()) // pripremni racun
t_k = int((19 - len(danŠt_iĆ))/2) // za centrirani izlaz
t_bl = replicate(" ",t_k) // displeja
t_xx = 10 // pozicija casovnika na ekranu
t_yy = 20
save screen
set color to w/n
č t_xx-1,t_yy-5 clear to t_xx+4,t_yy+47
č t_xx-1,t_yy+2,t_xx+1,t_yy+42 box ;
replicate(chr(220),3) + replicate(chr(222),2) + space(3)
set color to n/w
t_poruka := " Pritisni bilo koji taster ... "
t_por_col := t_yy + 40 - len(t_poruka)
č t_xx+3, t_por_col say t_poruka
set color to w+/n
č t_xx,t_yy to t_xx+2,t_yy+40 double
set color to w/n
do while .t. // petlja displeja
// displej sata
č t_xx+1,t_yy+1 say t_bl+danŠt_iĆ+dtoc(date())+" "+time()+t_bl
t_qtime = time()
t_a = 0
t_biper = .t.
do while t_qtime = time() // zadrska sata
if t_biper
tone(1200, 0)
t_biper = .f.
endif
++t_a
enddo
if inkey() <> 0 // proverava da li je
set cursor on // pritisnut neki taster
set color to // proverava da li je dat
// zahtev za izlazak iz programa
č 24,79 say nil
restore screen
return
endif
enddo // kraj petlje displeja
*********** kraj programa **********
Ovo je neka starija verzija programa, u test varijanti. Za dalje sam
razvio i neke komplikujuće efekte, ali ovoliko radi. Vi sad, ako vam se
dopada, razvijajte dalje do mile volje. I izvinite što je tako vrljavo
napisano, ali mislim da ćete se snaći.
clipper.508snemcev,
>> Ja je maksimalno izbegavam. Recept je dat još u prvim danima Sezama -
>> umesto da se slog briše, u neko polje po kome postoji indeks treba
>> upisati neku "levu" vrednost koja tu nikako ne može da se pojavi.
To mi je poznato, ali nikako da sebe nateram da izmenjam sve svoje
programe tako da ovo podržavaju. Nisam bio siguran da ne postoji neko
"prelazno rešanje" dok ne izbacim pack u potpunosti.
clipper.509stosic,
> ...hteo sam da kazem da napises ceo kodni blok, da se vidi kontekst
> famoznog I, pa cemo onda da vidimo.
Clipper ne dozvoljava da se parametar definisan u spoljasnjem kodnom bloku
cita u unutrasnjem, pa je potrebna pomocna promenljiva (i).
aeval(ekran, { |x, xi| i := xi, ;
aeval(x, { |y, j | iif( y <> nil, ;
( element := array(3), ;
element[ROW] := i, ;
element[COL] := j, ;
element[CHA] := y, ;
aadd(sadrzaj_ekrana,element) ), ;
.f. ) ;
} ) ;
} )
clipper.510dsisic,
Mala, malecka funkcija za racunanje kontrolnog broja fakture
po modelu 05, za one koji nemaju svoju f-ju je prikacena uz
ovu poruku.
control5.zipclipper.511snemcev,
>> Mala, malecka funkcija za racunanje kontrolnog broja fakture
>> po modelu 05, za one koji nemaju svoju f-ju je prikacena uz
>> ovu poruku.
To beše onaj po modulu 11, ne?
clipper.512nbatocanin,
>> SIx driver, Clip4Win, ...
>
> Sta rade doticni?
SIx drajver je drajver za Clipper koji omogućava korišćenje Fox
kompatibilnih indeksa i ima masu korisnih funkcija za rad sa istim.
Veoma hvaljen proizvod. Clip4Win je biblioteka (?) koja omogućava da
u Clipper-u pišete aplikacije koje će raditi pod Windowsima u
protected modu.
clipper.513nbatocanin,
> u principu, ako si vec tako nesto dozvolio bio bi red da
> te i pomenu u dokumentaciji programa - cisto to smatram
> kao moralnu obavezu (ha, cuj moral !?!? - sta je to ?)
> onoga ko koristi tvoj kod)
Kao što rekoh: ko hoće, ok; ko neće nije obavezno. Važno je da se
nešto radi :)
clipper.514nbatocanin,
> Interesuje me (i ranije sam pitao) da li je neko uspeo da
> resi problem ispisa realnog vremena (casovnik).
Preporučujem rešenje u čistom Clipper-u. Imaš objašnjenje u ovoj
temi, a imaš i u "Računarima" (tekst "Programi koji sami rade"). Ako
ti nešto ne bude jasno, pitaj!
clipper.515arazumenic,
-> A GUGOLPLEKS je deset na gugol stepen. Toliko je besmisleno velik...
-> ...kada bi kugla prečnika petnaest milijardi svetlosnih godina bila
-> ispunjena elektronima u stanju mirovanja, dakle bez praznog prostora,
-> bilo bi ih jedva 10 na 3000 (ups! da li je 300 ili 3000, moram da
-> pronađem, zaboravio sam...).
Ovo mi više liči da je za temu misterije.
A što se tiče tih velikih brojeva, negde sam nekad pročitao (Galaksija?)
da je ukupan broj čestica u svemiru reda veličine 10 na 80 stepen, ili
tako nešto (davno je bilo). E pa sad vidite kome trebaju toliki brojevi.
Saša
clipper.516neman,
> Veoma hvaljen proizvod. Clip4Win je biblioteka (?) koja
> omogucava da u Clipper-u pisete aplikacije koje ce raditi
> pod Windowsima u protected modu.
Jeste za Windowse, al' ne za One :)) vec za Clipper - ove. Inace
mi se demo za to dosta svideo, prozori su u tekst modu i svaki
predstavlja neki Clipper proces ;)
neman
clipper.517aquarius,
Vec sam pitao, al' izgleda da moram opet...
CLIPPER 5.2c
\clipper5\obj\NTXLOCK2.OBJ
\clipper5\obj\CDXLOCK.OBJ
Cemu i kako sluze ova dva OBJ-a.
Aquarius
clipper.518gari,
>> Veoma hvaljen proizvod. Clip4Win je biblioteka (?) koja
>> omogucava da u Clipper-u pisete aplikacije koje ce raditi
>> pod Windowsima u protected modu.
> Jeste za Windowse, al' ne za One :)) vec za Clipper - ove.
> Inace mi se demo za to dosta svideo, prozori su u tekst
> modu i svaki predstavlja neki Clipper proces ;)
Svojevremeno sam sa Mojster-a skinuo DEMO verziju
cliper-a koja RADI pod WIN 3.0 (ONAJ WIN)...
Ima li ko verziju koja nije demo?
pozdrav, Gari.
clipper.519eotek,
EMM386 i Clipper
================
Programi u S87 i TLINK ne rade (poruka: nedovoljno memorije ??),
odnosno rade samo pod windows ili dosshell.
Onda uzmem 5.01 i Blinker - rade. Sreci nema kraja....
Ali:>>> kada uradi pack, ili dbedit vece baze sa brzim pregledom
program se zblesira, pa ili pisti ko lud ili blokira, onda opet pod
win
ili dosshell - sada opet radi. Isto se desava i sa dbu, kada
pregledam
vecu bazu "brzim" PgDn (ako ide polako: ne!?). Isti problem i sa
Rtlink...
E sad se ja zblesiram >.
Ako neko ima resenje molim da ga da, verujem da ce i drugima
da
bude interesantno.
THX
ps.: ako zatreba, prilog con'.sys i a'.bat
konfgsfx.execlipper.520dr.grba,
>> tako nešto (davno je bilo). E pa sad vidite kome trebaju toliki
>> brojevi.
Polu Krneti, da opiše perfomanse Alfe.
clipper.521drdjokic,
Da li postoji mogucnost startovanja programa (koji je napisan u CLIPPER-u 5.01)
u expanded EMS ili extended XMS memoriji i KAKo ?
Unapred hvala
clipper.522dvesic,
> Da li postoji mogucnost startovanja programa (koji je napisan u
> CLIPPER-u 5.01) u expanded EMS ili extended XMS memoriji i KAKo
> ?
Pitanje nije bas najjasnije.
1. Clipper programi se (kao i svi ostali) izvrsavaju u
osnovnoj memoriji (u onih 640 - 704 k).
2. Clipper-ov MM (memory manager) automatski koristi svu
EMS memoriju za privremeni prostor (kreiranje indeksa,
sortiranje baze, itd...); to mu se moze eksplicitno
zabraniti sa SET CLIPPER=E:0 ili sa
APLIKACIJA.EXE //E:0 .. ostali parametri aplikacije ...
Umesto 0 moze da stoji kolicina (u Kb) EMS memorije
koju odvajas za program.
3. Parametri SWAPK i SWAPPATH (imac detalje u NG bazi za
CLIPPER UTILITIES) omogucuju da privremene fajlove
smesta na RAM disk ( i time indirektno koristi EMS/XMS
memoriju). Paznja : Ovo radi samo ako imas poveliki
ram disk (> 1Mb), jer privremeni fajlovi znaju da budu
poveliki.
Nadam se da ti ovo koristi. Ako su ti potrebni detalji,
mail write dvesic.
Pozdrav,
Dejan.
clipper.523nbatocanin,
> Jeste za Windowse, al' ne za One :)) vec za Clipper - ove.
> Inace mi se demo za to dosta svideo, prozori su u tekst
> modu i svaki predstavlja neki Clipper proces ;)
Da nisi možda pomešao sa nekim drugim programom? Trenutno su ovakvi
programi modni hit, pa može biti da ih ima više sa sličnim imenima.
Jeste da sam za ovaj saznao iz reklame, ali bih ipak rekao da su
"oni" Njindonjsi: "Clip4Win application will perform significantly
faster than those created by Windows conversion products, because
Clip4Win provides direct acces to the Windows API". U spisku uslova
za korišćenje stoji da treba imati Clipper 5.01, Windows 3.1, 4MB RAM
i Windows kompatibilni linker. Pravi ga firma Grumpfish inc.
clipper.524stosic,
Cekajuci Clipper ++
Ako pokusate da pravite objekte uz pomoc CLASSYVS.LIB-a
dobicete ovo:
Class(y) - Copyright (c) Anton van Straaten 1991, 1992
All rights reserved.
This program incorporates a runtime version of Class(y),
the object oriented extension for Clipper 5.01. This
runtime version does not allow you to create your own
classes, or modify the structure of the classes provided.
Class(y) is published by Integrated Development Corporation.
For more information, please call us at (603) 329-5522.
Integrated Development Corporation
190 Main Street, Hampstead, NH 03841 USA
Moze li neko da okrene broj i raspita se o verzijama (za 5.2c) i ceni ?
Slaba mi konverzacija :)
clipper.525neman,
> za koriscenje stoji da treba imati Clipper 5.01, Windows
> 3.1, 4MB RAM i Windows kompatibilni linker. Pravi ga firma
> Grumpfish inc.
Pa izgleda da se radi o dva razlicita proizvoda. A sto se tice
Grumpfisha, njima svaka cast. Apropo ovoga, jel neko ima demo ;)
neman
clipper.526d.petrovic,
Ă> Da li postoji mogucnost startovanja programa (koji je napisan u
Ă> CLIPPER-u 5.01) u expanded EMS ili extended XMS memoriji i KAKo ?
Pokušaj da formulišeš pitanje drugačije. Program se startuje u
osnovnoj memoriji, a koristi EMS i XMS. žak mislim da korsiti
iextended memoruju bez himen.sys-a.
clipper.527drdjokic,
Ono sto me je zanimalo je sledece. Zelim da iz svog CLIPPER programa
pozovem neki drugi komercijalni softver. Kada to uradim ispise se poruka
Out of memory i pukne program. Zato sam zeleo, ako je to moguce da svoj
program pokrenem u XMS ili EMS memoriji, tako da mi convencionalna
memorija ostane slobodna.
clipper.528bulaja,
Koristi Blinker i SwpRunCmd().
clipper.529drdjokic,
> Koristi Blinker i SwpRunCmd().
Da li mozes nesto blize da mi odgovoris. Imam Blinker ali neznam kako
da ga iskoristim za linkovanje. ?????? SwpRunCmd()
Hvala unapred !
clipper.530dejanr,
>> Da li mozes nesto blize da mi odgovoris. Imam Blinker ali neznam kako
>> da ga iskoristim za linkovanje. ?????? SwpRunCmd()
U programu staviš nešto kao
r:=swpruncmd("PKZIP -P&f A:BACKUP *.DBF", 300, "", "")
i... radi.
A za "kako se linkuje BLINKER-om", moraćeš malo da prelistaš uputstvo
ili Norton Guide. Nije mnogo različito od RTLINK-a, verujem da ćeš se
brzo snaći. A da se isplati, naročito što se tiče brzine linkovanja,
isplati se itekako!
Pogledaj i tekst o BLINKER-u iz "Računara 90", strana 32.
clipper.531d.petrovic,
Ă> Out of memory i pukne program. Zato sam zeleo, ako je to moguce
Ă> da svoj program pokrenem u XMS ili EMS memoriji, tako da mi
Ă> convencionalna memorija ostane slobodna.
Stavi u SET CLIPPER=... jedno rnnn (nnn broj kilobajta koliko treba
da ostane free, kad poziva dos) ili koristi blinker i swpruncmd()
funkciju iz samog linkera
clipper.532d.petrovic,
Ă> brzo snaći. A da se isplati, naročito što se tiče brzine
Ă> linkovanja, isplati se itekako!
Zato sto mu nkerementalno linkovanje radi kako treba, za razliku od
rtlink-a, inace, deluje mi nesigurno za raznorazne racunare gde ce
program raditi.
clipper.533marzi,
Hi,
Zna li neko kako mogu da povezem CLIPPER 5.01 za Borlandovim C-om ?
Pozdrav.
clipper.534dvesic,
> isplati se itekako!
Normalno da se isplati !
Ali za razvoj programa :)
Iz iskustava koje sam imao sa ovim linkerom i
Clipperom (5.01 & 5.2) sledi da je on savrsen
za razvoj programa (neprevazidjeno inkrementalno
linkovanje !) ali da je finalnu verziju ipak
bolje linkovati sa RTlinkom.
Kod velikih baza je prilikom indeksiranja (link sa
Blinker-om) doslo do pucanja programa ( cuvena
5333 IE) dok je sa RTLinkom sve bilo OK.
Ako su ti bas neophodne egzibicije tipa (a potrebne su :)
RUN ("VELIKI.EXE")
postoje razni programi (ja koristim SHROOM) koji se ucitaju
PRE tvoje aplikacije, detektuju zahtev za novim shell-om,
swapuju tvoju aplikaciju u mem/disk, izvrse VELIKI.EXE i
vrate aplikaciju u memoriju (Uf, kolika recenica).
Pozdrav, Dejan.
P.S. Pisi ako hoces shroom.
clipper.535dvesic,
> Zna li neko kako mogu da povezem CLIPPER 5.01 za Borlandovim
> C-om ?
Vrlo tesko ! Ja sam uspevao da povezem Turbo C 2.0 i
Clipper 5.01 ali ne potpuno korektno :
Linker javlja neke neresene reference, ali sve radi
naizgled ok.
Ako ikako mozes, predji na MS C 5.1 /6.0.
Ako vec hoces da pokusas koristi :
- LARGE model
- Alt math (bez koprocesora)
- bez startup koda.
Pozdrav,
Dejan.
clipper.536dr.grba,
>> Ono sto me je zanimalo je sledece. Zelim da iz svog CLIPPER
>> programa pozovem neki drugi komercijalni softver. Kada to uradim
Ovo je definitivno posao za Blinker. Posle vrlo kratkog dvoumljenja,
totalno sam se preorijentisao na njega. SwpRunCmd() i "Vozi, Miško..."
clipper.537dr.grba,
>> Zato sto mu nkerementalno linkovanje radi kako treba, za razliku od
>> rtlink-a, inace, deluje mi nesigurno za raznorazne racunare gde ce
>> program raditi.
Ne znam kako se ti ophodiš prema inkrementalnom linku. Ja ga, boga mi,
upotrebljavam samo u toku razvoja programa, gde uz pomoć Blinkera,
par svičeva u .RMK datoteci i par valjano osmišljenih BAT datoteka
dobijam skoro interpretersku okolinu (:
Šalu na stranu, definitivne i valjano testirane verzije programa valja
kompajlirati sa /l opcijom, a bez /b opcije. Veličina .EXE fajla je
manja i manje opterećena nepotrebnim stvarima. A na inkrementalni link
se tada ne bi trebalo oslanjati...
clipper.538dr.grba,
>> linkovanje !) ali da je finalnu verziju ipak
>> bolje linkovati sa RTlinkom.
Toliko pod kožu uđu stvari omogućene BLinkerom, da ja više neću bez njega.
Već i sama mogućnost propuštanja parametara tipa BLINKER EXECUTABLE SERIAL
me oduševljava...
>> Kod velikih baza je prilikom indeksiranja (link sa
>> Blinker-om) doslo do pucanja programa ( cuvena
>> 5333 IE) dok je sa RTLinkom sve bilo OK.
Posle par nekompletnih rasprava po ovom pitanju, voleo bih da neko da
poslednju reč o ovom problemu, sa posebnim osvrtom na Clipper 5.2.
>> postoje razni programi (ja koristim SHROOM) koji se ucitaju
>> PRE tvoje aplikacije, detektuju zahtev za novim shell-om,
>> swapuju tvoju aplikaciju u mem/disk, izvrse VELIKI.EXE i
>> vrate aplikaciju u memoriju (Uf, kolika recenica).
Ovo definitivno nije valjano rešenje za integritet aplikacije. A razlog
što sam kategoričan u ovoj tvrdnji je verovatno već ubeležen u iskustvu
nekih od vas: pre ili kasnije neka lujka po paljenju mašine otkrije
editor, koji po nepisanom Marfijevom pravilu isprobava na CONFIG.SYS i
AUTOEXEC.BAT. Da ne govorimo o gomili osnovaca koji posle dva sata staža
na PC-ju u maminoj firmi odluče da optimizuju mašinu, pa onda padne slučaj
"ovo ovde ne treba". Pa onda ti kroz tri dana, po kiši, a autobusa nema pa
nema, odšpaciraš osam kilometara na intervenciju koja se sastoji u vraćanju
jednog u AUTOEXEC.BAT, a nedajbože i čupanju podataka iz posrnule aplikacije.
Zato, zasuci rukave i reši stvar na nivoJu programiranja.
clipper.539dvesic,
>> Posle par nekompletnih rasprava po ovom pitanju, voleo bih da
>> neko da poslednju rec o ovom problemu, sa posebnim osvrtom na
>> Clipper 5.2.
Evo ovako : covek je imao instaliran Novell Lite 1.0 (znam
da je stara verzija itd itd ali mu je radila posao) na
486/50 sa 8 Mb i 210 Mb diskom kao glavnim racunarom (386SX
su bila dva terminala).
Aplikacija je pratila njegovo komplet poslovanje. U najvecoj
bazi je imao oko 25.000 slogova (samo).
Aplikacija je radjena u Clipper 5.2 verziji. Duzina EXE fajla:
oko 800k linkovano sa Blinkerom. (ja autor aplikacije).
Tip mi je s vremena na vreme prijavljivao pucanje programa i to
uvek u razlicitim situacijama.
Posto sam ugradio error handler, i posto on nikad nista nije
javljao
-> mora da je interna greska ili slicna, koja kroz regularni
handler ne prolazi. (pri tom sam se NORMALNO obezbedio od sitacija
tipa : nema mesta sa svapovanje i slicno).
Jedina intervencija koja mi je prosla je re-link sa RTLinkom.
Od tada, nijedna fantom greska se nije ponovila !
>> Ovo definitivno nije valjano resenje za integritet aplikacije.
>> A razlog
Ne shvatam zasto ovo nije resenje. Isti postupak primenjuje i
SwpRunCmd.
>> editor, koji po nepisanom Marfijevom pravilu isprobava na
>> CONFIG.SYS i AUTOEXEC.BAT. Da ne govorimo o gomili osnovaca
>> koji posle dva sata staza
Kakve veze ovde imaju AutoExec i Config ?
Umesto da se aplikacija stratuje sa :
APP.EXE //f:65 /Mono ...
startuje se sa :
shroom -q -w APP.EXE //f:65 /Mono ...
Stavis lepo Shroom u direktorijum aplikacije, napravis ga
Hid/Read Only i zaboravis na njega. Ako ga klinci vec izbrisu,
ti TeleReplicu - pa prebacis coveku preko modema novu kopiju :))
Pozdrav,
Dejan.
P.S. A da Blinker ima strava opcije - ima. Ne jednom sam pozalio za
njima !
PP.S Verzija Blinkera je 2.01.
clipper.540gari,
Da li bi neko mogao da stavi ovde komentar
u vezi novih datoteka u dir r:\ibmpc\database:
pcf70.a01 ... pcf70.a07
Posto je telefonski impuls veoma skup za akrobaciju
skidanja ovih fajlova u Novi Sad, voleo bih
da znam o cemu se konkretno radi i
vredi li skidati to...
pozdrav, Gari.
clipper.541bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
tbmore zip 7699 Objasnjenje interne strukture TBrowse objekata
A description of the internal TBrowse-structure as far as I know it,
plus code of 10 funcs I use to access TBrowse-internals
clipper.542d.petrovic,
Ă> Ne znam kako se ti ophodiš prema inkrementalnom linku. Ja ga,
Ă> boga mi, upotrebljavam samo u toku razvoja programa, gde uz pomoć
Ă> Blinkera,
Možda nisam bio jasan:
Blinker koristim samo pri razvoju i samo za inkrementalno linkovanje.
Svičevi /l i <bez>/b su mi default I PRI RAZVOJU, treba baš da
zaglavim da bih to izmenjao. Za Rtlink i izvršnu verziju mi je po
tome dovoljan samo jedan .bat fajl, samo još ostaje da ručno izbacim
višak koda ;))). Neverovatno je koliko nepotrebnih funkcija zna da mi
ostane u jednom programu kad ga završim ;)))
clipper.543d.petrovic,
Ă> Zna li neko kako mogu da povezem CLIPPER 5.01 za Borlandovim C-om
Ă> ? Pozdrav.
Ma jel ti ja rekoh svoja iskustva? ;))
Ne sećam se šta me je zezalo, delimično je radilo, ali znam šta sam
naučio iz toga:
"Zaboravi na Borland + Clipper"
clipper.544dvesic,
Evo za zainteresovane, SHROOM !
Pozdrav,
Dejan.
shroom2d.zipclipper.545dsisic,
>>> Ono sto me je zanimalo je sledece. Zelim da iz svog CLIPPER
>>> programa pozovem neki drugi komercijalni softver.
> Ovo je definitivno posao za Blinker. Posle vrlo kratkog
> dvoumljenja, totalno sam se preorijentisao na njega.
> SwpRunCmd() i "Vozi, Misko..."
The OverLay() Library for Clipper Ć The OverLay() Library Ć Function Library
────────────────────────────────────────────────────────────────────────────
Syntax: <log Successful> = OverLay( [<char Program>]
[, <num Memory>]
[, <char Pathname(s)>]
[, <char Environment>] )
Purpose: To run an external program or shell to DOS with the
requested amount of memory free.
Args: <char Program> is a string containing the name of the
program you want to run and its parameters. If it is an
empty string, the function will shell out to DOS.
<num Memory> is the amount of memory in K that you want
to free up. Specify 0 or a number greater than available
memory to free up all the memory possible.
<char Pathname> is a string containing one or two DOS
path specifications (separated by a semi-colon) to tell
OverLay() where to place the temporary disk file(s)
produced by OverLay() (if OverLay() needs to use a disk
file).
<char Environment> is a set of environment strings
(separated by CHR(0)s) to modify the parent environment.
This can be used to add, delete, or change any
environment string in the parent environment.
Returns: A logical value. .T. means the function succeeded, and
.F. means the function call encountered an error. When
a .F. value is returned, the O_ErrMajor() function should
be used to determine the cause of the failure.
Usage: This function is the main reason for purchasing The
OverLay() Library. It allows you to run another large
program from your Clipper application. The behavior of
this function can be controlled by many of the other 30+
library functions.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Dobra stvar, jel tako ?!!!
clipper.546dr.grba,
>> Kakve veze ovde imaju AutoExec i Config ?
>> Umesto da se aplikacija stratuje sa :
>>
>> APP.EXE //f:65 /Mono ...
>>
>> startuje se sa :
>>
>> shroom -q -w APP.EXE //f:65 /Mono ...
OK, OK, OK, nisam znao za ovo, NHF, nadam se. Samo sam zagovarao neko
"čisto" rešenje...
clipper.547dr.grba,
>> višak koda ;))). Neverovatno je koliko nepotrebnih funkcija zna da
>> mi ostane u jednom programu kad ga završim ;)))
Ajde, leba ti, pričaj mi malo o tome (:
Ja jednom kranuo da čistim smeće iz aplikacije. Sutra oko podne sam odustao...
clipper.548dr.grba,
>> The OverLay() Library for Clipper Ć The OverLay() Library Ć
>> Function Library
...
>> Dobra stvar, jel tako ?!!!
?
A tek boja tapeta u predsoblju mog ujaka! (:
Dae gu de gi vidime.
clipper.549d.petrovic,
Ă> Ja jednom kranuo da čistim smeće iz aplikacije. Sutra oko podne
Ă> sam odustao...
Negde sam pročitao nešto kao neka pravila...
- Teško da će program da proradi iz prve.
- Ako proradi velika je verovatnoća da ne radi korektno
- Ako radi korektno sigurno će ostati gomila nepotrebnih funkcija
....
sad... nisam to baš lepo interpretirao... :(((
clipper.550ndragan,
/ Ja jednom kranuo da čistim smeće iz aplikacije. Sutra oko podne sam
/ odustao...
Opšti deo:
Imam rešenje: napišeš generator dokumentacije, da ti napravi kompletan
spisak svih fajlova, rutina, .trt i .mrt fajlova koji čine aplikaciju,
pa onda kreneš da premeštaš nepotrebne u poddirektorij (ili da ih
brišeš, ako imaš arhivu).
E onda probaš da li ti je aplikacija i dalje kompletna.
Deo za Foksovce:
Iz fajlera (like *.prg) lepo pogledam šta ima, i to po starosti;
najstarije rutine potražim (ctrl-f) i ako se ne spominju nigde u
aplikaciji, ladno brišem.
Epilog:
Uspeo sam da svedem neke aplikacije sa 180K zipa na 115, a neke na
samo 45.
clipper.551eotek,
> Da li bi neko mogao da stavi ovde komentar
> u vezi novih datoteka u dir r:\ibmpc\database:
> pcf70.a01 ... pcf70.a07
Prvi utisci:
radi se o nekoj vrsti lepseg dBase III+ sa sledecim dodacima:
- radi u tekstualnom i grafickom rezimu, u boji i c/b, podrzava
misa,vrsi import i export 6-7 formata (starijih, ne previse zna-
cajnih),moguc je telefon dial iz baze (radi i na nasim vezama),
moguca izrada grafikona (u grafickom modu) sa nekoliko standardnih
opcija na osnovu postojece baze podataka, uz naziv baze daje se
i mogucnost dodavanja opisa baze (cca 50 ch), podrzava dovoljan
broj stampaca (osnovna lista).
- sam .exe ima oko 900 kb, a napisan je - koliko vidim - u
Borland C++ i Clipper, uz koriscenje nekih dodatnih drajvera
za graficke kartice. ceo program zauzima oko 2 MB na disku.
- program je shareware, naznaceno je 60 dana (ne znam sta ce
biti nakon toga, ali izgleda da ce traziti serijski broj i/ili
sifru), kosta ispod 100 USD (single user) ili oko 500
za LAN (koji, kako - nisam bas nasao)...
- down ili ne: pa, informativno je.
rgds
:)
eotek
clipper.552domana,
Postovane kolege,
Cuo sam da postoji Btrieve record drajver za Clipper
pod imenom RASQL/B firme Horizon.
Da li je jos neko o tome nesto nacuo...
Btrive je inace poznat po klijet-server nacinu rada
sto je neobicno bitno za Clipper u mrezi !
Ako imate BILO KAKVU informaciju - makar i kontakt tel.
molio bih Vas da mi je prosledite na licnu postu...
Domana
clipper.553dvesic,
Cao narode !
Da li neko zna zasto sledeci red NE PROIZVODI gresku ( ni
prilikom kompajliranja ni prilikom startovanja ) :
? AllTrim (9)
Da podsetim : AllTrim bi trebala da radi samo sa stringovima NE i sa
brojevima !
Dejan.
clipper.554gari,
Skinut fazon sa telepathy_home BBS-a (USA):
Ako imate problema sa LIB-ovima (CLIPPER501)
stavite u source:
ANNOUNCE CLIPPER501
Oni tvrde da ovo sljaka...
Ko bude ispitao, neka javi o utiscima...
pozdrav, Gari.
clipper.555snemcev,
>> Ako imate BILO KAKVU informaciju - makar i kontakt tel.
>> molio bih Vas da mi je prosledite na licnu postu...
Ne, ne, ne i po sto puta neeeeee! ;)
Zanima još nekog, dajte u conf.
clipper.556dr.grba,
>> Da li neko zna zasto sledeci red NE PROIZVODI gresku ( ni
>> prilikom kompajliranja ni prilikom startovanja ) :
>>
>> ? AllTrim (9)
>>
>> Da podsetim : AllTrim bi trebala da radi samo sa stringovima NE i
>> sa brojevima !
Ne znamkako tačno Clipper interpretira ovu situaciju, bilo bi zgodno zaviriti
pod haubu pa ispitati. Ono što je moguće kod nekih kompajlera jeste da broj
mogu u sličnoj situaciji interpretirati kao string.
Baš zanimljivo.
clipper.557dr.grba,
Da li se nekoigrao sa ORDBAGxxx() funkcijama indeksnih drajvera u Clipperu
5.2 i da li je pokušavao da otkrije neka suštinska poboljšanja njihovim
korišenjem?
I najzad, da li se neko bavio posebnim sortnim rasporedima u Clipperu? Znam
za neka rešenja, ali najpre vas da čujem.
clipper.558ndragan,
/ ? AllTrim (9)
Foks lepo javlja "Illegal parameter type, or count". Šta bi Kliperu?
clipper.559aquarius,
<> pod haubu pa ispitati. Ono sto je moguce kod nekih kompajlera
<> jeste da broj mogu u slicnoj situaciji interpretirati kao
<> string.
<>
<> Bas zanimljivo.
Da li su samo brojevi u pitanju ?
? ValType( AllTrim( Date() ) ) =-> C
? Len( AllTrim( Date() ) ) =-> 0
? ValType( AllTrim( .T. ) ) =-> C
? Len( AllTrim( .T. ) ) =-> 0
? ValType( AllTrim( { |b| b +1 } ) ) =-> C
? Len( AllTrim( { |b| b +1 } ) ) =-> 0
? ValType( AllTrim( { 1, 2, 3 } ) ) =-> C
? Len( AllTrim( { 1, 2, 3 } ) ) =-> 0
Gde smo sada ?
Aquarius :(
clipper.560aquarius,
<> A tek boja tapeta u predsoblju mog ujaka! (:
<>
<> Dae gu de gi vidime.
dr Grbi i svim zainteresovanima !
Ne znam za tapete tvog ujaka, ni da li ima predsoblje, ali
sto se tice Overlay()-a, evo ga, pa javi iskustva.
Aquarius :)
overlay.arjclipper.561jorad,
Wideo sam u V.Six demou kalendar koji mi se dopao pa sam uradio
nešto slično. Evo ga kao prilog, pa ko voli nek izvoli...
Rade
kalendar.zipclipper.562nbatocanin,
> Da li se nekoigrao sa ORDBAGxxx() funkcijama indeksnih
> drajvera u Clipperu 5.2 i da li je pokušavao da otkrije
> neka suštinska poboljšanja njihovim korišenjem?
Pa, suštinska poboljšanja zavise od RDD-a koji koristiš. Na primer,
ako koristiš DBFNTX, ne dobija se ništa naročito, ali ako koristiš
DBFCDX, dobija se. Najatraktivnija stvar je trpanje više indeksa
(ordera) u jednu datoteku. Inače, sve ove funkcije se koriste
indirektno u naredbama INDEX, USE, ORDER, ...
clipper.563dr.grba,
>> Ne znam za tapete tvog ujaka, ni da li ima predsoblje, ali
>> sto se tice Overlay()-a, evo ga, pa javi iskustva.
Skinuću taj fajl i poigrati se njime prvom prilikom.
Zašto se vređaš? Samo sam malo ironično hteo da podržim konstruktivnost
u raspravi.
clipper.564nesa,
Šaljem ovu rutinu u MSC, koja čita i/ili postavlja atribute POSTOJEĆEM
fajlu! Iz Clipper-a se poziva sa (npr.):
cdos_setfi("file.ext", _A_HIDDEN + _A_RDONLY)
Nevolja je što sa C kompajlerom iz verzije 6.0 nakon ove kobasice:
CL fileattr.c /c/AL/Gs/Zl/FPa -link /NOE/se:512
dobijam poruku:
Command line error D2002:Conflict in memory model ili tako nešto.
Svi parametri su po pravilima za povezivanje C sa Clipperom (po Rick
Spenc-u). žuo sam da je razlog to što nemam C verziju 5.1!
Ovo mi je potrebno hitno. UKOLIKO ima dobrih duša koje će ovo uspešno
prevesti i povezati i poslati .OBJ fajl (uz dodatna obaveštenja gde da
nadjem C5.1)!
Evo i programa:
/***
* Dobijanje i definisanje atributa datoteke
*/
#include "extend.h"
#include "dos.h"
/***
* BROJNI cdos_getfi(path, attribute)
*
* ZNAKOVNI path Puna putanja
* BROJNI *attributes Broj za smestanje atributa.
* Mora biti prenet preko reference.
*
* Odredjivanje atributa datoteke ili direktorijuma. Atributi su u
* attribute (mora biti prenet preko reference). Rezultat funkcije
* je 0 ako je ok, u suprotnom je broj greske.
*/
CLIPPER cdos_getfi()
{
unsigned attributes, errcode;
/* Poziv funkcije iz biblioteke */
errcode = _dos_getfileattr(_parc(1), &attributes);
/* Smestanje atributa u parametar prenet preko reference */
_storni(attributes, 2);
/* Vracanje kôda greske u Clipper */
_retni(errcode);
}
/***
* BROJNI cdos_setfi(path, attribute)
*
* ZNAKOVNI path Puna putanja
* BROJNI attribute Novi atributi
*
* Definise atribute datoteke ili direktorijuma.
* Vraca 0 ako je ok, u suprotnom je broj greske.*/
CLIPPER cdos_setfi()
{
_retni(_dos_setfileattr(_parc(1), _parni(2)));
}
hederi.zipclipper.565nesa,
Postoji li neka asemblerska funkcija za set atributa postojećem fajlu!
Pozdrav!
clipper.566peca.st,
!-> Postoji li neka asemblerska funkcija za set atributa postojećem
!-> fajlu!
Postoji, naravno. :)
DOS funkcija 43h :
Postavljanje atributa:
AH 43h
AL 01h
CX atributi
DS:DX seg:off na ime fajla.
Int 21h
U AX će vratiti grešku, ako je ima.
Atribute setuješ ovako:
00h - normal
01h - read only
02h - hidden
04h - system
20h - archive
Ako hoćeš kombinaciju nekih, samo ih saberi.
Greške koje mogu da se vrate u AX:
1 - Invalid function code
2 - file not found
3 - path not found
5 - access denied
Ako hoćeš da čitaš atribute, sve je isto, samo što će ti u CX
biti vraćeni atributi tog fajla.
Peđa.
clipper.567dcolak,
Momci, potrebna mi je pomoć...
Koristi li neko BRIEF pri programiranju u (jel'te) Clipper-u?
Potrebni su mi neki makroi napravljeni da bi olakšali programiranje
u Clipper-u.. Zovu se DBF*** (zaboravih ime) ili tako nekako, ali
uglavnom kao olakšavaju pisanje .prg...
So, ako neko ima neke makroe, neka ne bude zamoljen...
Sledge DAMMIR!
clipper.568ematic,
> Postoji li neka asemblerska funkcija za set atributa postojećem
> fajlu!
Evo. Poziva se kao [nRetVal :=] CHMOD(cImeFajla, nAtributi). Vraća 0
ako je uspelo, broj greške ako nije. Ovo je samo osnova, ko hoće može
da doda proveru parametara ili da izmeni funkciju tako da može i da
vraća atribute(onda u al ide 0 a atributi se vraćaju u cx)
;--------------------<chmod.asm>------------------------------------
INCLUDE EXTENDA.INC
CLpublic <CHMOD>
CLfunc int CHMOD <char ime, int atributi>
CLcode
push ds
lds dx, ime
mov cx, atributi
mov ax, 4301h
int 21h
jc greska
mov ax, 0
greska: pop ds
CLret ax
END
;--------------------<chmod.asm>------------------------------------
Zgodno je da se atributi definišu u heder fajlu, nešto kao:
//--------------------<atributi.ch>------------------------------------
#define _A_RDONLY 01
#define _A_HIDDEN 02
#define _A_SYSTEM 04
#define _A_ARCH 16
//--------------------<atributi.ch>------------------------------------
Kombinacije atributa se dobijaju sabiranjem. Npr. pera :=
chmod("mika.xyz", _A_RDONLY+_A_HIDDEN)
pozdrav
emil :)
clipper.569ematic,
># define _A_ARCH 16
Bože mili, tek sad videh :( Treba 32 umesto 16. Izvinjavam se zbog
greške jer sam kucao napamet is sora.
clipper.570peca.st,
!-> Ako hoćeš da čitaš atribute, sve je isto, samo što će ti u CX
!-> biti vraćeni atributi tog fajla.
Izvinjavam se, tek sad videh...
Nije baš sve isto, u AL se umesto 01h stavlja 00h
Sori na grešci...
Peđa.
clipper.571gari,
Ako mislis na Dbrief, imam ga, pa ako ti treba, javi...
pozdrav, Gari.
clipper.572qleq,
U file-u SELFJOIN.ZIP se nalazi primer realizacije rekurzivnog
preslikavanja objekta u modelu objekt-veza
( E(ntity)-R(elationship) model ), realizovan na Clipper-u :
Tabela(relacija) RADNIK(.Dbf) sadrzi dva atributa(kolone)
semanticki
slicnog sadrzaja : 'SRADNIK' i 'SRUKOV' - prvo jaĐprimarni kljuc
tekuceg record-a (radnika), drugo je spoljni(sekundarni) kljuc,
koji referencira na (istu) tabelu (RADNIK) i sadrzi ID(sifru)
radnika nadredjenog 'tekucem (radniku)', dakle referencira na neki
drugi record u RADNIK.Dbf .
Radnik.DBF se otvara u dva radna podrucja, a veza se uspostavlja
SET RELATION komandom.
Prirodno, CHILD AREA je indeksiran po SRADNIK.
PARENT AREA je indeksiran po SRUKOV da bi redosled listanja bio
identican kao u izvoru (vidi : SelfJoin.Inf, u SelfJoin.Zip).
┌──────────────┐ (0,1)
│ RADNIK ├────────┐
└──────┬───────┘ │ NAD
(0,M) │ │
│ ╔══════╗
└─────────────║ STRU ║ //single box : Entity
POD ╚══════╝ //double box : Relation
Pozvao bih sve, koji kreiranje svog aplikativnog software-a na
Clipper-u
zasnivaju na bilo kojoj metodologiji projektovanja baza podataka
( BP - informacionih sistema, aplikacija, programa - termin nije
bitan)
( relacioni,mrezni,hijerarhijski model, strukturna sistem analiza,
model objekt-veza i sl.), da saopste svoja iskustva, savete,
misljenja,
podsmehe i sl. - kako to cine, zasto to ima i/ili nema smisla itd.
B.Vulin
P.S. Primer se zasniva na teoriji za cije navodjenje nema mesta,
Sam izvor je informativan u tom smislu.
Onima kojima je navedeno u primeru poznato : zao mi je zbog
Vaseg utroska vremena,prostora,para(phone).
selfjoin.zipclipper.574dr.grba,
>> Pozvao bih sve, koji kreiranje svog aplikativnog software-a na
>> Clipper-u
>> zasnivaju na bilo kojoj metodologiji projektovanja baza podataka
...
>> P.S. Primer se zasniva na teoriji za cije navodjenje nema mesta,
>> Sam izvor je informativan u tom smislu.
Primer je zanimljiv, ima smisla.
Ali ima i grešku: gde ti je Jovan u levoj tabeli? I kako razrešavaš taj
momenat - kada ne postoji nadređeni radnik? Pripazi na takve momente...
Na kraju, kroz postupak normalizacije veza već u drugoj normalnoj formi se
prepoznaju ovakve tačke, ako se dobro sećam. Kako si obavio normalizaciju?
I na kraju jedno pitanje: da li se stvarno vrsta relacije označava kao
(0,1) i (0,M)? Koliko je meni poznato, u toku projektovanja baze podataka
nakon normalizacije (već u trećoj normalnoj formi) se prepoznaju sledeći
odnosi:
1 : 1 - jednom entitetu korespondira jedna i samo jedna relacija
po datom ključu (opšti matični podaci na osnovu ključa;
postoji npr. jedan i samo jedan vlasnik vozila reg.
tablice XY-123456)
1 : C - jednom entitetu korespondira jedna ili nijedna relacija
po datom ključu (slučaj koji se dešava u tvom primeru - postoji
samo jedan ili nijedan rukovodilac radniku);
1 : M - jednom entitetu korespondira nepoznat broj relacija (0 - n)
po datom ključu (komitent 123456 je ostvario promet na 0 - n
transakcija);
a sve ostale kombinacije ispadaju iz kombinacije nakon normalizacije.
Malo me zbunila nomenklatura (0,1)... jer mi je nepoznata.
P.S. I stavi SET EDITOR DOD, da ti ne bi pravio one seckalice po tekstu.
Takođe, onolika leva margina kroz ceo tekst je sasvim izlišna.
clipper.575ndragan,
/ P.S. Primer se zasniva na teoriji za cije navodjenje nema mesta,
Ova rečenica je podjednako dobra za navod kao i bilo koja druga.
Teorija je malo opširnija, ali u praksi čak nije neophodno potrebno
otvaranje baze dvaput - dovoljno je definisati do koje dubine se ide u
samopozivanju, te brojeve slogova od kojih smo krenuli u dubinu pamtiti
na nekoj vrsti steka (u nizu, najbolje).
Tako se u običnoj .dbf bazi sa _jednim_ indeksom može napraviti
razgranata struktura (drvo), s tim što ja to radim obrnutom logikom, u
drugom polju navodim indeksni pojam sloga nižeg nivoa, tako da bi se u
tvom primeru rukovodilac pojavio onoliko puta koliko ima neposredno
podređenih, svaki od njegovih podređenih onoliko puta koliko _on_ ima
neposredno podređenih i tako do nekog nivoa na kojem bismo imali radnika
bez podređenih, dakle sa praznim drugim poljem.
Za stvar za koju je koristim, ova organizacija je sasvim ok, mada je
obrnuta od tvoje, ali logika je ista.
clipper.576domana,
B00000000000000
Imam jedan predlog "na Clipper programere"...
Sve oko nas je otprilike prilicno ruzno a ide Nova godina
i verovatno je da nismo u prilici kao nekad' i kako bi smo zeleli...
'Ajde da svaki Clipper programer na Sezamu POKLONI ostalim
Clipper programerima (na istom) po neko parce simpaticnog koda
nastalog u ovoj neveseloj godini,
bez takmicenja ciji je naj* i tako to,
jednostavno samo poklon...
Eto, pogledajte kod uz ovu poruku "u to ime"...
/*****************************************************
* *
* Sretna <novaGodina> svim Clipper programatorima ! *
* *
*****************************************************/
Ojasnjenje preUpotrebe,
...piste Clipper aplikaciju koristeci nizove
i Clipper umetanje niza u niz u niz u niz u ...
...sigurno Vam je zatrebalo da vidite sadrzaj te
carobne tvorevine umetanja SVE SA KOORDINATAMA
(indeksima) svakog krajnjeg clana (koji nije niz)
i tipom istog...
...fajl koji ide uz ovaj tekst, jedna lepa gledalica
umetnutih nizova, je upravo to - umesto:
┌──────────────────────────┐
│ aEval(aNiz,{|q|qout(q)}) │
└──────────────────────────┘
gde vidite samo prvi sloj kazete:
╔═════════════╗
║ aVidi(aNiz) ║
╚═════════════╝
i uzivate...
Domana
avidi.prgclipper.577dvesic,
Cao !
Evo nesto za poklon !
Mala ASM rutina (Sat.Obj - 344 bajta) za rezidentan satic
koji mozete da ukljucujete/iskljucujete. Fino radi.
Ako je vec bilo (ja sam od skora ovde) ili vam se ne svidja,
pisite ... poslacu vam neki drugi pokloncic !
Pozdrav,
Dejan.
sat.arjclipper.578dejanr,
Jedno iskustvo sa Clipper-om, možda će nekome pomoći u sličnoj prilici.
Računar je AT 12 MHz (zvani kanta ;) sa 1 M memorije, na sebi ima relativno
nov IDE disk od 120 mega (pre je imao matori disk primeren sebi, ali je isti
crkao pa je bar to moralo da se podmladi) i osmobitnu Arcnet kartu. Vezan je
u mrežu koja radi pod Novell-om 2.11 (k'o što vidite, sve same stare verzije
al' šta da se radi, tako je :)
Na njegovom lokalnom disku je DBF fajl od svojih 90 megabajta, podaci o svim
privatnim firmama u Srbiji. Njih oko 95,000. Ukazala se potreba da se ta
baza podeli na dve baze, jedna sa firmama čiji je matični broj manji od
7,000,000 a druga sa firmama čiji je matični broj između 7,000,000 i
8,000,000. Ima ih otprilike podjednako, onih manjih oko 45,000, većih
50,000.
Krenem ja da izdvajam firme ispod 7,000,000, otprilike ovakvim Clipper
programom:
use f:srbija6
append from c:srbija for matbroj<=7000000
quit
Krene on da žvaće, žvaće i sažvaće za cca 15 minuta, što je bilo izuzetno
prijatno iznenađenje, ja očekivao bar sat. E sad krenem da brišem te firme
iz baze, otprilike ovako:
use c:srbija
delete for matbroj<=7000000
quit
Krene to da radi, radi, radi, ... , radi, prošlo 15 minuta, pola sata,
sat, sat ipo! i ja ga najzad prekinem, da vidim šta se dešava. A on
tek prešao 20,000 firmi. Probao sam posle iz dbase-a III (čisto da vidim
jel' moguće da je toliko sporo, moguće je), probao da napravim petlju
da briše slog po slog, ma sve gore od goreg. Ispalo je po nekom proračunu
da bi trebalo 5 sati da se to obavi, ne računajući posle PACK koji tek
mogu misliti koliko bi trajao. Onda nekako oslobodih 50 mega na mrežnom
disku, pa napravim jedno:
use f:srbija7
append from c:srbija for matbroj>7000000
quit
I to se opet završi za 15-20 minuta posle čega sam originalnu bazu prosto
obrisao. E sad, kako je moguće da je 20 puta brže da podatke "pregura"
preko spore Arcnet mreže, nego da samo setuje slogovima jedan bit da su
obrisani, to je van moje moći sfatanja.
clipper.579dvesic,
Pozdravi !
Evo za korisnike Brief editora (v3.1, a verovatno radi i sa 3.0)
jedan simpatican makro za clipper programe.
Ideja je da vam ubrza pisanje programa, inteligentno dopunjavajuci
ono sto pisete ("Template Editing").
Primer : Ako otkucate : F<space>, na ekranu cete dobiti :
Function ()
Return
i slicne sitnice...
Ako vam se dopadne i ako budete zeleli neke izmene, pisite.
Vise nego rado cu vam izaci u susret.
Autor makroa je moja malenkost; makro je nastao po ugledu na
Pascal.Cb; Autori : Dave Nanian i Michael Strickman.
Dejan.
macro.arjclipper.580gavros,
> preko spore Arcnet mreže, nego da samo setuje slogovima jedan
> bit da su obrisani, to je van moje moći sfatanja.
Vrlo dobro,ja sam zbog tog jednog bita dobio šest iz Informacionih
struktura i procesa,u stvari šta je bilo:
Odem ja na usmeni,kao idem da razbijem,nakon dobrog pismenog (85 od 100)
i pita me profa zašto kod serijske datoteke nije iskorišćenje 100%.
Ja reko' pa to je logično,jer se slogovi ne brišu fizički,već logički.
Dakle,kad brišemo bit da li postoji slog,slog i dalje fizički postoji.
On reče BIT??????
tu se rastegla rasprava,kao da sam rek'o bar terabajt i nakon
20-minutnog DAVLJENJA,pita on jednog kolegu i ovaj reče bajt.
Bajt,kolega,bajt,reče profa.
Pozdrav.
P.S. Nisam proveravao,ali ako je bit poješću se.
clipper.581dejanr,
>> > nego da samo setuje slogovima jedan bit da su obrisani, to je
>> > van moje moći sfatanja.
>>
>> Vrlo dobro,ja sam zbog tog jednog bita dobio šest iz Informacionih
>> struktura i procesa,u stvari šta je bilo:
>> ...
>> On reče BIT??????
>> tu se rastegla rasprava,kao da sam rek'o bar terabajt i nakon
>> 20-minutnog DAVLJENJA,pita on jednog kolegu i ovaj reče bajt.
>> Bajt,kolega,bajt,reče profa.
>> P.S. Nisam proveravao,ali ako je bit poješću se.
Hm, hm, jel se jedeš ako je DVA bita?
Naime, ako me dobro sećanje služi, kod DBF formata svaki slog počinje
bajtom 20 (ascii blanko). Ako je slog obrisan, počinje sa 2A (ascii *).
Brojevi se, dakle, razlikuju na prvom i trećem bitu (brojano sa desna,
počevši od nultog bita). žini mi se da se ostali bitovi tog bajta ne
koriste, tako da se na neki način može reći da čitav bajt služi da se
obeleži da li je slog obrisan ili ne.
Naravno, u nekoj drugoj implementaciji formata baza podataka moglo bi
se zamisliti i neko drugačije kodiranje. Najzad, informacija obrisan/
nijeobrisan i jeste jedan bit po prirodi stvari.
clipper.582arazumenic,
Evo, da ti se pridružim, podržavajući tvoju ideju.
==================== ovde iseći ===============================
// Funkcija ZAMENA
// Ulazni parametri: nBroj, cOpis
// Poziv: ML_ZAMENA (nBroj, cOpis)
// Opis: Ovo je zamena za funkciju TRANSFORM i ima iste ulazne parametere
// kao i ona, ali ispisuje brojeve u nasem formatu:
// hiljade su razdvojene tackom, a decimale od celog dela broja zarezom
FUNCTION ml_zamena (Broj, Prikaz)
return
strtran(strtran(strtran(transform(Broj,Prikaz),'.','!'),',','.'),'!',',')
==================== ovde iseći ===============================
Primer: nBroj = 123456.789
cOpis = "999,999.999"
ML_ZAMENA(nBroj, cOpis) daje 123.456,789
Nadam se da će nekom trebati.
Saša
clipper.583svaba,
>>> Da li je za update sa Clipper 5.2 na Clipper 5.2c dovoljan
>>> samo 52cus.exe ili je (kao sto se u readme kaze) potreban i
>>> PATCH.EXE ? │Ako je potreban, gde se moze nabaviti ?
>>>
>>> Potreban je i patch.exe. Ako ga nema u top 5.2c update
>>> paketu, onda ga sigurno ima u dogradnjama za verzije 5.2a i
>>> 5.2b (neka od njih je valjda jos na Sezamu:). Pogledacu danas
>>> da ubacim u odvojen patch.exe u dir, pa da se pobrisu ti
>>> stari update-ovi.
E svo vreme potroših tražeći taj famozni PATCH.EXE. Zna li neko
da napiše TAžNO gde se on može naći ???
clipper.584bulaja,
│Opis: Ovo je zamena za funkciju TRANSFORM i ima iste ulazne parametere
│ kao i ona, ali ispisuje brojeve u nasem formatu:
│ hiljade su razdvojene tackom, a decimale od celog dela broja zarezom
└───
Moze to i Clipper :), uz koriscnje @E funkcije u SAY/GET ili Transform(),
npr.
Transform(nBroj, "@E 999,999,999.99".
clipper.585dr.grba,
>> E svo vreme potroših tražeći taj famozni PATCH.EXE. Zna li neko
>> da napiše TAžNO gde se on može naći ???
U Update za Clipper 5.2 b. Inače, Bulaja je zaboravio da ga tutne solo u dir.
clipper.586bulaja,
│U Update za Clipper 5.2 b. Inace, Bulaja je zaboravio da ga tutne solo u dir.
└───
Priznajem da sam zaboravio :). Bice sutra u dir-u, treba konacno da
prebacim jos neke zanimljive stvari za Clip koje smo dovukli iz sveta.
clipper.587toma,
■> Ako vam se dopadne i ako budete zeleli neke izmene, pisite.
■> Vise nego rado cu vam izaci u susret.
Pa valjda je glavna snaga svakog Brief macro-a u njegova
otvorenost za moguće izmene. Dakle, očekujemo source!
clipper.588gavros,
> Hm, hm, jel se jedeš ako je DVA bita?
Ako je DVA bita, definitivno se ne jedem. :))
clipper.589ndragan,
/ I to se opet završi za 15-20 minuta posle čega sam originalnu bazu
/ prosto obrisao. E sad, kako je moguće da je 20 puta brže da podatke
/ "pregura"
Beats me. Da nije to što kod brisanja sloga pristupa pojedinom slogu,
upisuje taj jedan bajt &td, a kod masovnog kopiranja gura u nekakve
bafere i ponaša se kulturnije?
Set exclusive on? Možda je za njega kopiranje u drugu bazu lepša
operacija jer jednu otvara zaključavanjem, a drugu samo za čitanje, dok
kod brisanja ima i kontroline kontrole kontrolu?
clipper.590ndragan,
/ strtran(strtran(strtran(transform(Broj,Prikaz),'.','!'),',','.'),'!',',
Za FoksPro:
ChrTran(Transform(num,pic),",.",".,")
ali je i ovo nepotrebno, jer postoje naredbe
Set Point To ","
Set Separator To "."
...posle kojih Tran(234552.23,"999,999,999.99") daje 234.552,23 bez
pozivanja bilo kakvih UDF. Umesto tačke i zareza može se ubaciti i nešto
egzotičnije. Ovo podešavanje preporučujem da se uradi za štampu; za
ekran je malo nezgodno, jer onda tokom unosa traži decimalni _zarez_,
koji baš nije blizu na tastaturi, što se opet može rešiti sa
On Key Label "." Keyb ","
ali je malo nezgodno ako zaboravite da ga skinete.
Još jedna zgodna stvar: ako koristite juski, često vam zatreba ž (levi
apostrof, chr(96)). U foksovom editoru to je prefiks za kontrolne znake,
a ako vam treba baš ž, morate ga otkucati dvaput. E, ne mora:
On Key Label "ž" keyb "žž" Plain
Bez poslednje reči puca sa "do nesting too deep" čim kucnete ž. Ko
razume shvatiće :)
clipper.591dvesic,
>> otvorenost za moguce izmene. Dakle, ocekujemo source!
Sto se sorsa tice :))) dobicete ga kada ta kobasica od 22Kb bude
licila na bilo sta pristojno - to je pisano '92 kao test znanja
Brief macro jezika - i s obzirom da je radila u kucnoj radinosti,
ispustena je komercijalizacija ! :)))))
Kad uredim source, dobicete ga ! (Kad i novu verziju Sezam softvera ;)
Pozdrav,
Dejan.
clipper.592svaba,
==>..>> E svo vreme potroših tražeći taj famozni PATCH.EXE. Zna
==>..>> li neko da napiše TAžNO gde se on može naći ???
==>..
==>.. U Update za Clipper 5.2 b. Inače, Bulaja je zaboravio da ga
==>.. tutne solo u dir.
Volim jezgrovito izražavanje, ali ne i kada ono dovodi do nepreciznosti.
Dakle, skinem ja obe ove datoteke, jerbo ne znam šta je pesnik hteo da
kaže sa "Update za Clipper 5.2 b".
R:ĐIBMPCĐCLIPPERĐ*.*
----------------------
52abus exe 147952 CA-Clipper 5.2b update sa US verzije 5.2a
52bus exe 160619 CA-Clipper 5.2b update sa US verzije 5.2
Raspakujem ja njih:
PKSFX (R) FAST! Self Extract Utility Version 2.04c 12-28-92
Copr. 1989-1992 PKWARE Inc. All Rights Reserved. Shareware version
PKSFX Reg. U.S. Pat. and Tm. Off.
Searching EXE: C:/TELIX/DOWN/CL52ABC/52ABUS.EXE -
┌───────────Ě SEZAM ■ Racunari ■ Beograd ┌───┐
│ S E Z A M ║ +38 11 64-84-22 ■ 15 lines │ o │
ď═══════════╝ 2400/1200 bps ■ N81 ■ MNP5 └─┴─┘
Inflating: 52BRL.EXE
Inflating: 52BSAMPL.EXE
Inflating: NTXLOCK2.OBJ
Inflating: DBUNET.PRG
Inflating: 52ABBIN.RTP
Inflating: 52ABINC.RTP
Inflating: 52ABLIB.RTP
Inflating: 52BNG.RTP
Inflating: 52ABUS.TXT
PKSFX (R) FAST! Self Extract Utility Version 2.04c 12-28-92
Copr. 1989-1992 PKWARE Inc. All Rights Reserved. Shareware version
PKSFX Reg. U.S. Pat. and Tm. Off.
Searching EXE: C:/TELIX/DOWN/CL52ABC/52BUS.EXE -
┌───────────Ě SEZAM ■ Racunari ■ Beograd ┌───┐
│ S E Z A M ║ +38 11 64-84-22 ■ 15 lines │ o │
ď═══════════╝ 2400/1200 bps ■ N81 ■ MNP5 └─┴─┘
Inflating: 52BUS.TXT
Inflating: 52BBIN.RTP
Inflating: 52BINC.RTP
Inflating: 52BLIB.RTP
Inflating: NTXLOCK2.OBJ
Inflating: DBUNET.PRG
Inflating: 52BRL.EXE
Inflating: 52BSAMPL.EXE
Inflating: 52BNG.RTP
I posle toga napišem svoju gorepomenutu žalopojku.
P.S. Problem je dalje nije rešen, tj. i dalje tražim PATCH.EXE.
clipper.593bulaja,
R:\IBMPC\CLIPPER\*.*
----------------------
clpatch zip 45402 PATCH.EXE program potreban za Clipper 5.2x update
:)
clipper.594gari,
>> @E tralala yu slova...
Ovo pisem iz glave:
FUNCTION Trans_yu(nBroj,cPicture)
RETURN
left(transform(nBroj,cPicture),len(transform(nBroj,cPicture))-2)+".-"
Ovo bi trebalo da radi sledece:
? trans_yu(123456.80,"@E 999,999,999.99") && 123.456.-
pozdrav, Gari.
p.s. Posto ovo direktno kucam potkrala se mala greska
u liniji RETURN... -> umesto -2 treba -3
clipper.595dr.grba,
>> 'Ajde da svaki Clipper programer na Sezamu POKLONI ostalim
>> Clipper programerima (na istom) po neko parce simpaticnog koda
>> nastalog u ovoj neveseloj godini,
>> bez takmicenja ciji je naj* i tako to,
>> jednostavno samo poklon...
Odgovaram na retko lepu inicijativu svojim skromnim prilogom.
Naime, beše ovde pre par meseci neka rasprava o okruženju Clippera, kako
raditi udobnije itd, itd... Svela se priča na našu lenjost da pripremimo
neko standardno okruženje za svoj rad. A LNK i RMK fajlovi su, znamo svi,
bogom dati za tako nešto.
Ja sam za svoje potrebe (tek pre mesec ipo dana) napravio četiri fajla:
TEMPLATE.PRG, TEMPLATE.LNK, TEMPLATE.RMK i R.BAT. Kad kod se zalećem
u pisanije nekog programa, prvo nad njima bajam pet minuta, i nikad više dok
radim sa programom, osim ako dodajem neki novi modul...
Da ne bih slao prazan template, popunio sam ga jednom glupošću, koju možete
iskoristiti ako vas interesuju likovnei aspekti primene CLippera (((: A zgodno
je i za neke intro ekrane... Taj posao sam iseckao u više .PRG datoteka, u
demonstracione svrhe. Obratite pažnju na vodeći .PRG. Ideja je da u njemu
postoji samo kontrola tipa kompilacije (radna, demo, final), poziv vodećeg
radnog modula i deklaracije init proc i exit proc. A sav ostali teret nosi
vodeći radni modul...
Ako nešto nije jasno, a vi pitajte. Tu sam. Mislim da se isplati da oni među
vama koji se bave Clipperom, a još nisu počeli ovo da primenjuju, da malo
prouče sadržaj. Vrlo je na korist.
U ovoj prilici, po ko zna koji put, upućujem svoj naklon kolegi Nenadu
Batoćaninu, koji je moj nesuđeni Pigmalion. Skrećem vam pažnju na ranije
brojeve "Računara", i jedan u kome je Nenad vrlo zanimljivo opisao praktičnu
korist onih svičeva radna/demo/final.
paleta.zipclipper.596dzoric,
Hi :)
Imam malečko problemče. Naime na jednoj klasičnoj krš mašini
(286/12) trči aplikacija pisana u Clipper-u 5.01. S' vremena na
vreme aplikacija pukne sa porukom "Internal stack overflow" :(((
i posle resetovanja mašine nekad mi "samo" ostane uništena jedna
sistemska baza( uvek na istom slogu upiše "TTTTT" a nekad mi
ostane da plačem jer je uništena FAT tabela.
Petljao sam sa STACKS u CONFIG.SYS-u, menjao sam DOS 5.0 na 6.0
ali bez promena.
Napominjem da ista aplikacija trči na još desetak mašina bez problema
i da nema virusa na dotičnoj mašini.
clipper.597aquarius,
<> Zasto se vredas? Samo sam malo ironicno hteo da podrzim
<> konstruktivnost u raspravi.
Nema ljutis, nego probaj ti to, pa javi kao ti izgleda.
btw - kakve su tapete ? :)
Aquarius
clipper.598aquarius,
<> ...posle kojih Tran(234552.23,"999,999,999.99") daje
<> 234.552,23 bez pozivanja bilo kakvih UDF. Umesto tacke i
<> zareza moze se ubaciti i nesto egzoticnije. Ovo podesavanje
<> preporucujem da se uradi za stampu; za ekran je malo nezgodno,
^^^^^^^^^^^^^^^^^^^^^^^^^
<> jer onda tokom unosa trazi decimalni _zarez_, koji bas nije
^^^^^^^^^^^^^^^^^^^^^^^
<> blizu na tastaturi, sto se opet moze resiti sa
<>
<> On Key Label "." Keyb ","
<>
<> ali je malo nezgodno ako zaboravite da ga skinete.
Jest' nezgodno to u FOX-u, al' zato nije u Clipperu. :) Ujedno
koristim priliku da se pridruzim inicijativi Domane kao i da cestitam
svim Sezamovcima Novu:Godinu !!! Ako ima daljih pitanja ili primedbi,
tu sam.
Fajl Num2Calc - moze li na GET-u da se simulira kalkulator i jos
po nesto? Moz' da bide, al' ne mora da znaci! :)
Aquarius
num2calc.zipclipper.599nbatocanin,
Uz poruku je prikačen listing greškom izostavljen u poslednjem
"Savetniku".
cls.zipclipper.600gari,
Svim korisnicima (i korisnicama) sezam-a, zelim sretnu
Novu 1994. godinu i saljem moj mali prilog inicijativi
"svako po nesto".
Uz poruku idi nesto u stili clipper + c, ALI!
direktno sa File Bank-a (US) (ne znam ko ce platiti PTT :)
pozdrav, Gari.
clip_c.zipclipper.601gari,
Posto nije beg cicija (kako se to malo nize kaze ;)
onda mi bilo zao da samo ja imam demo primer
tBrowse -> printer, pa posto je Nova Godina blizu
ja reko malo...
pozdrav, Gari.
tbr2prn.zipclipper.602snemcev,
Pridružujući se čestitkama za Novu 1994. godinu, evo mog prvog priloga:
;Name CRC32.ASM
;Author (C) 1986 Gary S. Brown. No restrictions apply.
;1992.04.19 Rewrite - Bruce Gavin Translated C -> ASM.
;1992.11.3 Rewrite - Terry Carmen re-wrote to be callable
; from Clipper S'87 or 5.01
; CRC32 takes a single argument as a string, and returns
; the CRC32 to Clipper as an 8 digit character string
; Returns NIL if called with incorrect arguments or an empty string
; CRC32 polynomial is edb88320h, and will produce identical CRCs as PKIZP
crc32.zipclipper.603bulaja,
CRC32 si verovatno preuzeo iz \ibmpc\clipper, ali si to zaboravio :).
Inace poslacu i ja neke .prg cestitke kad nadjem vremena ovih dana
da skrpim nesto :).
clipper.604dr.grba,
>> Nema ljutis, nego probaj ti to, pa javi kao ti izgleda.
>> btw - kakve su tapete ? :)
Od jute, sa aplikacijama od plute (((:
clipper.605dr.grba,
>> Inace poslacu i ja neke .prg cestitke kad nadjem vremena ovih dana
>> da skrpim nesto :).
BuMenu 1.4?
(((:
E, sad bez zezanja... Ovo se događa samo u Clipper temi. Treba da se ponosimo
ovom temom, a čoveku koji je inicirao spektakl (domana) da se zahvalimo.
clipper.606arazumenic,
-> Transform(nBroj, "čE 999,999,999.99".
Ovo sam probao pre jedno dve, dve i po godine sa Summer 87 i iz nekog
razloga mi nije uspelo. Onda sam napisao onu funkciju, bio zadovoljan
kako radi, tako da dalje više nisam razradjivao tu temu.
Saša
clipper.607arazumenic,
-> FUNCTION Trans_yu(nBroj,cPicture)
-> RETURN
-> left(transform(nBroj,cPicture),len(transform(nBroj,cPicture))-2)+".-"
-> ? trans_yu(123456.80,"čE 999,999,999.99") && 123.456.-
Ja to radim malo drugačije.
Napravio sam heder datoteku "brojevi.ch" koja izgleda ovako:
#define OP_PD_8 "99,999,999.- "
#define OP_PD_9 "999,999,999.- " itd.
U programu korisitm sledeći način ispisa:
#include "brojevi.ch"
....
? ml_zamena(nBroj, OP_PD_9)
Prednost je u tome što na prvi pogled vidim koji je najveći broj koji se
može prikazati, pa ako mi treba veći, jedno Search&Replace obavi posao.
Ovako kako si dao je mnogo teže menjati program.
Saša
P.S. Nije ništa lično, slično sam i ja u početku radio, sve dok nisu počele
da se pojavljuju zvezdice. Tada sam morao ručno da vršim ispravke u svakoj
PICTURE i ML_ZAMENA. Tada sam napravio heder datoteku, u celom programu
izmenjao opise i kada mi je zatrebala prva sledeća izmena - pevao sam.
clipper.608bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
fxcolor arj 55257 Specijalni efekti sa bojama na VGA za Clipper 5.x
FXCOLOR
Special Color Effects For The VGA System Using Clipper 5.01
Written by Jim Fowler
April 16, 1992
FxColor omogucava promenu VGA palete, fade in/out i slicne zezalice :).
Prilozen je i ASM source.
clipper.609bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
rcmplb11 zip 20088 RCmpLib v1.1: Clipper biblioteka za kompresiju datoteka
The compression and decompression functions of RCmpLib are based on
the so-called Lempel-Ziv principle, to be specific the LZW algorithm.
This base principle is used by almost all famous compression programs
(as LHARC, ARJ and PKZIP).
----------------------
Stepen kompresije je sasvim zadovoljavajuci, brzina takodje, sto znaci
da je biblioteka prilicno upotrebljiva :). Jedini problem je sto je
shareware i povremeno izbacuje poruku za registraciju, sto sigurno nije
zgodno za ugradnju u aplikacije :). Registracija je svega 10 USD, al'
je problem kako to sad poslati.
clipper.610snemcev,
>> CRC32 si verovatno preuzeo iz \ibmpc\clipper, ali si to zaboravio :).
Sorry ako je tako. Imam bar pet verzija tih cvrcova i kud baš da pogodim
onu iz direktorijuma... :((
I'll send something else, ok?
clipper.611bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
pushbu arj 20796 Push (radio) buttons za ubacivanje u GET system
Awhile back I wrote a little program PUSHBU.PRG to produce pushbuttons with
pop-out action and a number of people (including myself) have used them
without any compaints. Nonetheless, PUSHBU.PRG was really never properly
integrated into the Get System, mainly because of the way it handled
the waitstate.
Meanwhile, another public domain offering by Dan Comeau (RADIOBTN.PRG) is
well integrated with the get system, but does not include any push buttons,
and if you're not already using RADIOBTN.PRG you may wish to take a look
at it. Anyway, to make a long story shorter, I finally have gotten around
to putting my push buttons into a modified version of Dan's button engine.
The buttons seems to work well based on the way I routinely use them;
however, no one else has tested them, so let me know if you find any bugs.
All testing of PUSHBUTN.PRG has been done with Clipper 5.01a and RTLINK.
clipper.612dvesic,
Evo moj mali doprinos radu konferencije ...
Nadam se da ce nekom koristiti ...
Moja iskustva u radu sa CDX ideksima
Verovatno je vecina Vas citala Nenadov (NBatocanin) tekst o
novinama u Clipper 5.2 . Ovaj mali tekst je tu da Vam pomogne
oko koriscenja istih. (sto bi rekli, prakticna iskustva)
Najveca novost (bar za mene) su RDD (replaceable database
drivers). E sad, jedan od njih je i DBFCDX, drajver za rad sa
FoxPro bazama i indeksima. Baze su normalne, DBF tipa (uz
izuzetak za MEMO polja) ali su indeksi ono pravo. Da ne duzim,
*.CDX indeksi imaju tri vrlo lepe osobine :
I. Svi indeksi nad JEDNOM bazom idu u JEDNU CDX datoteku
(sto odmah smanjuje broj otvorenih datoteka; sto se opet
itekako da osetiti u mreznom okruzenju)
II. Indeksi su *mnogo* manji - kod CDX-a se za susedni slog
smesta samo razlika u kljucu u odnosu na kljuc prethodnog
sloga (koliko to mnogo : Npr. NTX indeksi u velicini od
2.4 Mb su se konvertovali u 0.7 Mb CDX pandana; naravno,
sve zavisi i od tipa kljuca, ali cete ustedeti bar pola)
III. Postavljanje aktivnog indeksa mozete vrsiti po imenu
umesto po rednom broju (bogu hvala!) : Umesto :
Set Order To 34 koristite Set Order To Tag Po_Datumu
Osnovno piranje : Kako sto bezbolnije preci na CDX ? Evo
nekoliko saveta :
Za pocetak, u vasoj aplikaciji nije potrebno nista posebno
menjati. Samo u delu za indeksiranje umesto
Use Radna
Index On Izr1 To Ind1
Index On Izr2 To Ind2
...
Index On Izrn To Indn
....
Use Radna Index Ind1,Ind2,...,Indn
Napisite
Use Radna Via 'DBFCDX'
Index On Izr1 Tag Ind1 // BITNO
Index On Izr2 Tag Ind2 // JE DA REDOSLED KREIRANJA
... // INDEKSA BUDE IDENTICAN
Index On Izrn Tag Indn // REDOSLEDU OTVARANJA INDEKSA UZ
// BAZU ....
Use Radna Via 'DBFCDX' Index Radna // Slozeni indeks po
// defaultu ima ime baze uz
// koju se vezuje
U jednom od PRG fajlova, dodajte i
REQUEST DBFCDX
cisto kao naznaku linkeru da vam treba i ta biblioteka.
Jos jedan mali savet : Prilikom ponovnog kreiranja indeksa
nemojte koristiti REINDEX (ovo je inace opsta primedba,
nevezana za RDD; REINDEX ne radi korektno ako je ostecen
heder indeks datoteke) vec ponovo INDEX ON. Pre toga
obavezno OBRISITE stare CDX indekse, sa npr. :
aEval(Directory("*.cdx"),{|o|fErase(o[1])})
Razlog : desava se da stari indeks ostane u cdx datoteci,
neaktivan (vazeci je novoizgradjeni) pa samo dzabe zauzima
mesto )
Pre nego sto startujete program, moracete da baze koje koriste
memo polja prekopirate preko CDX drajvera (razlicita
struktura) tj. otvorie originalnu bazu preko NTX drajvera,
pomocnu preko CDX drajvera, prekopirate u pomocnu, izbrisete
originalnu i preimenujete pomocnu.
Posle toga, probajte !
Svi oni Set Order To nnn ce normalno raditi; moze da posluzi
dok se definitivno ne prebacite na TAG-ove :)
Pozdrav,
Dejan.
P.S. Izvinjavam se onima koji ovo gledaju drugi ili treci put !
clipper.614dr.grba,
>> I'll send something else, ok?
I to sa kamatom 100%.
clipper.615dr.grba,
>> P.S. Izvinjavam se onima koji ovo gledaju drugi ili treci put !
Treći put gledam samo ja (((:
clipper.616svaba,
žudi me da ovo do sada niko nije pitao... Ili se nisam uključio
dovoljno rano?
Naime, pri prevođenju programa sa CLIPPER 5.xx pojavljuje se poruka u
stilu "string space exhausted", sa navođenjem funkcije i rednog broja
linije u kome mu je to zasmetalo. Ja shvatim da je prevodilac
"prepunio" neko svoje mesto gde drži stringove, pa podelim tu funciju
na dve manje (u prvoj stavim poziv one druge). Posle ovoga, poruka se
više ne javlja, i sve radi normalno.
Inače, problem koji sam opisao mi se pojavio kad sam jedan program
koji je fino radio pod '87, hteo da prevedem sa CLIPPER 5.xx.
E sad, ja nisam zadovoljan ovim rešenjem - stvarno je seljačko. Zna li
neko šta je uzrok ovome i da li se taj "string space" može proširiti?
clipper.617neman,
> Nadam se da ce nekom koristiti ...
> Moja iskustva u radu sa CDX ideksima
U tvojoj poruci nedostaje ono sto je najvaznije a to je uporedjenje
sa .NTX datotekama po pitanju brzine izvrsavanja indeksiranja i jos
vise samu brzinu pretrazivanja. Prvi test koji sam uradio sa CDX
indeksima je bilo brzina SEEK naredbe u petlji od vise hiljada puta
gde se trazilo jedan slog u bazi od par hiljada slogova. To je bio
i poslednji test koji sam uradio zato sto sam na osnovu rezultata
merenja dosao do zakljucka da NTX drajver pamti gde se nalazi pri
pretrazivanju tj. SEEK-u a CDX iznova cita indeksnu datoteku. Po secanju,
NTX je bio oko 50 puta brzi od CDX-a. Kasnije se pojavio i test u
Racunarima koji je samo potrvdio tezu da je CDX dosta traljavo realizovan
i da vise sluzi sminke radi negoli da se stvarno zelelo unapredjenje
Clippera.
Pored toga, mislim da brzini pravih CDX indeksa doprinosi u stvari
pomenuta cinjenica da se u datoteku upisuje samo razlika u kljucu
( zato valjda i cita od pocetka datoteku :) nego to da postoji samko
jedna datoteka. Ti moras da preturis xxx K(M)B indeksa kroz mrezu
pa bili oni jedna ili vise datoteka.
neman
clipper.618nbatocanin,
> S' vremena na vreme aplikacija pukne sa porukom "Internal
> stack overflow" :(((
Vrlo čudno. Kako tačno glasi poruka, tj. je li to poruka Clipper-ovog
run-time sistema?
clipper.619ndragan,
/ <> On Key Label "." Keyb ","
/ <> ali je malo nezgodno ako zaboravite da ga skinete.
/ Jest' nezgodno to u FOX-u, al' zato nije u Clipperu. :) Ujedno
Šta, definišeš tačku da ti izigrava zarez, i zaboraviš da je skineš, i
kompajler sam zna kad ti više ne treba pa skine sam? Ili moraš za svaki
GET gde ti to treba da pozivaš premapiranje tastera? Ili mu je svejedno
da li kucaš tačku ili zarez - oboje smatra za tačku? Nisi jasan.
clipper.620dvesic,
>> U tvojoj poruci nedostaje ono sto je najvaznije a to je
>> uporedjenje sa .NTX datotekama po pitanju brzine izvrsavanja
>> indeksiranja i jos vise samu brzinu pretrazivanja. Prvi test
>> koji sam uradio sa CDX indeksima je bilo brzina SEEK naredbe u
>> petlji od vise hiljada puta gde se trazilo jedan slog u bazi
>> od par hiljada slogova.
Nisam hteo da siroke narodne mase davim brojcanim podacima,
ali ces me ti naterati ...
Prvo, koliko puta ti u tvojim programima trazis jedan te isti
slog ? Logika koju ja koristim je :
dbSeek(Prvi_Slog koji zadovoljava uslov)
While <uslov zadovoljen>
Obradi slog
dbSkip()
End While
U obradi n slogova brzina dbSeek-a je (skoro) nevazna
u odnosu na brzinu dbSkip-a uz odredjene indekse.
>> uradio zato sto sam na osnovu rezultata merenja dosao do
>> zakljucka da NTX drajver pamti gde se nalazi pri pretrazivanju
>> tj. SEEK-u a CDX iznova cita indeksnu datoteku. Po secanju,
>> NTX je bio oko 50 puta brzi od CDX-a.
Secanje te vara. Ako bas insistiras, petlja od 1000 dbSeek
je kod NTX radila 3.76, kod CDX 17.8 (znaci 5 a ne 50 puta).
Grozan rezultat ? Citaj dalje.
>> test u Racunarima koji je samo potrvdio tezu da je CDX dosta
>> traljavo realizovan i da vise sluzi sminke radi negoli da se
>> stvarno zelelo unapredjenje Clippera.
Sminke radi ? Gledaj sad ovaj test :
dbSeeek(Neki_Slog)
For i:=1 to 3000
dbSkip()
Next i
Brojcano : NTX - 0.61 CDX - 0.71
Gde je razlika od 5 (50) puta ? Nesumnjivo su NTX indeksi za
koji procenat brzi, sto je i logicno - ipak su oni genericki
format za Clipper. Mozda ce sledeca implementacija CDX-a
prevazici decije bolesti.
>> Pored toga, mislim da brzini pravih CDX indeksa doprinosi u
>> stvari pomenuta cinjenica da se u datoteku upisuje samo
>> razlika u kljucu ( zato valjda i cita od pocetka datoteku :)
>> nego to da postoji samko jedna datoteka. Ti moras da preturis
>> xxx K(M)B indeksa kroz mrezu pa bili oni jedna ili vise
>> datoteka.
Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se itekako
da osetiti ! 'Jednu datoteku' sam pomenuo u vezi sa brojem
otvorenih fajlova u jednom trenutku a NE u vezi sa brzinom
indeksa.
Da rezimiram: onaj tekst je bio rezime *prakticnih* iskustava sa
CDX indeksima - svakom ostavlja na volju da proba i odluci koji
tip indeksa nosi bolji odnos brzina/performanse. Ja sam izabrao
CDX : mali su, pakuju se u jednu datoteku, mogu im se obracati
preko naziva a ne preko broja (doduse, ovo zadnje mogu i NTX).
Na vama je da odlucite sta je bolje za vase potrebe.
Nemoj da te zavaraju vestacki izgradjeni testovi. Ne sumnjam
da bi se slican test dao naci i za NTX. Probaj ih u aplikaciji.
U krajnjem slucaju, uvek se mozes vratiti na staro.
Pozdrav,
Dejan.
clipper.621dzoric,
Greška "Internal stack overflow" je DOS-ova greška, i u priručniku za
DOS je napomenjena i navodno se problem rešava povećanjem broja i
veličine stekova( npr. STACKS=9,256 ). U aplikaciji je ugradjen
Clipper Error Handler System. Debagiranjem programa ne mogu da
otkrijem
ništa, pod debagerom sve radi. Baze i indekse otvaram kroz DATA
DICTIONARY
i uvek kod 5 -og rekorda gde se otvara baza SETUP.DBF program je
otvori
i u svim poljima upiše "TTTTTT" (blaži slučaj), program stane na prvi
Inkey( 0 ) i tu je kraj. Sve mi je jasno, ali da posle resetovanja
uništi
FAT, to mi nije jasno. Pre mesec dana sam u CONFIG.SYS ubacio naredbu
DOS=HIGH,UMB i od tada radi, ali do kada će. Negde sam čuo da DOS >
3.31
nema totalnu kontrolu upada u FAT, i da je po tom pitanju DOS 3.31
najsigurniji. Ako među kliperašima ima i DOS majstora možda imaju
odgovor na ovo pitanje.
Još nešto :)
Da li je neko primetio bag u Expand.lib v3.0 kada se više puta pozove
funkcija za promenu palete XPvgaColor() ili XPegaColor(), mašina
zablokira.
Pozdav ..
Dejan
clipper.622snemcev,
>> Prvo, koliko puta ti u tvojim programima trazis jedan te isti
>> slog ? Logika koju ja koristim je :
Moram da priznam da se u svim mojim programima, obrada svodi ili na celu
bazu, ili na neki njen deo koji pronalazim baš preko dbSeek() , a dalje
ide dbSkip() sve dok je uslov zadovoljen.
>> Secanje te vara. Ako bas insistiras, petlja od 1000 dbSeek
>> je kod NTX radila 3.76, kod CDX 17.8 (znaci 5 a ne 50 puta).
>> Sminke radi ? Gledaj sad ovaj test :
>> Brojcano : NTX - 0.61 CDX - 0.71
Evo još jedno testiranje(nema mreže, nema cache)
FOR i=1 to 1000
dbGoTop()
dbSeek('9', .t.) // a devetke ni od korova...
// baza ima ¸4,700 slogova u ¸476K
NEXT
Vremena: NTX: 1.52; CDX: 5.22. Znači, usporenje je oko 3.44 puta.
Svodeći to na samo jednu pretragu dobijamo vremena od 0.00152 i 0.00522
sec. Koji korisnik tu razliku primeti (pa još u mreži), svaka mu čast!
>> Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se itekako
>> da osetiti !
Mislim da ovde CDX, bar u mreži odnosi pobedu nad NTX-om.
clipper.623dzoric,
Kako da nateram GET da skroluje numerike s'desna ulevo,
kao na klasičnim digitronima.
#define NUMERIC_FORMAT "999,999,999.99"
E sad kad radim GET npr:
LOCAL nVar := 1
č x, y GET nVar PICTURE NUMERIC_FORMAT
READ
...dobijam skrolovanje udesno sa "rupama" umesto zareza.
Da li mogu klauzuli PICTURE podmetnuti svoju UDF.
Pozdrav..
Dejan
clipper.624neman,
>>> Pored toga, mislim da brzini pravih CDX indeksa
>>> doprinosi u stvari pomenuta cinjenica da se u datoteku
>>> upisuje samo razlika u kljucu ( zato valjda i cita od
>>> pocetka datoteku :) nego to da postoji samko jedna
>>> datoteka. Ti moras da preturis xxx K(M)B indeksa kroz
>>> mrezu pa bili oni jedna ili vise datoteka.
>
> Pa sad, razlika provlacenja 2.4 Mb u odnosu na 700 kb se
> itekako da osetiti ! 'Jednu datoteku' sam pomenuo u vezi
> sa brojem otvorenih fajlova u jednom trenutku a NE u vezi
> sa brzinom indeksa.
*II. Indeksi su *mnogo* manji - kod CDX-a se za susedni slog
*smesta samo razlika u kljucu u odnosu na kljuc prethodnog
*sloga (koliko to mnogo : Npr. NTX indeksi u velicini od
*2.4 Mb su se konvertovali u 0.7 Mb CDX pandana; naravno,
*sve zavisi i od tipa kljuca, ali cete ustedeti bar pola)
Pravdanje odnosa 1:5 na stetu CDX-a dolazi u obzir samo kod
pojedinacnog pristupa podacima. Kod bilo kog preracunavanja
zasnovanog na pristupu podacima preko indeksa tako nesto
nije prihvatljivo.
Postoji jos jedan problem sa CDX-om. RTlink na zavrsetku povezivanja
prijavljueje potrebu za 70Kb vecom memorijom potrebnom da bi se
program startovao, pod uslovom da se NTX drajver ne iskljuci iz
EXE programa.
neman
clipper.625aquarius,
<> Po secanju, NTX je bio oko 50 puta brzi od CDX-a.
1. Secanje je secanje, al' izmeri jos jednom... Cini se da nije
bas toliko drasticno, narocito ne u praksi. Stotinka vise,
manje...
<> jedna datoteka. Ti moras da preturis xxx K(M)B indeksa kroz
<> mrezu pa bili oni jedna ili vise datoteka.
2. Nece biti da je to bas isto :), ima i mreza svoje prohteve,
a "Murphy's Law" kaze... Osim toga xxx K(M)B je dosta manje
kod CDX drajvera nego kod NTX-a, je'l da ?
3. Use File_1 Index Ind_1, Ind_2, Ind_3, ... Ind_15 via DBFNTX
ili
Use File_2 Index Indx_1 via DBFCDX
Bez komentara...
4. set order to 1
goto recno() -> ovo zbog bug-a, kod DBFNTX drajvera
vs
set tag to F_ime
Komentar kao pod brojem 3.
5. Use File_1 via DBFNTX
Index on Filed_1 to Ind_1 FOR
Use File_2 via DBFCDX
Index on Filed_1 to Ind_1 FOR / WHILE / REST / NEXT / DESCENDING
moze ovo i DBFNTX al' REINDEX ne radi, moras da pazis...
6. Memo polja
DBFCDX blok 64 bytes
vs
DBFNTX blok 512 bytes, pa brzina pristupa, velicina, pa binar...
<> vise samu brzinu pretrazivanja. Prvi test koji sam uradio sa
<> CDX indeksima je bilo brzina SEEK naredbe u petlji od vise
<> hiljada puta gde se trazilo jedan slog u bazi od par hiljada
<> slogova. To je bio
7. Imas li takvu aplikaciju, koja sadrzi gore opisanu petlju ? :)
8. Verzija 5.2c ima neke izmene u pogledu RDD-a, a ne znam koju
verziju ti koristis.
9. Ima tu jos toga, ali svako je kovac svoje srece...
10. A da je DBFNTX brz u pretrazivanju, brz je...
Aquarius
clipper.626aquarius,
<> I'll send something else, ok?
Na primer CRC32 :)
Aquarius
clipper.627aquarius,
<> Od jute, sa aplikacijama od plute (((:
A pluta, je'l domaca :)
Aquarius
clipper.628aquarius,
<> I to sa kamatom 100%.
Jel dnevno ? ;)
Aquarius
clipper.629aquarius,
<> Kako da nateram GET da skroluje numerike s'desna ulevo,
<> kao na klasicnim digitronima.
Vidi fajl NUM2CALC.ZIP uz poruku 11.598
Aquarius
clipper.630aquarius,
<> Sta, definises tacku da ti izigrava zarez, i zaboravis da je
<> skines, i kompajler sam zna kad ti vise ne treba pa skine sam?
<> Ili moras za svaki GET gde ti to treba da pozivas premapiranje
<> tastera? Ili mu je svejedno da li kucas tacku ili zarez -
<> oboje smatra za tacku? Nisi jasan.
Kompajler zna ono sto mu se kaze. Sta ce oznaciti decimalu
odredis sam u nizu aKeys, tacka je zgodna zbog toga sto se
nalazi na numerickoj tastaturi. Mislim da je "pemapiranje"
teska rec u ovom kontekstu. Ovo pisem on-line, ako nisam jasan
odgovoricu opet. Osim toga kod je tu, pa svako moze da ga
preuredi.
Aquarius
clipper.631dvesic,
>> Kako da nateram GET da skroluje numerike s'desna ulevo,
>> kao na klasicnim digitronima.
Pogledaj nekoliko dana unazad u ovoj konferenciji,
za jednu od poruka je prikacen NUM2CALC.ZIP, koji
je pravo resenje tvog problema.
Pozdrav,
Dejan.
clipper.632dr.grba,
>> Vremena: NTX: 1.52; CDX: 5.22. Znači, usporenje je oko 3.44 puta.
>> Svodeći to na samo jednu pretragu dobijamo vremena od 0.00152 i
>> 0.00522 sec. Koji korisnik tu razliku primeti (pa još u mreži),
>> svaka mu čast!
Mislim da je nadalje izlišno baviti se brzinama koje dobijamo ili gubimo
primenom ovog ili onog drajvera indeksa. Hajde malo da se apsolvira utrošak
memorije, mislim da je ovo kritičnije.
>> Mislim da ovde CDX, bar u mreži odnosi pobedu nad NTX-om.
Sa ovim se, već na nivou dvesiceve rasprave, u potpunosti slažem.
clipper.633dr.grba,
>> Kako da nateram GET da skroluje numerike s'desna ulevo,
>> kao na klasičnim digitronima.
U 11.598 je aquarius priložio funkciju koja to radi; mada ima prilično čudno
ponašanje po pitanju decimalne tačke i onoga iz nje, funkcija radi prilično
zanimljivo.
clipper.634dvesic,
>> prijavljueje potrebu za 70Kb vecom memorijom potrebnom da bi
>> se program startovao, pod uslovom da se NTX drajver ne
>> iskljuci iz EXE programa.
Pa nesto moras da platis ako zelis pristup i vako i nako !
clipper.635dr.grba,
Molim za pomoć u delu Clippera kojim ne vladam dobro.
Dvesic mi je poslao demo program, koji je u cilju uštede UL/DL procedura
smlatio PLL opcijom. Prethodno sam i ja njemu slao neki demo, a on nije mogao
da ga startuje. Nakon par poruka dobio sam sugestiju da relinkujem BASE52.PLL,
jer to nisam uradio nakon PATCH operacije na reviziju Clipper 5.2c.
Ja to i uradih, a potom sam startovao program i dobio:
error est0003: Error loading required .PLL "BASE52.PLL" .... .RTLink Startup
Abort.
error est0008: Incorrect PLL Checksum.
Važna napomena je da sam prilikom relinkovanja PLL datoteke dobio
poruku linkera:
UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH:
SYMBOL FIRST REFERENCE
------ ---------------
'RDDSYS' CLIPPER.LIB
(Not defined by
user request)
'ERRORSYS' CLIPPER.LIB
(Not defined by
user request)
'__START_SYM' CLIPPER.LIB
(Not defined by
user request)
'_end' CLIPPER.LIB
'_edata' CLIPPER.LIB
These should be resolved at .EXE generation time
Obratite pažnju na ovaj poslednji red...
Osećam se prilično bespomoćno... Možete li naslutiti u kom smeru je
razrešenje? Da se pripremim za preinstalaciju Clippera? (o, ne samo to ne!)
Napominjem da sam Clipper instalirao, a potom upotrebio direktan patch na
reviziju C, dakle bez međukoraka. Po dokumentaciji, ovo je u redu.
Takođe napominjem da su sve putanje, SET varijable i okruženje sistema
postavljeni po propisu, višestruko prekontrolisano. Koristim 286 mašinu sa 2 MB
RAM, što znači da nikakve egzotike ne leže rezidentno, osim ponekad NG.
---> Whatever you think you see, this is not a tagline.
clipper.636arazumenic,
Ovo je odgovor na neku od prethodnih poruka, greskom izbrisanom iz SOR-a.
Rec je o datoteci PALETA.ZIP, konkretno o PALETA.RMK.
Ja koristim PROG.RMK datoteku na sledeci nacin:
#ifdef i
// instalaciona verzija
Linker = rtlink čprog.lnk /silent
exefile = prog.exe
dirobj = c:ĐprogĐinstall
.prg.obj:
clipper $** /l /m /n /w /o$(dirobj)Đ$*.obj
#else
#ifdef d
// debug verzija
Linker = rtlink prog.lnk /silent
exefile = debug.exe
dirobj = c:ĐprogĐdebug
.prg.obj:
clipper $** /b /m /n /w /dDEBUG /o$(dirobj)Đ$*.obj
#else
// radna verzija
Linker = blinker prog.ln1
exefile = radni.exe
dirobj = c:ĐprogĐradni
.prg.obj:
clipper $** /m /n /d /w /o$(dirobj)Đ$*.obj
#endif
#endif
$(dirobj)Đglavni.obj : glavni.prg
$(dirobj)Đinit.obj : init.prg
......
$(exefile) : $(dirobj)Đglavni.obj $(dirobj)Đinit.obj Đ
....
$(Linker)
Ovde koristim tri poddirektorijuma koji mi sluze samo za cuvanje .OBJ fajlova:
install, debug, radni.
Prednosti:
- ne moraju da se brisu .obj fajlovi kada god se prevodi sa drugim svičem što
prouzrokuje da se uvek prevode samo menjani fajlovi, a ne svi
- manje je fajlova u osnovnom (prog) direktorijumu
Mana:
- povecan utrosak prostoru na hard disku (oko 500kb - zanemarljivo)
Saša
clipper.637zorand,
> Naime, pri prevodenju programa sa CLIPPER 5.xx pojavljuje
> se poruka u stilu "string space exhausted", sa navodenjem
> funkcije i rednog broja
Bug Clippera 5.2 (CA) - !! Resenje: PATCH na 5.2c
Zoran
clipper.638v.nesic,
> Kako da nateram GET da skroluje numerike s'desna ulevo,
> kao na klasičnim digitronima.
PC.PROG.3: 11.299, autor toma.
clipper.639aquarius,
Takav sam covek, pa moram jos da pojasnim :), on-line je on-line,
a editor je editor.
<> Sta, definises tacku da ti izigrava zarez, i zaboravis da je
<> skines, i kompajler sam zna kad ti vise ne treba pa skine sam?
<> Ili moras za svaki GET gde ti to treba da pozivas premapiranje
<> tastera?
nVar1 := 0.00
...
ob1Get:reader := { |oGet| NL_GetReader( oGet ) }
OVDE tacka i zarez iniciraju postavljanje kursora na
odgovarajuce mesto
cVar1 := Spac(10)
...
ob2Get:reader := { |oGet| NL_GetReader( oGet ) }
OVDE tacka i zarez imaju svaka svoju funkciju
...
READMODAL( GetList )
TACKA izigrava ZAREZ samo u slucaju NUMERICKIH promenjivih,
i to samo ako se koristi *NL_GetReader()*, -izigrava- ga u smi-
slu da postavlja kursor na odgovarajuce mesto, dakle ako pogle-
das source, videces da kompajler nema veze s tim, u smislu ne-
kog prepoznavanja kad, sta i kako, niti formulacija "premapira-
nje" tu ima mesta. A kad smo vec kod "premapiranja", koje
izgleda predstavlja problem, sta se dobija komandom FOX-a :
<> On Key Label "." Keyb ","
i sta tu izigrava TACKA :))), i moze li se poistovetiti sa ne-
cim iz mojeg koda? O zaboravljanju i skidanju nema potrebe ra-
zmisljati, jer tu nista nije ni pamceno, ni postavljano, sve
sto treba uraditi je:
oGet:reader := { |oGet| NL_GetReader( oGet ) }
a funkcija *fNumsOnly()* brine dalje.
<> tastera? Ili mu je svejedno da li kucas tacku ili zarez -
<> oboje smatra za tacku?
U ovom slucaju TACKA je zgodnija od ZAREZA jer se nalazi
na numerickoj tastauri.
Clipper 5.2c
n := 0.00
@ 10, 10 Get n Pict "999.99"
Read
Gde ce se postaviti cursor pritiskom na taster TACKA ".",
a gde pritiskom na TASTER zarez "," ???
U OBA slucaja na DECIMALU.
<> Nisi jasan.
Da li sada jesam ?
I na kraju, namera je bila da dam svoj prilog lepoj akciji.
Svako neka prosudi i presudi, pa ako nadje za shodno ili
zgodno da to upotrebi bice dobro, ako ne opet dobro. U sva-
kom slucaju, spreman sam da prodiskutujem o svemu.
btw - Da li si probao kako radi NUM2CALC.exe ?
Moze li nesto slicno da se uradi u FOX-u ?
P.S. Ovo me je nateralo da ponovo pregledam kod, te ustanovih
da pritisak na ZAREZ nema isti efekat kao pritisak na TACKU.
Saljem fajl sa ispravkom ove greske.
Sretna Srpska Nova Godina svim Sezamovcima !
Aquarius
num2calc.zipclipper.640aquarius,
<> U 11.598 je aquarius prilozio funkciju koja to radi; mada ima
^^^^^^^^
<> prilicno cudno ponasanje po pitanju decimalne tacke i onoga iz
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<> nje, funkcija radi prilicno zanimljivo.
^^^
?
Aquarius
clipper.641dzoric,
Poziv svim Clipper, C, ASM programerima !!!
Imam predlog da zajedničkim snagama uradimo Public Domain
Library za Clipper( SEZAM.LIB ), možda po uzoru na Nanfor.lib.
Svako bi dostavio predlog funkcija koje bi ušle u LIB. Tačno je
da postoje lib-ovi koji rade sve i svašta ali ima i dosta
specifičnih stvari koje su vezane za naše podneblje. Ajde da
sve to sredimo, dokumentujemo i stavimo svima na raspolaganje.
Možda bi moderator konferencije mogao da vodi ovaj projekat.
Iznesite svoje mišljenje...
P.S. Zahvalan sam za Num2Calc.zip, to je to...
Pozdrav..
Dejan
clipper.642aquarius,
<> Evo moj mali doprinos radu konferencije ...
<>
<> Nadam se da ce nekom koristiti ...
<>
<> Moja iskustva u radu sa CDX ideksima
Directory of C:\CLIPPER5\OBJ
NTXLOCK2 OBJ 302 06-10-93 5:22p
CDXLOCK OBJ 6679 08-06-93 5:23p
Vec sam pitao dva puta, ali bezuspesno. Imas li iskustva
sa ova dva fajla. Narocito me zanima CDXLOCK.OBJ . Cemu sluze.
Aquarius
clipper.643bulaja,
│Imam predlog da zajedničkim snagama uradimo Public Domain
│Library za Clipper( SEZAM.LIB ), možda po uzoru na Nanfor.lib.
└───
Razmisljao sam ja jos davno o tome, ali sam zakljucio da jos nije
vreme za to :). Bice vreme onda kada se na Sezamu skupi kriticna
kolicina raznih domacih funkcija i biblioteka za Clipper, a za
sada (i pored nekoliko zanimljivih priloga u poslednje vreme) to
jos uvek nije slucaj. No, ne treba odustajati od ove ideje :) -
mozda vec za mesec-dva budemo mogli konacno da napravimo
SezamClip v1.0 Library! :).
clipper.644nbatocanin,
> U obradi n slogova brzina dbSeek-a je (skoro) nevazna
> u odnosu na brzinu dbSkip-a uz odredjene indekse.
Ne uvek. Ako je tekuća tabela spojena sa SET RELATION sa 2-3 druge,
onda ti je svako pomeranje pokazivača sloga u tekućoj tabeli, u
stvari, nekoliko puta SEEK. A ovo je veoma često.
> Gde je razlika od 5 (50) puta ? Nesumnjivo su NTX indeksi
> za koji procenat brzi, sto je i logicno - ipak su oni
> genericki format za Clipper.
SIX drajver koristi isti format, pa je (izgleda) brži od NTX
drajvera. Pre će biti da CA namerno traljavi sa CDX drajverom i tako
ostavlja prostor za druge proizvođače.
clipper.645ndragan,
/ Kompajler zna ono sto mu se kaze. Sta ce oznaciti decimalu
/ odredis sam u nizu aKeys, tacka je zgodna zbog toga sto se
/ nalazi na numerickoj tastaturi. Mislim da je "pemapiranje"
Ajmo onda u detalje. Kad ja u foksu stavim
on key label "." keyboard ","
on mi do daljnjeg (dok ne skinem) svaki pritisak na tačku pretvara u
zarez. Zato to i ne radim, nego na GET ostavim decimalnu tačku, a na
izveštajima držim decimalni zarez i tačku za hiljade.
Mislio sam na premapiranje tog jednog tastera za vreme GETa, što u
načelu može da se izvede i ovako. Kada se radi ta predefinicija u
kluperu, i odakle dokle važi. Da li na nivou jednog GETa, na nivou
jednog READa, ili od stavljanja do skidanja?
clipper.646ndragan,
/ Racunarima koji je samo potrvdio tezu da je CDX dosta traljavo
/ realizovan
CDX je super, možda je drajver traljav. U samom foksu, gde je taj indeks
domaći, doprinosi poprilično.
Za pravi test, nemoj hiljadu puta tražiti isti slog. Strpaj sto ključeva
iz sto slučajnih slogova u niz, pa traži kroz petlju te slogove redom.
Tako ćeš odsimulirati stvarnu situaciju bolje nego u prvom testu.
Drugo, ideja .cdx indeksa nije samo u dobijanju kompaktnijeg indeksa,
nego da se za masovne pretrage po bazi ne čita sama baza, nego samo
indeks. Ubrzanje je u foksu drastično, a čisto sumnjam da je baš cela
Rašmor tehnologija ugrađena u CDX drajver za kliper.
clipper.647dvesic,
>> SIX drajver koristi isti format, pa je (izgleda) brzi od NTX
>> drajvera. Pre ce biti da CA namerno traljavi sa CDX drajverom
>> i tako ostavlja prostor za druge proizvodace.
Razlike u brzini sa SIX i (najnovijim) CDX drajverom su vrlo
male (provereno).
Sto se tice relacija, opet, kada sve uzmes u obzir korisnik
NECE primetiti usporenje u MREZNOJ varijanti (provereno ;)
Doduse, malo, malecno usporenje se primecuje u jednokorisnickoj
varijanti, ali to sam ja primetio, jer sam na to obracao
paznju.
clipper.648dr.grba,
>> Osećam se prilično bespomoćno... Možete li naslutiti u kom smeru je
>> razrešenje? Da se pripremim za preinstalaciju Clippera? (o, ne samo
>> to ne!)
Preinstalacijom Clippera i patch procedurom ispočetka stvar je sređena.
Evidentno sam nešto pobrljavio u prvobitnoj proceduri. Jedinno logično
objašnjenje je, dakle, moja greška.
I zato se izvinjavam na buci koju sam napravio.
clipper.649dr.grba,
>> Mana:
>> - povecan utrosak prostoru na hard disku (oko 500kb - zanemarljivo)
...koji je po mom viđenju izlišan. Vidiš, onaj RMK koji ja koristim radi
dobro zato što ću radnu verziju (bez brisanja .OBJ) koristiti redovno,
a DEMO ili FINAL verziju uradiću na samom kraju, a najviše jednom u par
dana. Prema tome, izlišno je bojati se praktično retkih prilika kada
se svi PRG fajlovi ponovo kompiluju. Taj utrošak vremena kod mene u praksi
teško da prelazi pet minuta nedeljno...
No, sad, taj tvoj primer je izvrsna ilustracija mogućnosti RMAKE skriptova.
Krajnja namera i meni je bila reklamiranje onog što je svima nama ispred nosa,
a što mnogi od nas - bez ikakvog logičnog razloga - ne upotrebljavaju.
I sa zadovoljstvom ću se poigrati tim skriptom.
clipper.650snemcev,
>> NTXLOCK2 OBJ 302 06-10-93 5:22p
Ovo ima veze sa zaključavanjem .ntx datoteka u mreži. Stari Clipper
koristi ofset 1,000,000,000 decimalno, a kako se ispostavilo da to nije
uvek dovoljno daleko, nov koristi FFFFFFFFh (što je i maksimum) tako da
po tom pitanju nisu kompatibilni, pa ako hoćeš da koristiš novu šemu
zaključavanja (što radiš svesno znajući da u neki stari program može da
upotrebi ovako zaključan index i izazove ko zna kakve posledice), moraš
eksplicitno navesto zahtev za linkovanje ovog .obj u .exe.
clipper.651arazumenic,
-> dobro zato što ću radnu verziju (bez brisanja .OBJ) koristiti redovno,
-> a DEMO ili FINAL verziju uradiću na samom kraju, a najviše jednom u par
Da, ovo je tačno. Ali ne užasno nervira čekanje da izvrši prevodjenje svih
.PRG fajlova (jedan program ima ih tačno 50, oko 420 kb sorsa).
A još kada bi moglo u .LNK fajlu da se napiše nešto kao:
#ifdef d
...
#endif
pa da nemam dva-tri skript fajla za linker, bilo bi izvanredno.
Saša
clipper.652dr.grba,
>> <> prilicno cudno ponasanje po pitanju decimalne tacke i onoga iz
...
>> ?
Ako otkucam 1234.5<ENTER>, ja očekujem da sam otkucao 1234.50, a ne 1234.05.
Ovo je u najmanju ruku čudno, ako ne bismo stvar nazvali i bagom.
Da li je sad jesna moja opservacija?
clipper.653dr.grba,
>> mozda vec za mesec-dva budemo mogli konacno da napravimo
>> SezamClip v1.0 Library! :).
Podržavam ovu izvanrednu ideju iz sve snage!
Mislim da bi Bulaja bio dobar koordinator akcije.
clipper.654neman,
> indeks. Ubrzanje je u foksu drasticno, a cisto sumnjam da
> je bas cela Rasmor tehnologija ugradena u CDX drajver za
> kliper.
Ja Rushmore tehniku ubacujem sam u program, a i nisam znao da se to
tako zove :)
neman
clipper.655dr.grba,
>> Da, ovo je tačno. Ali ne užasno nervira čekanje da izvrši
>> prevodjenje svih .PRG fajlova (jedan program ima ih tačno 50, oko
>> 420 kb sorsa).
Ne znam kako ti to radiš, ali ovi momenti su kod mene posvećeni toploj, crnoj
mirišljavoj tečnosti proizvedenoj kuvanjem praha dobijenog mlevenjem prženih
semenki jedne tropske biljke (:
>> A još kada bi moglo u .LNK fajlu da se napiše nešto kao:
(((: A ja mislio da sam jedina lenština među kliperašima na Sezamu (((:
clipper.656dr.grba,
>> Ja Rushmore tehniku ubacujem sam u program, a i nisam znao da se to
>> tako zove :)
A kako to radiš?
---> Peek Poke, čaj za bolje programiranje.
clipper.657dragisha,
-> Drugo, ideja .cdx indeksa nije samo u dobijanju kompaktnijeg indeksa,
-> nego da se za masovne pretrage po bazi ne čita sama baza, nego samo
Bilo koji indeks koji koristi nešto jače od običnog B drveta ne čita
bazu, osim kad radi Get (i piše kad radi Delete)!? Razlika u brzini između
ta dva pristupa je ogromna i ne mogu da vjerujem da neko ima komercijalan
DBMS koji koristi obično B drvo!? Ima li?:)
BTW (da ne pravim dvije replike:) dvesic je rekao da manji broj
datoteka doprinosi brzini mrežnog rada. Malo kliperaški ograničeno:), nije
mu palo na pamet da je najbrži mrežni rad onaj u kome se datoteke ne bi
stalno otvarale-zatvarale kako to radi većina "mrežo-podržavajućih"
programa.
clipper.658madamov,
Interesuje se jedan moj drugar da li postoji neka biblioteka za Clipper za
rad sa bar kodom?
clipper.659dvesic,
>> BTW (da ne pravim dvije replike:) dvesic je rekao da manji
>> broj datoteka doprinosi brzini mreznog rada. Malo kliperaski
>> ograniceno:), nije mu palo na pamet da je najbrzi mrezni rad
>> onaj u kome se datoteke ne bi stalno otvarale-zatvarale kako
>> to radi vecina "mrezo-podrzavajucih" programa.
Palo mi je na pamet ! Objasni mi samo, molim te, kako da u
projektu za celu firmu (Velikoprodaja, maloprodaja, plate,
sintetika, analitika, reprodukcija ...) dobijem na brzini
drzeci otvorenih 36 baza sa pripadajucim indeksima ?
Pozdrav,
Dejan.
clipper.660neman,
> A kako to radis?
Zar stvarno neznas sta je Rushmore ;)
neman
clipper.661neman,
>>> onaj u kome se datoteke ne bi stalno otvarale-zatvarale
>>> kako to radi vecina "mrezo-podrzavajucih" programa.
> sintetika, analitika, reprodukcija ...) dobijem na brzini
> drzeci otvorenih 36 baza sa pripadajucim indeksima ?
A sto da ne budu otvoreni. Radi se samo o tome da radis dbcommit() redovno
i sve je ok. Inace otvaranje & zatvaranje datoteka je spora stvar da bi se
non-stop izvrsavala.
neman
clipper.662arazumenic,
-> (((: A ja mislio da sam jedina lenština među kliperašima na Sezamu (((:
Nije ovde u pitanju samo lenjost, već mi se dešavalo da zaboravim da dodam
funkciju u skript fajl. A najgora stvar je ta kada izbacujem neku funkciju,
ako zaboravim da je izbacim iz skript fajla, onda se onda ulinkuje u program
i nepotrebno zauzima mesto.
Saša
clipper.663dr.grba,
>> > A kako to radis?
>>
>> Zar stvarno neznas sta je Rushmore ;)
Znam šta je Rushmore. I znam da je inplementiran na niskom nivou. Što će
dalje reći da nije na meni kao programeru da se time bavim. A tvoja poruka
je aludirala na neke ručne intervencije koje bi trebalo da posećaju na Rushmore
tehnologiju. Ako sam te pogrešno razumeo, izvini. A ako te nisam pogrešno
razumeo, onda te molim da u par reči kažeš kako ti to radiš, čisto
informativno, jer sticajem okolnosti ova tema u ovoj konferenciji se
bavi razmenom iskustava u radu sa Clipperom.
----> žaj Peek Poke, za vašeg kompjutera skok!
clipper.664dr.grba,
>> i sve je ok. Inace otvaranje & zatvaranje datoteka je spora stvar
>> da bi se non-stop izvrsavala.
Ne non stop. Ali kad treba.
Ježim se od programa koji na početku otvore sve moguće baze i pripadajuće
indekse, trebale one - ne trebale, po principu "Vozi, Miško". To je u
najmanju ruku neozbiljno i nedostojno profesionalnog pristupa programiranju.
---> žaj Peek Poke, low level inspiracija.
clipper.665dr.grba,
Poznato mi je da postoji jedan bit koji će opredeliti da li će
deklaracija boje "N/W*" rezultovati blinkom ili highlight pozadinom.
Hteo bih da mogu ovo da iskoristim, tj. da bude pod mojom kontrolom.
Dakle, ako hoću jedno, da ekran izgleda tako, ako hoću drugo, takođe.
Kako nisam poznavalac asemblera, koji je verovatno neophodan da bi se
ovo rešilo, molio bih neku dobru dušu da mi pomogne.
Takođe bih voleo da čujem raspravu na temu kako se ovo ponaša na
različitim video kartama. Poseban akcenat u mojim potrebama jeste
Hercules grafika.
---> žaj Peek Poke, podmladite svoje programe!
clipper.666djelovic,
> Ježim se od programa koji na početku otvore sve moguće baze i pripadajuće
> indekse, trebale one - ne trebale, po principu "Vozi, Miško". To je u
> najmanju ruku neozbiljno i nedostojno profesionalnog pristupa programiranju
A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
datotekama. Jel to neka specifičnost Clippera ili opšti princip?
clipper.667bulaja,
│Poznato mi je da postoji jedan bit koji će opredeliti da li će
│deklaracija boje "N/W*" rezultovati blinkom ili highlight pozadinom.
│Hteo bih da mogu ovo da iskoristim, tj. da bude pod mojom kontrolom.
└───
Nisam bas siguran da sam shvatio sta hoces :), ali u Clipper-u postoji
funkcija SetBlink() kojom odredjujes kako ce se tretirati "*" u color
atributima:
SETBLINK()
Toggle asterisk (*) interpretation in SETCOLOR() string between blinking and
background intensity
──────────────────────────────────────────────────────────────────────────────
Syntax
SETBLINK([<lToggle>]) --> lCurrentSetting
Arguments
<lToggle> changes the meaning of the asterisk (*) character when it
is encountered in a SETCOLOR() string. Specifying true (.T.) sets
character blinking on and false (.F.) sets background intensity. The
default is true (.T.).
Returns
SETBLINK() returns the current setting as a logical value.
Description
SETBLINK() is an environment function that toggles the
blinking/background intensity attribute and reports the current state of
SETBLINK(). When SETBLINK() is on, characters written to the screen can
be made to blink by including an asterisk (*) in a color string passed
to SETCOLOR(). When SETBLINK() is off, the asterisk (*) causes the
background color to be intensified instead. Thus, blinking and
background intensity attributes are not available at the same time.
clipper.668madamov,
> Jel to neka specifičnost Clippera ili opšti princip?
Valjda opšti princip, jer ako skikne da se nanese što manje štete po
otvorene datoteke.
clipper.669neman,
> Znam sta je Rushmore. I znam da je inplementiran na niskom
> nivou. Sto ce dalje reci da nije na meni kao programeru da
> se time bavim.
Ja radim to isto, znaci da pri pravljenju upita na bazu sam
povedem racuna o tome da li mogu da ubrzam pristup odgovarajucim
podacima koriscenjem indeksa. Samim tim smatram da jeste na meni
da vodim racuna o organizaciji podataka. A Rushmore tehniku u konkretnoj
implementaciji na Foxu nisam koristio, citao sam samo o tome u Racunarima,
i informisao se tu i tamo a mislim i ovde:).
neman
clipper.670neman,
> Ne non stop. Ali kad treba.
Treba samo kad se izlazi iz programa ili neko pokusava reindeksiranje.
> Jezim se od programa koji na pocetku otvore sve moguce
> baze i pripadajuce indekse, trebale one - ne trebale, po
> principu "Vozi, Misko". To je u
Pa i ja mislim i primenjujem to da program treba da otvori sve potrebne
datoteke ( mislim i na indekse ) pa bilo njih i 30-40.
neman
clipper.671neman,
> Valjda opsti princip, jer ako skikne da se nanese sto
> manje stete po otvorene datoteke.
Jel se to opet vracamo na raspravu o DBCOMMIT()-u ??
neman
clipper.672dejanr,
>> > Ježim se od programa koji na početku otvore sve moguće baze i
>> > pripadajuće indekse, trebale one - ne trebale, po principu
>> > "Vozi, Miško". To je u najmanju ruku neozbiljno i nedostojno
>> > profesionalnog pristupa programiranju
>>
>> A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
>> datotekama. Jel to neka specifičnost Clippera ili opšti princip?
Ako se radi "po knjizi", datoteku treba otvarati tek onda kada je njen
sadržaj potreban i zatvarati u onom trenutku kada njen sadržaj prestane
da bude potreban. Tako se, u teoriji (a i u praksi) obezbeđuje maksimalna
sigurnost podataka, pošto je zatvorena datoteka manje podložna oštećenjima
od otvorene.
Sa druge strane, ja ne držim previše do te teorije - prečesto otvaranje
datoteka i indeksa troši dosta vremena (uvek probaj, dal' je na disku,
dal' su indeksi na disku, može li da se otvori itd), a sigurnost je sasvim
dovoljna ako se po intervenciji uradi COMMIT (ili odgovarajuća naredba).
clipper.673dvesic,
Jedna mala zanimljivost :
Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
krenite da kompajlirate neki veliki projekat .. Dobija se
greska koja nema bas mnogo veze sa problemom ...
clipper.674snemcev,
>> Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
A kakav je to "pun direktorijum"? Zar Dos ne alocira klastere za
direktorijume po potrebi?
clipper.675dr.grba,
>> Nisam bas siguran da sam shvatio sta hoces :), ali u Clipper-u
>> postoji funkcija SetBlink() kojom odredjujes kako ce se tretirati
>> "*" u color atributima:
A? Gubim kosu!
I pokrivam se ušima. Da, trebalo mi je to što radi ta funkcija.
...Ali ja i dalje odbijam da naučim napamet sve funkcije i komande Clippera.
clipper.676dr.grba,
>> Pa i ja mislim i primenjujem to da program treba da otvori sve
>> potrebne datoteke ( mislim i na indekse ) pa bilo njih i 30-40.
Kako hoćeš. Ja ostajem pri svome.
clipper.677dr.grba,
>> Usmerite kreiranje OBJ fajlova u (skoro) pun direktorijum i
>> krenite da kompajlirate neki veliki projekat .. Dobija se
Htede li ti to reći "pun disk"?
clipper.678madamov,
> Jel se to opet vracamo na raspravu o DBCOMMIT()-u ??
Nemam pojma, u Clipperu samo gostujem ponekad, pratim ovu temu zbog drugara
koji se njime bave a nisu na Sezamu. Mislio sam da je dr.grba govorio i
generalno o kulturi otvaranja/zatvaranja fajlova.
clipper.679dr.grba,
>> koji se njime bave a nisu na Sezamu. Mislio sam da je dr.grba
>> govorio i generalno o kulturi otvaranja/zatvaranja fajlova.
E, da. Moglo bi se pričati i o mnogim drugim sličnim stvarima, ali čak i
mene moj sopstveni cinizam ponekad umori...
clipper.680dvesic,
>> A kakav je to "pun direktorijum"? Zar Dos ne alocira klastere
>> za direktorijume po potrebi?
Alocira. Greska u izrazavanju.
Nisam mislio "pun" u smislu da je npr. u root-u popunjeno 63 od 64
mesta za fajlove vec u smislu da je na tom disku ostalo jos
kilobajt - dva.
clipper.681bulaja,
│A zašto da se ne radi tako? Ne vidim razloga da se ekonomiše sa otvorenim
│datotekama. Jel to neka specifičnost Clippera ili opšti princip?
└───
Pa svaka otvorena datoteka ti guta odredjenu memoriju za file buffer.
Ako je prostor koji se koristi za smestanje buffer-a ogranicen (a mislim
da je kod Clipper-a ogranicen na 64 Kb za sve otvorene datoteke), onda
ce veci broj otvorenih datoteka znaciti manji prosecan buffer, sto opet
znaci dosta sporiji rad sa diskom. Cak i da ovaj prostor nije interno
ogranicen, cini mi se da je mnogo bolje da se neke datoteke otvaraju
samo po potrebi. Npr. ako imas neku datoteku koja se koristi (i to
retko) samo u jednom modulu aplikacije, daleko lakse za odrzavanje ce ti
biti da kompletne poslove sa njom (sto ukljucujue i kreiranje, otvaranje
i zatvaranje) radis samo u tom modulu.
clipper.682djelovic,
> Pa svaka otvorena datoteka ti guta odredjenu memoriju za file buffer.
> Ako je prostor koji se koristi za smestanje buffer-a ogranicen (a mislim
> da je kod Clipper-a ogranicen na 64 Kb za sve otvorene datoteke), onda
> ce veci broj otvorenih datoteka znaciti manji prosecan buffer, sto opet
> znaci dosta sporiji rad sa diskom.
To je daklem Clipper specifičnost :).
BTW, što se tiče sigurnosti podataka, pa i onako se pri svakom
otključavanju sloga/datoteke svi baferi prazne (da bi promene bile vidljive i
ostalim radnim stanicama), te si opet na istom kao da si zatvorio datoteku samo
što si posao uradio znatno brže. A ako gledamo logiku programa, ima li šta
logičnije i konzistentnije od toga da se sve tabele na jednom mestu otvore i na
jednom mestu zatvore, mesto da se to radi po celom programu pa kada naknadno
dodaš joj jedan indeks moraš svuda da menjaš program?
Izgleda da je jedini valjani razlog da se eksplicitno otvaraju i zatvaraju
datoteke po celom programu ušteda fajl hendlova što je bilo bitno na nekim
ranijim sistemima (Novell 2.X mi pada na pamet), ali je danas potpuno nebitno.
Doduše, troši se i neka memorija ali je ona zanemarljivo mala.
clipper.683nbatocanin,
> Sto se tice relacija, opet, kada sve uzmes u obzir
> korisnik NECE primetiti usporenje u MREZNOJ varijanti
> (provereno ;)
Odlično, to je dobra vest. Baš sam ozbiljno nameravao da pređem na
DBFCDX, ali sam odustao zbog povećane potrošnje memorije. Ipak mislim
da je pametno sačekati da nova stvar "odstoji" pa je onda baciti u
realan i surov život.
clipper.684nbatocanin,
> Za pravi test, nemoj hiljadu puta tražiti isti slog.
> Strpaj sto ključeva iz sto slučajnih slogova u niz, pa
> traži kroz petlju te slogove redom. Tako ćeš odsimulirati
> stvarnu situaciju bolje nego u prvom testu.
Naravno, tako i radim. O kom testu govoriš (pišeš)?
clipper.685ndragan,
/ TACKA izigrava ZAREZ samo u slucaju NUMERICKIH
/ promenjivih,
Tj, ti kačiš svoju funkciju kao GET drajver i to je to. Tako nešto ne
postoji u foksu, nego se lepo okači da svaki pritisak na tačku gurne zarez
u bafer tastature i to je onda to. To je onda OKL (on key label) rutina
koja mapira jedan taster, i ako se ne skine na vreme, ostaje aktivna do
kraja.
To je ta razlika što je kliper otvoren za sve moguće manipulacije koje ti
padnu na pamet, a foks već ima sve što mi je dosad palo na pamet.
Eventualno bi se moglo postići odgovarajućom kombinacijom When i Valid
funkcija postići da se pozove tako neki drajver i onda rezultat ukucavanja
direktno krkne u varijablu odnosno polje, i forsirano pređe na sledeći
GEt.
clipper.686ndragan,
/ mu palo na pamet da je najbrži mrežni rad onaj u kome se
/ datoteke ne bi stalno otvarale-zatvarale kako to radi
E pa moraju s vremena na vreme da se zatvaraju. Nemaju sve mušterije
UPSove na svim mašinama. Sad je samo štos u tome da se to minimizuje.
clipper.687ndragan,
/ drzeci otvorenih 36 baza sa pripadajucim indeksima ?
Sve otvoreno? Kako izdržavaš tu promaju?
clipper.688ndragan,
/ Nije ovde u pitanju samo lenjost, već mi se dešavalo da
/ zaboravim da dodam funkciju u skript fajl. A najgora stvar
Aman čoveče napiši neko programče koje će da ti pretrči po direktoriju
i ispiše nov .lnk fajl. Ili si ona druga vrsta lenjih programera koju
mrzi da napiše nešto nego kuca istu kobasicu sto puta?
clipper.689arazumenic,
-> Aman čoveče napiši neko programče koje će da ti pretrči po direktoriju
-> i ispiše nov .lnk fajl. Ili si ona druga vrsta lenjih programera koju
-> mrzi da napiše nešto nego kuca istu kobasicu sto puta?
Nije problem u tome da se napiše to programče, a naravno da mi je lakše da
ga napišem nego da stalno ispravljam sve .lnk fajlove. Ali (večito ali)
tu ima jedan problem.
Glavni meni ima 5 izbora. Svaki od njih ima još 3-9 podizbora, a neki od njih
još 2-7 podpodizobra. U .rmk i .lnk fajlovima su navedeni po meni najlogičnijim
redosledom:
// glavni1
podizbor1
podpodizbor1
podpodizbor2
...
podizbor2
podpodizbor1
podpodizbor2
...
// glavni2
E to programče ne može znati gde da ga doda.
Saša
clipper.690arazumenic,
-> ...Ali ja i dalje odbijam da naučim napamet sve funkcije i komande Clippera.
Pa ne moraš da ih učiš napamet. Kada ti nešto zatreba, startuj NG, otvori
uputstvo, pregledaj ranije poruke...
Saša
clipper.691dr.grba,
>> samo po potrebi. Npr. ako imas neku datoteku koja se koristi (i to
>> retko) samo u jednom modulu aplikacije, daleko lakse za odrzavanje
>> ce ti biti da kompletne poslove sa njom (sto ukljucujue i
>> kreiranje, otvaranje i zatvaranje) radis samo u tom modulu.
Amin!
clipper.692dr.grba,
>> logičnije i konzistentnije od toga da se sve tabele na jednom mestu
>> otvore i na jednom mestu zatvore, mesto da se to radi po celom
>> programu pa kada naknadno dodaš joj jedan indeks moraš svuda da
>> menjaš program?
A zar ne bih mogao da iskoristim funkciju Open(dbf_name)? Pa u njoj da
obavim sve vudu vradžbine?
clipper.693bulaja,
Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG -
Clipper 5.2 Technical Reference? :)
clipper.694bulaja,
│A ako gledamo logiku programa, ima li šta logičnije i konzistentnije od
│toga da se sve tabele na jednom mestu otvore i na jednom mestu zatvore,
│mesto da se to radi po celom programu pa kada naknadno dodaš joj jedan
│indeks moraš svuda da menjaš program?
└───
Logicno je ako se radi o bazama podataka koje se koriste cesto, tj.
koje su osnova programa. Ali ako imas baze podataka koje se koriste
retko i samo u odredjenim delovima programa, onda nema nikakve potrebe
da ti ta baza zvrji otvorena i trosi handle ili file buffer. Ako imas
standardizovane funkcije za otvaranje baza i indeksa (npr. preko
recnika podataka), za promene koje bi nastale dodavanjem indeksa ne
treba uopste da brines.
Zamisli slucaj da imas neke baze podataka koje se relativno retko
pozivaju - npr. u programu imas popunjavanje nekih obrzaca sa
adresama, siframa delatnosti, kursem marke itd. Korisnik moras
omoguciti da iz polja za unos pozove help gde iz tabele moze izabrati
neki postanski broj mesta, sifru delatnosti, ili kurs marke iz baze
kurseva. Mozes uraditi da ti te baze stoje stalno otvorene, a mozes ih
otvarati tek po potrebi, iz help procedure. Ako se odlucis da takve
baze otvaras tek kad ti zatrebaju (u help proc), onda mozes kompletan
help za izbor odredjenog podatka (PostBroj, SifDel, KursDEM) da
zatvoris u jedan modul i prekines da brines o bilo cemu. Onda istu
proceduru mozes da koristis u drugim programima, ne misleci da li su
baze otvorene i ne. Cak i da u nekom programu istu bazu drzis vec
otvorenu, ne moras mnogo da lupas glavu oko toga jer se ista baza kao
shared moze bez problema otvoriti u vise oblasti.
clipper.695dr.grba,
>> Pa ne moraš da ih učiš napamet. Kada ti nešto zatreba, startuj NG,
>> otvori uputstvo, pregledaj ranije poruke...
Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
Samo je fora videti sve. Nekako nije kunst sedeti i listanjem tražiti
šta sve ide kuda kako kome koliko zašto gde i kada.
Osim toga, imam Sezam (:
P.S. A šta misliš, šta sam uradio 20 sekundi nakon što sam pročitao onu
Bulajinu poruku? (:
clipper.696aquarius,
<> Ako otkucam 1234.5<ENTER>, ja ocekujem da sam otkucao 1234.50,
<> a ne 1234.05. Ovo je u najmanju ruku cudno, ako ne bismo stvar
<> nazvali i bagom.
<>
<> Da li je sad jesna moja opservacija?
A ako otkucas 1234.50<ENTER> dobices 1234.50 :) . Covek je
trazio skrolovanje numerickog GET-a, s desna na levo. Inace
mislim da si u pravu, ali bi to sto ti ocekujes bilo malo te-
sko za kontrolu. A da ti pravo kazem, meni je to jednom trebalo
zbog neke aplikacije, ljudi bili zadovoljni, i ja to tako ostavio,
nisam dalje razmisljao. Mozda sad hocu! Uostalom ima li predloga ???
Aquarius
clipper.697aquarius,
<> Ajmo onda u detalje. Kad ja u foksu stavim
<>
<> on key label "." keyboard ","
...
<> Mislio sam na premapiranje tog jednog tastera za vreme GETa,
<> sto u nacelu moze da se izvede i ovako. Kada se radi ta
<> predefinicija u kluperu, i odakle dokle vazi. Da li na nivou
<> jednog GETa, na nivou jednog READa, ili od stavljanja do
<> skidanja?
Ta predefinicija ne postoji u Clipper-u, mada bi mogla da se
simulira. Ali sto se tice NUM2CALC-a, nema ni potrebe.
Aquarius
clipper.698aquarius,
<>>> logicnije i konzistentnije od toga da se sve tabele na
<>>> jednom mestu otvore i na jednom mestu zatvore, mesto da se
<>>> to radi po celom programu pa kada naknadno dodas joj jedan
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<>>> indeks moras svuda da menjas program?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<>
<> A zar ne bih mogao da iskoristim funkciju Open(dbf_name)? Pa u
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<> njoj da obavim sve vudu vradzbine?
Probaj da iskoristis DBFCDX drajver. :) !
Aquarius
clipper.699aquarius,
<> Nogekako. Moj NG direktorijum ima najveci obim od svih: preko
<> 6 MB. (:
^^^^
Samo ?
<>
<> Samo je fora videti sve. Nekako nije kunst sedeti i listanjem
<> traziti sta sve ide kuda kako kome koliko zasto gde i kada.
Treba procitati makar jednom, da ti ostane u secanju da tako nesto
postoji, pa posle samo potrazis. Uostalom zar tvoja poruka 11.206 ne
zapocinje ovako :
<> Mnogi progameri, u koje spada vecina nas, su skloni da
<> preskacu drugarske sugestije kojih ima na tone po raznim
<> tutorijalima, NG i Hypertext fajlovima, istovremeno se ljuteci
<> zasto "bas ovo nedostaje u jeziku, kakva glupost, sad moram to
<> sam da resavam....."
:)))
Aquarius
clipper.700aquarius,
<> Tj, ti kacis svoju funkciju kao GET drajver i to je to. Tako
<> nesto ne postoji u foksu, nego se lepo okaci da svaki pritisak
<> na tacku gurne zarez
Tako nekako... Samo sto je to o:GetReader, a ne drajver.
Aquarius
clipper.701aquarius,
<> Jezim se od programa koji na pocetku otvore sve moguce baze i
<> pripadajuce indekse, trebale one - ne trebale, po principu
<> "Vozi, Misko". To je u najmanju ruku neozbiljno i nedostojno
<> profesionalnog pristupa programiranju.
Mozda me utisak vara, ali ima li smisla stalno otvarati i zatvarati
baze ako aplikacija koristi 5-10 baza i isto toliko indeksa (CDX) ?
Cini se da Misko brze vozi ako su mu sve baze otvorene, a jos ako ih
nema puno, onda moze i vezanih ociju u rikverc :) .
Aquarius
clipper.702aquarius,
<> Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG
<> - Clipper 5.2 Technical Reference? :)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Bilo bi zanimljivo videti, mada sam nacuo da to ide uz knjigu
sa istim nazivom koji si gore naveo.
Aquarius
clipper.703arazumenic,
-> Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
A tebi je nepotreban gubitak (za slučaj moje aplikacije) od 0,5 MB za
.obj datoteke u posebnim direktorijumima?
I šta si sve tu nagurao?
Saša
clipper.704dr.grba,
>> Da li je neko slucajno imao prilike da vidi :) fajl C52G03B.NG -
>> Clipper 5.2 Technical Reference? :)
Trebalo bi zašušuriti po američkim mrežama. Da pitamo snemceva:
Ima li toga u onim spiskovima?
clipper.705dr.grba,
>> A ako otkucas 1234.50<ENTER> dobices 1234.50 :) . Covek je
>> trazio skrolovanje numerickog GET-a, s desna na levo. Inace
>> ...
>> zbog neke aplikacije, ljudi bili zadovoljni, i ja to tako ostavio,
>> nisam dalje razmisljao. Mozda sad hocu! Uostalom ima li predloga ???
Ama, stvar je vrlo dobra! Moja primedba je sitnica u odnosu na dobitak.
Jedino mesto gde je meni zatrebao takav unos je, srećom, za ceo broj (:
A, sad, ne bi bila loša ni ta ispravka, e zbog vremena u dalekoj budućnosti
koja ćemo možda doživeti, a u kojima ćemo opet koristiti delove dinara.
--< * >--
Nije pravo mesto, ali moram da vam ispričam. Pre par dana došli prijatelji u
posetu. Njihov trogodišnji sin pronašao gumenu kasicu prasicu koju je Ana
dobila od komšinice da se igra. I dečko video otvor na leđima praseta:
- Dlagane, a šta je ovo?
- Otvor da ubacuješ novčiće, pa kad uštediš punu kasicu prasicu...
Tog trenutka su svi prisutni pogledali u mene, a je se ugrizao za jezik. Hoće
li naša deca znati šta je to kasica prasica? ):
clipper.706dr.grba,
>> Probaj da iskoristis DBFCDX drajver. :) !
žik pogodi čime se aktuelno igram (((:
clipper.707dr.grba,
>> ... Uostalom zar tvoja poruka 11.206
>> ne zapocinje ovako :
>>
>> <> Mnogi progameri, u koje spada vecina nas, su skloni da
>> <> preskacu drugarske sugestije kojih ima na tone po raznim
>> <> tutorijalima, NG i Hypertext fajlovima, istovremeno se ljuteci
(((:
Imaš piće za ovo! (:
clipper.708dr.grba,
>> -> Nogekako. Moj NG direktorijum ima najveći obim od svih: preko 6 MB. (:
>> ...
>> I šta si sve tu nagurao?
Kurtu i Murtu (:
clipper.709dragisha,
-> / mu palo na pamet da je najbrži mrežni rad onaj u kome se
-> / datoteke ne bi stalno otvarale-zatvarale kako to radi
->
-> E pa moraju s vremena na vreme da se zatvaraju. Nemaju sve mušterije
-> UPSove na svim mašinama. Sad je samo štos u tome da se to minimizuje.
Ali sve mušterije imaju Flush, zar ne? Od DOS 3.3 pa naviše, standardna
funkcija u okviru 21H.
--
["She's sleeping with Prince Valium tonight..."]
clipper.710dragisha,
-> > Jel to neka specifičnost Clippera ili opšti princip?
->
-> Valjda opšti princip, jer ako skikne da se nanese što manje štete po
-> otvorene datoteke.
Nema štete, bar ne više nego sa Close. Commit (iliti Flush) će završiti
isti posao za mnogo kraće vrijeme.
E sad, fora je i tome što svaki otvoreni fajl i index guta mem. Kad neko
radi u kliperu, teško će se odreći nekih 100 kb za te stvarčice.
--
["Life," said Marvin, "Don't talk to ME about life!"]
clipper.711dragisha,
-> Ježim se od programa koji na početku otvore sve moguće baze i
-> pripadajuće indekse, trebale one - ne trebale, po principu "Vozi,
-> Miško". To je u najmanju ruku neozbiljno i nedostojno profesionalnog
-> pristupa programiranju.
Ježim se od ljudi koji gledaju crno-bijelo:)
U svojim programima većinu datoteka otvorim na početku jer mi je veća
glupost da pri korištenju otvaram, koristim, zatvaram. Manjina su one
datoteke koje su recimo vlasništvo nekog drugog programa i koje se koriste
na malo mjesta u programu. Njih otvaram po potrebi i zatvorim vrlo brzo.
--
[Where can I get one of those computer bats!!]
clipper.712snemcev,
>> Ima li toga u onim spiskovima?
Sorry, no bonus. Ako sam dobro shvatio dokumentaciju, dobijaš ga kad
kupiš štampan Reference Manual. Ko zna, možda je pod copyright-om. Al'
opet, kad je to bio problem za nas... ;)
clipper.713dr.grba,
>> Ježim se od ljudi koji gledaju crno-bijelo:)
Nemam komentara, iako trošim poruku da bih to rekao ):
clipper.714dvesic,
>> Sve otvoreno? Kako izdrzavas tu promaju?
Ma ne drzim. Samo pitam kako bi to izgledalo ?
(co'ek mi to predlozio)
clipper.715dvesic,
VAZNO UPOZORENJE !!!!
Za sve one koji su zainteresovani za prelazak na CDX indekse...
SACEKAJTE !
Primeceno je (ja primetio) da u odredjenom hardversko/softverskom
okruzenju postoji velika verovatnoca korupcije CDX indeksa u mreznom
okruzenju.
U pitanju je Novell Lite 1.0, i CDX indeksi od Clipper-a 5.2c (stara
verzija je radila bolje :((( ).
Bug se ispoljava na sledeci nacin: prilikom istovremenog unosenja
podataka sa dve ili vise stanica, svaka stanica vidi SAMO svoje
podatke ali ne i podatke koji su uneseni na drugim stanicama.
(nema azuriranja indeksa u memorijskim baferima kod Commit-a,
bilo eksplicitnog bilo implicitnog (UnLock)).
Ovo su prve preliminarne informacije. Intezivno istrazivanje
(debagovanje) je u toku. O novim informacijama cim do njih dodjem.
Molio bih one koji imaju mrezna iskustva sa CDX indeksima, da daju
svoje misljenje i/ili savete i predloge.
U jednokorisnickoj varijanti nema nikakvih problema.
Izvinjavam se ako je moje insistiranje na prelazak na CDX nekome
donelo iste ili slicne probleme.
Pozdrav,
Dejan.
clipper.716dr.grba,
Da vam prenesem početničko iskustvo sa DBFCDX drajverom...
U Vern Six demo paketu postoji baza MURPHY.DBF, sa pridruženim MURPHY.DBT,
koji je velik 297037 bajtova. Ova baza mi dobro dođe za razne testove, a
pogotovo u poslednje vreme...
Obzirom na (uobičajeno loš) stepen iskorišćenja memo polja, prelazom na
CDX drajver i pretumbavanjem baze, dobio sam MURPHY.FPT veličine 83924
bajta... No comment.
Imam neki programčić koji random izbacuje Marfijeve zakone na ekran,
do <ESC> tastera. (Ovo možda jednom dam nekom poslušnom korisniku (: )
'Ajde, pomislih, da časom sredim program da radi sa ovim drajverom.
Koji posao, pomislih, samo treba dodati oznaku drajvera za otvaranje:
use murphy new via "DBFCDX"
i ulinkovati DBFCDX.LIB, jedan red u LNK fajl. Obično se doda, pomislih,
i onaj legendarni
REQUEST DBFCDX
negde u vr' programa, da linker sazna sa kim da radi. Moji nulti testovi su
pokazali da je to pomalo i izlišno. E, ali hoćeš.....
Prođe pravljenje EXE fajla bez brige, kad tamo:
Error DBCMD/1015 Argument error: DBUSEAREA
Called from LOCKERRHAN(0)
Called from (b)INITHANDL$(0)
Called from DBUSEAREA(0)
Called from MAIN(16)
16. red je baš onaj use. Odem, vidim da nema greške, zavirim u NG spisak
grešaka, kad tamo - nema opisa DBCMD/1015 ž%*č#č#%ž$č!!!
Hajde, da vidimo šta bi moglo biti.....
.... posle 33. kompilacije stavim REQUEST DBFCDX i sve prođe glat.
I tako se po jubilarni, 15.867.093. put uverim da ponekad vredi slušati šta
kažu čika projektanti Clippera....
I da ne vredi da verujem sopstvenim nultim testovima ):
clipper.717bulaja,
Ako koristite CA-Clipper Tools i Blinker, mrzi vas da čitate uputstvo :),
a programi vam se cesto zaglavljuju kad koristite extended drivers :), onda
znajte da je to zato što CTUS.OBJ treba staviti u root, a ne u overlej!
clipper.718neman,
> .... posle 33. kompilacije stavim REQUEST DBFCDX i sve
> prode glat.
Ne moras da stavljas to ako ubacis male izmene u RDDSYS.PRG pa sve to
ponovo smuljas u pll.
clipper.719dvesic,
Cao !
Zna li neko da li je unutar RMK fajla (RMAKE) moguce (i kako,
ako jeste) vrednosti enviroment promenljivih ?
Nesto kao
makepath[.obj] = %OBJ%
i slicno.
clipper.720aquarius,
<> Imas pice za ovo! (:
Whiskey ? :)
Aquarius
clipper.721aquarius,
<> Ma ne drzim. Samo pitam kako bi to izgledalo ?
<> (co'ek mi to predlozio)
Co'ek ti lepo predlozio, al' bih preporucio samo u slucaju da
aplikacija koristi malo baza i indeksa.
Aquarius
clipper.722aquarius,
<> Zna li neko da li je unutar RMK fajla (RMAKE) moguce (i kako,
<> ako jeste) vrednosti enviroment promenljivih ?
Za Blinker je lako, ali RTLink...
Medjutim ako je to bas potrebno, a radis sa RTLink-om, onda
probaj negde na pocetku aplikacije da stavis nesto kao :
!SET CLIPPER=F:50;...itd
Aquarius
clipper.723dvesic,
>> Za Blinker je lako, ali RTLink...
>> Medjutim ako je to bas potrebno, a radis sa RTLink-om, onda
>> probaj negde na pocetku aplikacije da stavis nesto kao :
NE za RTLink vec za RMAKE. Vrednost env.promenljive mi
treba unutar RMK, ne untar LNK fajla !
clipper.724gari,
>>> Ima li toga u onim spiskovima?
>
> Sorry, no bonus. Ako sam dobro shvatio dokumentaciju, dobijas
> ga kad kupis stampan Reference Manual. Ko zna, mozda je pod
> copyright-om. Al' opet, kad je to bio problem za nas... ;)
Ajde da sumiramo:
Da li postoji neko ko to ima, ili neko ko poznaje ove nase
ovlascene distributere clipper-a...
clipper.725dr.grba,
>> Ne moras da stavljas to ako ubacis male izmene u RDDSYS.PRG pa sve
>> to ponovo smuljas u pll.
U koji PLL? Kompilujem i linkujem bez PLL.
clipper.726bcetina,
Koleginica pita:
Da li je moguće da clipper 87 koristi dbf-ove sa numeričkim
poljima većim od 19 cifara? I kako ako je moguće?
clipper.727neman,
Iznenadjenjima (?) od strane Clippera nikad kraja :)
Testirajuci CDX vs NTX uocio sam ( tek sada ) jos jedan slucaj
"it's not a bug, but it's a feature".
U programu koji generise neke podatke na osnovu prethodnih, posle zavrsenog
generisanja podataka u bazama i sa otvorenim indeksima u bazama pojavila se
razlika u duzini .NTX datoteka koje pripadaju istoj bazi a kljuc je iste
duzine. Kada sam izvrsio indeksiranje kompletne baze, duzine .NTX datoteka
su se izjednacile i skratile od slucaja do slucaja 5 - 20 % ( radio sam vise
puta generisanja ). Izgleda da Clipper pri azuriranju indeksa i njegovom
uvezivanju sa odgovarajucim prethodnikom/sledbenikom pravi rupe u NTX
datoteci. VNTX program za proveru ispravnosti datoteka je naravno u svakom
slucaju prijavio nepostojanje gresaka.
Naravoucenije : povremeno pustajte indeksiranje celokupnih baza.
A glede testiranja CDX vs NTX, samo testiranje vrsim na konkretnoj aplikaciji
sa konkretnim podacima. Za sada su sva ispitivanja vrsena na jednom racunaru
a ponovicu ih i na mrezi. Rezultati su sledeci:
- CDX datoteka je kraca od odgovarajucih NTX oko 4.5 - 5 puta
- Brzina indeksiranja celokupne datoteke je minimalno veca
kod CDX-a u
- izvrsenje kljucne obrade podataka u bazi je priblizno isto
pri koriscenju i jednog i drugog drajvera. Inace u obradi svakog
sloga koristi se vise puta pristup drugim podacima u okviru jedne
baze.
Posto pocetni rezultati nisu losi, prepravicu celu aplikaciju da radi sa CDX
indeksima ( a to i nije neki problem, :)) pa cu da testiram onda izvrsavnaje
svih operacija u programu, na jednom racunaru i na mrezi.
Glede mreze, nadam se dvesicu da ima, ima rezultata traganja za greskom.
Inace moja iskustva sa NetWare Lite mrezom i nisu bas povoljna, tako da
cu da testiranje vrsim na Novell 3.11 mrezi.
neman
clipper.728dvesic,
>> Da li je moguce da clipper 87 koristi dbf-ove sa numerickim
>> poljima vecim od 19 cifara? I kako ako je moguce?
Nije moguce. Interne rutine koje vrse konverziju podatka iz
baze u format za MicroSoft Floating Point podrzavaju maksimalno
19 cifara.
Ako je problem sa novcem, moze ga resiti tako sto otvori jos
jedno polje u kome ce cuvati broj nula sa leve, odnosno desne
strane (u zavisnosti da li je broj mnogo veliki ili mali).
To mi je jednom pomoglo da resim slican problem.
Sada se Replace takvog polja svodi na poziv funkcije koja ce
prebrojati nule i upisati ih u bazu.
Pozdrav,
Dejan.
clipper.729dr.grba,
>> <> Imas pice za ovo! (:
>>
>> Whiskey ? :)
Odsad striktno pazim šta govorim (:
P.S. A jel' može jedna dobra, kisela seljačka brlja? (:
--->Uz čaj PEEK POKE volumen vašeg programa se podvrgava vašem duhu!
clipper.730snemcev,
>> Da li je moguće da clipper 87 koristi dbf-ove sa numeričkim
>> poljima većim od 19 cifara? I kako ako je moguće?
Sorry. To je maksimum. Btw, ako smem da pitam, šta radi sa tolikim
brojevima?!
clipper.732dvesic,
>> Glede mreze, nadam se dvesicu da ima, ima rezultata traganja
>> za greskom. Inace moja iskustva sa NetWare Lite mrezom i nisu
>> bas povoljna, tako da cu da testiranje vrsim na Novell 3.11
>> mrezi.
Ima, i losi su :(((
Pokusavao sam na razne nacine (NW Lite 1.0 ili DV+Share ili
Win + Share..) ali su rezultati uvek isti : Stanica koja
POSLEDNJA upise indeks u indeksnu datoeku ce prebrisati
izmene prethodno upisanih ... :(((
Probao sam i da ulinkujem CDXLOCK ali vidljivih rezultata nije
bilo.
Mozda treba na neki poseban nacin otvarati/zakljucavati baze
sa CDX ? (koji nacin ? sto bi to bilo vazno ?? sto lupas u
prazno ??? :) )
Jos jednom, ako neko bude imao slicna iskustva (probleme)
molim da ih ostavi u konferenciji (bitno je!)
Pozdrav,
Dejan.
clipper.733dr.grba,
>> - CDX datoteka je kraca od odgovarajucih NTX oko 4.5 - 5 puta
Koliko indeksa držiš u toj CDX datoteci?
>> Glede mreze, nadam se dvesicu da ima, ima rezultata traganja za
>> greskom. Inace moja iskustva sa NetWare Lite mrezom i nisu bas
>> povoljna, tako da cu da testiranje vrsim na Novell 3.11 mrezi.
E, ovi rezultati na Netware 3.11 me vrlo interesuju.
E, da... Pretpostavljam da se ovo što si napisao odnosi na CDX drajver
isporučen sa Clipperom?
clipper.734djelovic,
> Izgleda da Clipper pri azuriranju indeksa i njegovom uvezivanju
> sa odgovarajucim prethodnikom/sledbenikom pravi rupe u NTX datoteci.
To je za očekivati. U svim X-Base jezicima se indeksi svode na neku
varjantu B+-stabla, za koje je sasvim normalno da ostavljaju rupe.
Što se tiče CDX indeksa, čini mi se da je njihova najveća prednost ne
brzina već to što drže sve indekse u jednom fajlu. To doprinosi većoj
sigurnosti (konzistentnosti) podataka i bržem radu u SHARED modu.
clipper.735aquarius,
<> NE za RTLink vec za RMAKE. Vrednost env.promenljive mi
<> treba unutar RMK, ne untar LNK fajla !
Mislio sam da ti treba da program prilikom starta postavi
environment. A sto se tice FILE.RMK, DOS komande unutar njega
se izvrsavaju na sledeci nacin:
environment:
PATH C:\DOS;C:\UTIL;C:\CLIPPER\PROJECT;%PATH%
FILES=30
BUFFERS=15
Jedino moras da pazis na FILES i BUFFERS, jer mozes samo da
povecas vrednosti, nikako da ih smanjis, ali to je vec DOS. Ako
ima daljih pitanja, tu sam.
Btw, ono "environment:" moze da bude i "okruzenje:" ili "dvesic:" ,
a komande koje slede moraju da budu barem za jednu kolonu vise u desno.
Aquarius
clipper.736aquarius,
<> Koleginica pita:
<> Da li je moguce da clipper 87 koristi dbf-ove sa numerickim
<> poljima vecim od 19 cifara? I kako ako je moguce?
Jel vec tolka inflacija ? :)
Aquarius
clipper.737aquarius,
<> Odsad striktno pazim sta govorim (:
I treba :)
<> P.S. A jel' moze jedna dobra, kisela seljacka brlja? (:
Seljacka da, kisela NE. :)
P.S. Htedoh reci "tako treba" :)))))))
Aquarius
clipper.738dvesic,
>> Ako ima daljih pitanja, tu sam.
Prvo, hvala za iscrpan odgovor.
Drugo, ovu varijantu sam znao ( :)) izvini ).
Problem je u sledecem :
U zavisnosti od okruzenja (ima QEMM / nema QEMM, ima RAMDISK
nema RAMDISK), pre nego sto startujem RMAKE st.rtl
postavljam env. promenljive CLIPPERCMD, OBJ i TEMP.
Hteo bih i da makepath[.obj] postavim na vrednost env.prom. OBJ
tj. da se staza kojom RMAKE trazi OBJ fajlove poklapa sa
stazom u kojoj ih clipper generise, odnosno RtLink/Blinker
uvlaci prilikom linkovanja. Kako to da uradim ?
(nesto kao ekvivalent : makepath[.obj]= %OBJ% , tj. nije
problem da POSTAVIM vec da PROCITAM env.promenljivu)
Pozdrav,
Dejan.
clipper.739snemcev,
Još malo, pa eto nove godine, a ja još nisam poslao iskupljenje za onaj
crc32.zip. Evo ga, stiže uz ovu poruku.
Program služi za ispitivanje korektnosti žiro računa.
ziro.zipclipper.740snemcev,
Evo modul za štampanje virmana. Ako ga neko korisno upotrebi, nek me
pomene negde u dokumentaciji. Btw, isto važi i za ziro.zip iz prethodne
poruke -- public domain, all rights reserved.
virman.zipclipper.741dejanr,
==========
xbase/clipper.code #238, from irae, 1332 chars, Fri Dec 17 12:56:21 1993
----------
TITLE: Blinker 3.0
About a week ago Blinker 3.0 started shipping. For those who've not
heard this version incorporates a DOS exrender allowing your Clipper 5.x
applications to be linked in one of three varieties; real mode, just
like Blinker 2.x; Extended mode, basically just like ExoSpace and Dual
mode which allows your application to decide at runtime if there are
enough resources to run in Extended mode or if it should run in good old
real mode.
For those people building big executables the ability to create Extended
mode applications can be the difference between an applications failure
and success. For small applications with large amounts of disk access
you might find Extended mode slower because it has to switch to real
mode whenever the disk is accessed. But for large using things like
Classy and ProVision extended mode may allow your application to run
dramatically faster. I am beta testing a large ProVision application,
1.4Mb exe and when Don switched to ExoSpace the speedup was dramatic.
And his reports on Blinker 3 indicate that it works about the same and
it's symbol packer reduces his .exe by about 200K. But he's still
waiting for a add-on library to finish Blinker 3 compatibility.
CA has announced that Clipper Tools III should be Extended mode
compatible winthin a month or two.
Ira
Ira
clipper.742neman,
>>> - CDX datoteka je kraca od odgovarajucih NTX oko 4.5 - 5
> puta
>
> Koliko indeksa drzis u toj CDX datoteci?
2 kljuca tj. dva taga.
> E, da... Pretpostavljam da se ovo sto si napisao odnosi na
> CDX drajver isporucen sa Clipperom?
Da, a ako neko ima nesto novo, neka se (pri)javi.
neman
clipper.743dr.grba,
>> Program služi za ispitivanje korektnosti žiro računa.
Zloba je zaboravio, pa da ga ja reklamiram, jer sam bio prvi recenzent
programa (:
Program ispituje pravilnost i kontrolnog broja žiro računa i individualne
partije, te je stoga prikladan za ugradnju na sva mesta gde baratate žiro
računima.
clipper.744dr.grba,
žačkao sam po nekom NG fajlu, kad vidim na jednom mestu:
...
ANNOUNCE RDDSYS // This line must not change
INIT PROCEDURE RddInit
REQUEST DBFNTX // Force link for DBFNTX RDD
...
INIT procedure, lepa stvar, ali zar može da bude više od jedne?
Zanimljivo. Za minut smlatim sledeće, baš da vidim i to čudo:
proc main
alert("Hello, world!")
quit
init proc iproc1()
alert(" Init1 ")
return
init proc iproc2()
alert(" Init2 ")
return
init proc iproc3()
alert(" Init3 ")
return
exit proc eproc1()
alert(" Exit1 ")
return
exit proc eproc2()
alert(" Exit2 ")
return
exit proc eproc3()
alert(" Exit3 ")
return
I primetim zanimljivu stvar. Ne samo da je prošlo, nego radi na
zanimljiv, i uostalom logičan način: najpre se izvršio iproc3(),
pa iproc2(), pa iproc1(), dakle prvi definisani je uvek najbliži
glavnoj proceduri, a svaki sledeće definisani - linkovani ide dalje
od procedure. Kod INIT procedura, logično, ono "dalji" od glavne
procedure znači da će se izvršiti ranije. Kod EXIT procedura nema
iznenađenja, ista logika - prvi viđeni od strane linkera je opet
najbliži glavnoj proceduri; ovaj put, dakle, izvršava se prvi.
Možda sam otkrio toplu vodu, ali nije zgoreg setiti se ovog ponekad,
može da zatreba (:
clipper.745dsisic,
>> E, da... Pretpostavljam da se ovo sto si napisao odnosi na
>> CDX drajver isporucen sa Clipperom?
>
> Da, a ako neko ima nesto novo, neka se (pri)javi.
Ima, ima ( mozda nije novo jer je vec pomenuto ovde ).
Radi se o SIXCDX RDD-u za 5.01 i 5.2 od firme SuccessWare.
Usput tu je i DBU like utility za rad sa doticnim driverom
mada se moze koristiti kao potpuna zamena za sve sto lici na DBU.
Inace DBU je malo dete za DBX ( pitaj dVesica za misljene ).
Zakaciti cu ga ovde kad me prodje mamurluk, a predlozio bih ga
i u CLIPPER dir!
clipper.746aquarius,
<> (nesto kao ekvivalent : makepath[.obj]= %OBJ% , tj. nije
<> problem da POSTAVIM vec da PROCITAM env.promenljivu)
Ako sam konacno dobro shvatio, treba ti ovo:
** Ovo na pocetak ST.TRL ****************************************
// .obj
!ifeq "$(OBJ)" ""
!stdout "NAPOMENA: Upisivanje .OBJ fajlova u aktivni DIR"
!else
makepath[.obj] := "$(OBJ)"
!stdout "NAPOMENA: PATH za .OBJ fajlove je: '$(OBJ)'"
!end
*****************************************************************
Prethodno, ako sam dobro shvatio promenis env., tj. :
SET CLIPPERCMD=
SET OBJ=
SET TMP=
ili nesto slicno.
E sad, ako je < SET OBJ=C:\NekiDir >, onda ces prilikom startovanja
RMAKE ST.RTL dobiti sledecu poruku:
"NAPOMENA: PATH za .OBJ fajlove je: C:\NekiDir"
a ako < SET OBJ > nije definisan, onda:
"NAPOMENA: Upisivanje .OBJ fajlova u aktivni DIR" .
Normalno, osim poruke, dobices i ono sto zelis, da staza za .OBJ
fajlove bude ocitana preko SET OBJ= , tj. c:\NekiDir . :)
Aquarius
clipper.747aquarius,
<> Inace DBU je malo dete za DBX ( pitaj dVesica za misljene ).
Pitam dSisica & dVesica za misljenje i cekam da prodje mamurluk. :)
Aquarius
clipper.748solajac,
Evo još jedne bubice u CA Clipper 5.2c:
Slog koji se referencira preko SET RELATION se ne može zaključati!
Evo primera (koji ne radi) !!!
------------------------------
USE Baza1 SHARED NEW
SET INDEX TO Baza1Ind
USE Baza2 SHARED NEW
SET RELATION TO Baza2->Sifra INTO Baza1
...
...
SELECT Baza1
* GO RECNO()
IF RLOCK()
REPLACE Baza1->... WITH ... // ovde program pada i javlja:
// LOCK REQUIRED
// tj. RLOCK je vratio .T., ali je
// očigledno zaključao pogrešni slog.
SET RELATION TO
------------------------------
Ubacite već čuveni "GO RECNO()" ispred "RLOCK()" i rešićete problem.
------------------------------
čiveo GO RECNO(), živeo, živeo ...
Pozdrav, Solajac.
PS. Nek ide sve, GO RECNO.
clipper.750dsisic,
Evo, ovde je priheftan dbx.arj. Ima ulinkovane sledece drajvere:
- DBFNTX
- SIXCDX ( Sa stanovista datoteka, identican sa DBFCDX. )
- DBFMDX
- DBFNDX
dbx.arjclipper.751bulaja,
│Zakaciti cu ga ovde kad me prodje mamurluk, a predlozio bih ga
│i u CLIPPER dir!
└────
dbMAX je zaista odlicna stvar, samo cini mi se da ova verzija koja kruzi
kod nas (a dobija se uz dbSIX) nije bas kompletna. Ali na Hekom-u je
vidjena neka kompletna verzija, potrudicu da to stigne ovde.
clipper.752neman,
> Evo, ovde je priheftan dbx.arj. Ima ulinkovane sledece
> drajvere:
>
> - DBFNTX
> - SIXCDX ( Sa stanovista datoteka, identican sa DBFCDX. )
> - DBFMDX
> - DBFNDX
A gde je SIXCDX ???
nema(n)
clipper.755dsisic,
> A gde je SIXCDX ???
U stvari, kad malo bolje razmislim ja sam trebao da ostavim
arhivu sa izvornim datotekama u svom originalnom obliku
pa se igraj do mile volje. To cu i da uradim :)
Sto se tice SIXCDX drajvera on je ulinkovan u onaj exe koji sam
ostavio juce. Ako slucajno nije tamo, majke mi necu vise da
ostavljam datoteke u pijanom stanju :)
Elem, ja sam dobio od dobre vile iz inozemstva 1.5 verziju
SIXCDX RDD-a za 5.01 i 5.2. ( Bivsi DBFSIX ).
Ovih dana sam dobio i potvrdu da to mogu da razdelim
ljudima u proizvoljnoj epsilon okolini u zavisnosti
od interesovanja.
Sam po sebi SIXCDX drajver je vrlo slican DBFCDX-u, sa jednom
( bitnom ) razlikom:
Uz ovaj drajver ko dupe na noshu pasuje i MACHSIX biblioteka
rutina za optimizaciju query-like komandi clippera.
Query-like, citaj sve komande za obradu zapisa gde klauzula
FOR ima smisla ( COUNT, SUM, AVERAGE ... ).
MachSix uzme uslov koji si mu tutnuo u ruke i pregleda tabelu
otvorenih indeksa, zatim izvrsi optimizaciju tako sto prvo
pretrazuje tabelu po uslovima koji mogu da se podvedu pod
otvorene indeksne kljuceve tako da u startu suzi
opseg pretrazivanja. Sve to radi bez manuelnog menjanja ordera,
seek-inga odredjenog zapisa i slicnih stvari.
To znaci da za neku komandu tipa
COPY TO ( tmpF ) FOR Ime == "ZIKA" .and.;
GodinaRodjenja <= 1950 .and.;
GradRodjenja == "BEOGRAD"
pod uslovom da su polja Ime, GodinaRodjenja i GradRodjenja
indeksirana, MACHSIX pronalazi ( i kopira ) zapise koji
zadovoljavaju uslov gotovo trenutno, bez obzira koji je
order ( tag ) aktivan.
Za kraj bih pomenuo moju bivsu tabu komandu, a to je
SET FILTER TO ...
Skoro nikad se nisam usudjivao da je koristim, pogotovo ne za
filtriranje tabele sa vise od stotinak zapisa.
Covece, sada mogu da postavim uslov od 5,6 i vise uslova povezanih
.AND.-ovima i/ili .OR.-ovima i da bez imalo stida pustim
korisnika da vrsi browsing tabele sve dok je izraz po kome
filtriram 'optimizabilan' po MachSixu.
provera se vrsi prosto:
if m6_IsOptimize( <exp> ) == 2
.
.
vozi Misko
end
To bi bilo sve za sada. Ja bih preporucio SIXCDX svakome ko
se iole ozbiljno bavi clipperom. Malo mi je bez veze da
ga kacim ovde ( mada je moguce ), jer je softver
posteno kupljen, licenciran bla bla... iz razloga sto
nisam upoznat sa tretiranjem attachinga licenciranog softvera.
Ako je to uopste dozvoljeno i ako se ne kosi sa politikom Sezama
ja bih ga okacio da vidi bela dana, a ako nije, lako cemo
nismo na kraj sveta!
Cao!
dbx130.arjclipper.756djelovic,
> Ako je to uopste dozvoljeno i ako se ne kosi sa politikom Sezama
> ja bih ga okacio da vidi bela dana, a ako nije, lako cemo
> nismo na kraj sveta!
Nije dozvoljeno.
clipper.757bulaja,
==========
newsbytes/ibm #1907, from newsbytes, 2594 chars, Mon Dec 20 17:00:06 1993
----------
Computer Associates Shows Visual Objects To Oz Developers 12/20/93
SYDNEY, AUSTRALIA, 1993 DEC 20 (NB) -- Computer Associates has been
holding developer previews of its upcoming product CA-Visual Objects
for Clipper (VO) in Australia. The seminars were held for those
Australian developers who were unable to attend CA's TechniCon 93 or
last month's Comdex Fall computer show in Las Vegas.
Visual Objects is the "wonder product" that has been in production
since before Computer Associates bought Nantucket, the developer of
Clipper. Clipper is an applications development environment and
compiler for xBase products and VO is the Windows-based 'next
generation' product. It supports both SQL/ODBC and traditional xBase
(.DBF) databases.
"CA-Visual Objects for Clipper is a hot item of interest to anybody
currently programming in CA-Clipper, FoxPro, C, C++, Visual Basic or
any programming tool required to develop robust, mission-critical
Windows applications." explained Gary Mitchell, regional manager for
Micro Products Division of CA in Australia.
According to Mitchell, CA-Visual Objects for Clipper is a natural
progression for xBase users wanting to develop Windows applications
that benefit from object-oriented programming.
"But it is also intended for the developers of the next generation
of applications like mission critical, financial, and transaction
processing applications that form the backbone of any enterprise,"
he said.
Mitchell added that the speed of VO applications is 'in a different
ballpark' to its competitors. "Because it compiles to machine code
it runs close to the performance of C, 60 times faster than CA-
Clipper and several hundred times faster than dBase."
Sydney-based xBase expert Matt Whelan presented at the events. He
developed CA's dBase compiler for Clipper and is considered one of
the world's top Clipper and xBase authorities.
According to Whelan, "Visual Objects is a watershed product - this
is the tool that the corporate world has been waiting for. With
support for both procedural and true object orientation,
repositories, native code compiler technology, GUI screen designer
tools, as well as support for xBase, SQL, ODBC and Client Server
backends, CA-VO will become a turning point in the software
development industry."
Unfortunately for CA, Newsbytes notes that the package has been a
long time coming. But, so has its main competitor, the dBase for
Windows compiler from Borland. Industry observers believe that both
products may be finally released by the middle of 1994.
(Paul Zucker/19931220)
clipper.758bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
52capi arj 111576 Clipper 5.2c Technical Reference (.ng, .api, .ch)
clipper.759dejanr,
>> 52capi arj 111576 Clipper 5.2c Technical Reference (.ng, .api, .ch)
Konačno! :))
Ovo tražim već duže vreme.
clipper.760fric,
Ima li koga na Sezamu da je, pišuću u Clipperu mrežne aplikacije,
koristio TTS (transaction tracking) Novella 3.11 ?
Trenutno eksperimentišem sa tim pa me zanimaju tuđa iskustva na
tom polju (da ne otkrivam vruću vodu bez potrebe).
clipper.761bulaja,
│Ima li koga na Sezamu da je, pišuću u Clipperu mrežne aplikacije,
│koristio TTS (transaction tracking) Novella 3.11 ?
└───
Ja nisam, ali ce ti zato mozda koristiti da pogledas (ako vec nisi:)
poglavlja vezana za TTS u NG-ovima za Netto i CA-Tools.
clipper.762bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
rcmplb20 zip 24944 RCmpLib v2.0: Clipper biblioteka za kompresiju datoteka
History :
v2.0 (20/09/93) - ExoSpace compatible library added (RCmpExo.lib)
- <nCmpFact> parameter added to R_Compress()
- New function: R_LastErr()
- Updated error codes (in RCmpLib.CH)
- CAUTION ! Files that are compressed using RCmpLib v1.xx
can't be decompressed using RCmpLib v2.0 !
v1.2 (15/09/93) - Initialization error corrected
- Bug in the Clipper Summer '87 version corrected
(First byte of a decompressed file was always 00h ...)
clipper.763dejanr,
Ovih dana je sa Hekoma download-ovan veći broj programa i biblioteka
za Clipper. Evo spiska nekih od najzanimljivijih:
** 'cldebuge.arj' (7573 bytes)
** 'tbtext.arj' (6214 bytes)
** 'clpvar.arj' (17154 bytes)
** 'cl5_20a.zip' (45137 bytes)
** 'frankg.arj' (86579 bytes)
** 'tdco69.arj' (257559 bytes)
** 'sybcl501.exe' (249211 bytes)
** 'encryp.arj' (10724 bytes)
** 'debin.arj' (6331 bytes)
** 'dbfmem.arj' (2087 bytes)
** 'nb_rnd.arj' (75957 bytes)
** 'dbxexe.arj' (271776 bytes)
Verujem da će se sve to ovih dana naći u direktorijumu, a ovde dajem
spisak da ne bi neko nepotrebno to ponovo skidao iz sveta. Ako vam već
telefon dejuje jeftino :) trošite ga za download nečeg drugog :)
clipper.764dpredovic,
"Mali" problem sa blinkerom 2.01 i clipperom 5.01:
Program ide otprilike ovako:
1. inicijalizacija biblioteke za rad sa modemom
2. swpruncmd(pkzip...)
3. čekam poziv
4. mali handshake
5. swpruncmd(gsz...)
6. hangup
7. čekam poziv
8. mali handshake
9. swpruncmd(gsz...)
10. hangup
11. deinicijalizacija biblioteke za rad sa modemom
Problem je u tome što između tačke 2. i 3., i još češće negde između
tačke 5. i 8. funkcija koja prima znakove prosto prestane da radi.
Verujem da swpruncmd funkcija nešto brlja sa portovima, a ono
rešenje sa swpsavcom ne radi, pošto se ovde radi o blinkeru 2.01.
Ideje?
PS. Jel ima neko neku clipper biblioteku za komunikacije? Ovo moje
je kombinacija PCL c biblioteke i mojih extend funkcija. Voleo bih
da vidim kako su to rešili u "belom svetu".
clipper.765dzoric,
> PS. Jel ima neko neku clipper biblioteku za komunikacije? Ovo
> moje je kombinacija PCL c biblioteke i mojih extend funkcija.
> Voleo bih da vidim kako su to rešili u "belom svetu".
U "belom svetu", tj u YUG smo rešavali probleme komunikacije iz
Clipper-a, M.Velimirović (mivel) i ja. U pripremi je komercijalna
biblioteka za te stvari, još malo da sredimo dokumentaciju.
LIB je pisan u Turbo Asembler-u i koristi ZMODEM protokol.
Ako te još nešto interesuje MAIL SEND...
clipper.766bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
isnet arj 2025 fn_isNet() funkcija, patch za Netto.lib
fn_isNet() provides a simple way to determine if the user
running your program is logged in. if fn_isNet() == 0,
she's in.
clipper.767bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
cldebuge arj 7573 Saveti za korišćenje Clipper debuggera
In this text I have collected several tips & tricks of the clipper
debugger. I discoverd them at daily work.
It's intended for all the people who are programming clipper since their
child hood ;-), and who like to expand the capabilities of the debugger.
I describe here, how to use the BLINKER-swapfunction in the debugger.
How to adapt the debugger for your own needs. And the main thing: how
to replace the workareainfo of the debugger by a selfmade function to
support a data browser or RDDs like the SIX-Driver.
clipper.768bulaja,
Ovo je neki RND generator (pseudo-slucajni brojevi) za Clipper.
Nisam probao na sta lici :), al' mozda nekome posluzi.
nb_rnd.zipclipper.769bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
straley zip 28188 Straley's discussion on re-usable subsystems (Nov '92)
The key thing to remember in building a re-usable subsystem is that we
can take what we know already existing, mimic the behavior, and thus,
take control of our programming environment more completely. It also
demonstrates the C-like versativilty of the Clipper language in that we
use Clipper to build or add-on to the Clipper language. To understand
this session, the following topics are needed: arrays, code blocks,
structure programming, INKEY(), SETKEY(), and objects.
----------------
Mrzelo me da prevodim opis :).
clipper.770aquarius,
<> PS. Jel ima neko neku clipper biblioteku za komunikacije?
<> Ovo moje je kombinacija PCL c biblioteke i mojih extend
<> funkcija. Voleo bih da vidim kako su to resili u "belom
<> svetu".
Meni poznato i posedujem :
- CA-Clipper Tools III
- SilverClip Library
- Faxual, Fax Software Library
Za ostale info, mail me.
Aquarius
clipper.772gari,
Posto pominjete Hekom BBS, molio bih nekog ljubaznog
da mi da telefon, pa da platim posti novu centralu :)
Unapred ponizno, pokorno, ...
... zahvalan, Vas ponizni, ...
... Gari.
clipper.773dr.grba,
>> R:ĐIBMPCĐCLIPPERĐ*.*
>> ----------------------
>> rcmplb20 zip 24944 RCmpLib v2.0: Clipper biblioteka za kompresiju
Je li to onaj što ima SW screen po random uzorku, u trajanju od 8 sekundi?
clipper.774bulaja,
│Je li to onaj što ima SW screen po random uzorku, u trajanju od 8 sekundi?
└───
.T.
clipper.775bulaja,
│Posto pominjete Hekom BBS, molio bih nekog ljubaznog
│da mi da telefon, pa da platim posti novu centralu :)
└───
+31 34 834072
clipper.776ndragan,
/ Ali sve mušterije imaju Flush, zar ne? Od DOS 3.3 pa naviše,
/ standardna funkcija u okviru 21H.
Prc je u tome što Flush (povlačenje kanapčeta na vodokotliću) ne znači
da će u direktorij biti upisana ispravna dužina fajla, tako da se
prilikom reseta u pogrešnom trenutku u načelu gubi poslednji alociran
klaster; obično ga DOS dodeli prilikom sledećeg otvaranja .dbf fajla
(tako je radio u mfoxplus, foxpro odbija da otvori), ali to nije _onaj_
klaster, nego neki nov, pun đubreta iz prethodnog fazona. I onda baza
bude puna malih kineza.
Bue_ Ndragan
clipper.777ndragan,
/ Što se tiče CDX indeksa, čini mi se da je njihova najveća prednost ne
/ brzina već to što drže sve indekse u jednom fajlu. To doprinosi većoj
To je što se tiče .cdx indeksa _pod_kliperom_. Inače bismo mogli pričati
o totalno novim stvarima koje .cdx omogućava u foksu, gde stvari rađene
logikom seek/set relation/do while...for itd, koje su radile koliko su
radile, mogu da se zamene jednim jedinim Select ... from... into, koji
odzviždi desetak puta brže od prethodnog metoda.
U foksu, naravno.
Bue_ Ndragan
clipper.778ndragan,
/ Covece, sada mogu da postavim uslov od 5,6 i vise uslova povezanih
/ .AND.-ovima i/ili .OR.-ovima i da bez imalo stida pustim
E, ovo već počinje da liči na ono kako to radi kod kuće. Napredujete.
clipper.779ndragan,
/ izgleda predstavlja problem, sta se dobija komandom FOX-a :
/ <> On Key Label "." Keyb ","
/ i sta tu izigrava TACKA :))), i moze li se poistovetiti sa ne-
Pa, ako zadaš evropski format brojeva, sa decimalnim ZAREZOM, on
prilikom unosa očekuje da mu za decimale zaista kucaš zarez. Pošto je
rečeni taster daleko, rešenje je da se za tu priliku natera taster "."
da proizvodi zarez. To može da se setuje u when funkciji a skine u
valid, s tim da opterećuje kod.
/ a gde pritiskom na TASTER zarez "," ???
/ U OBA slucaja na DECIMALU.
Mašala. A šta se vidi na ekranu? Zarez ili decimalna tačka? Mislim,
koliko bi nas koštalo da ubacimo evropski format brojeva u numerički
GET?
Problem postaje ionako besmislen - decimale ostadoše još na količinama,
sve ostalo je u celim dinarima.
/ Moze li nesto slicno da se uradi u FOX-u ?
Pisanje sopstvenog drajvera za GET je možda teoretski izvodljivo, a i
kad bi ga neko napisao ne verujem da bi umeo da ga ubaci u postojeći GET
sistem; pisanje kompletnog alternativnog sistema samo radi evropskog
formata je suludo. Kolji vola za kilo mesa. Za to je dovoljna varijanta
sa On Key Label ".".
Bue_ Ndragan
clipper.780ndragan,
/ Bilo koji indeks koji koristi nešto jače od običnog B drveta ne čita
/ bazu,
Ideja je da se indeksi čitaju čak i kod običnog Set Filter, Locate For
itd, čak i u slučajevima kada je baza otvorena bez indeksa. Optimizacija
je difolt, osim ako se naglasi (npr copy to trt for <uslov> nooptimize).
Ako se u For opciji spominje bilo šta po čemu postoji teg, foks će prvo
pročitati indeks za taj teg i time prvo stvoriti minimalni skup slogova
koji dolaze u obzir za čitanje, pa će tek onda čitati njih. Zato se .cdx
otvara automatski čim se otvori baza, i zato informacija o njemu stoji u
zaglavlju baze.
/ mu palo na pamet da je najbrži mrežni rad onaj u kome se datoteke ne
/ bi stalno otvarale-zatvarale kako to radi većina "mrežo-podržavajućih"
Ni u bunilu. Za svaku od otvorenih datoteka rezerviše se jedna brava
(ima li neko bolji prevod za lock); za svaku od njih sistem ima posla da
ustanovi da li je neko drugi zaključao deo na koji trenutno nišani
aplikacija; indekse koji se usput ažuriraju treba osvežiti svima koji ih
trenutno koriste; operateri imaju običaj da ostave masku otvorenu na
ekranu i odu na doručak, a za to vreme baze zvrje otvorene; od viška
otvorenih baza duva promaja po disku, čime se disk preterano hladi i oće
da se stegne kolomast u osovini... hm, preterao sam.
Tj, otvaranje sigurno ne spada u najbrže radnje, ali je zato zatvaranje
stvar koja bitno doprinosi sigurnosti podataka. Ispiranje bafera i
ostale zezalice jesu korisne, ali nisu savršene, i zato je sigurno da je
zapisano tek onda kad se baza zatvori.
Bue_ Ndragan
clipper.781bstevan,
Zdravo !
Interesuje me dali neko ima iskustva sa Flipper-om,
i dali je ta biblioteka pouzdana i koliko.
Takodje me interesuju iskustva sa DGE 4.0 i GForce,
grafičkim bibliotekama za Clipper.
pozdrav,
BSTEVAN
clipper.782bulaja,
│To je što se tiče .cdx indeksa _pod_kliperom_. Inače bismo mogli pričati
│o totalno novim stvarima koje .cdx omogućava u foksu, gde stvari rađene
│logikom seek/set relation/do while...for itd, koje su radile koliko su
│radile, mogu da se zamene jednim jedinim Select ... from... into, koji
│odzviždi desetak puta brže od prethodnog metoda.
│U foksu, naravno.
└───
E pa moracu da te razocaram :) - isto to moze i Clipper koriscenjem
SIxRDD drajvera i MachSIx query optimizera. Blizi se dan kada ces i
ti poceti da razmisljas o prelasku sa FoxPro-a na Clipper :).
clipper.783aquarius,
<> Takodje me interesuju iskustva sa DGE 4.0 i GForce,
<> grafickim bibliotekama za Clipper.
GForce , ? Imam interesantno iskustvo.
Aquarius
clipper.784i.a.n.,
>> To je što se tiče .cdx indeksa _pod_kliperom_. Inače bismo mogli
>> pričati o totalno novim stvarima koje .cdx omogućava u foksu,
Za brzinu Foxove SQL SELECT naredbe više je zaslužan ugrađeni
optimizator nego .CDX indeksi. Ako se tabele pootvaraju klasičnim
USE trt IN 1 INDEX teraj_more_do_bele_zore
USE mrt IN 2 INDEX ...
pa se zada SELECT sa uslovima koji delimično ili potpuno odgovaraju
indeksnim izrazima, optimizator stupa u dejstvo i uradi svoje. (Što ne
znači da na .CDX-ove ne treba preći što pre.)
clipper.785i.a.n.,
>> rečeni taster daleko, rešenje je da se za tu priliku natera taster
>> "." da proizvodi zarez. To može da se setuje u when funkciji a
>> skine u valid, s tim da opterećuje kod.
Mogu i da se zamene mesta tačke i zareza, ako je tačka potrebna kod
unosa:
ON KEY LABEL "." KEYBOARD "," PLAIN
ON KEY LABEL "," KEYBOARD "." PLAIN
ali ne vidim razlog da se forsira zarez kao decimalni separator, dosad
nisam sreo ama baš nikog kome bi decimalna tačka smetala.
clipper.786mpeti,
Ehej narode !
Ne znam da li sam pogrešio, ali mi se učinilo da je neko pominjao da
Clipper brže radi ako se koristi DBFCDX drajver. To me je zaintrigiralo
i probao sam da ga koristim u jednoj od mojih aplikacija. Dobro de,
nisam očekivao da će raditimnogo brže, ali sam se nadao da će raditi bar
istom brzinom ili tek nešto malo sporije nego sa DBFNTX. Medjutim grdno
sam se iznenadio. Kod mene je SKIP za oko 75% DUZI (čitaj sporiji :( ) pod
DBFCDX u odnosu na DBFNTX. Da li sam ja negde pogrešio, ili je to
nedoradjenost RDD drajvera. Ima li neko neku dobru ideju šta bi moglo da
se uradi, po ovom pitanju. Mislim voleo bih da koristim CDX zbog malih
i višestrukih indexa (čitaj veće pouzdanosti, manje problema pod
mrežom, ...), ali ovako drastičan pad performansi ne smem dozvoliti.
Zamislite TBrowse tabelu koja radi 75% sporije nego na šta je korisnik
već navik'o. Bruka :(.
Uz poruku prilažem i test primer, kako bi mogao bilo ko da kontroliše
moju tvrdnju, i naravno da se vidi šta to kod mene treba da radi. Isto
vas molim da, ako kod nekoga budu razlike ispod 20% da mi se obavezno
javi na mail ili još bolje telefonom na (024) 26-618.
Pozdrav svima
MPeti
test.zipclipper.787snemcev,
Ima li neko SW biblioteku koja omogućava radio buttons-e u Clipper-u?
clipper.788dr.grba,
>> To je što se tiče .cdx indeksa _pod_kliperom_. Inače bismo mogli
>> pričati o totalno novim stvarima koje .cdx omogućava u foksu, gde
>> stvari rađene logikom seek/set relation/do while...for itd, koje su
Aman, komšija... Već godinu dana te gledam kako potpaljuješ (:║■, ali
izgleda ne ide, pa ne ide. Dođi na kafu da ti pokažem SIXCDX.
(:║■ - user wears sombrero
clipper.789bulaja,
│Ima li neko SW biblioteku koja omogućava radio buttons-e u Clipper-u?
└───
R:\IBMPC\CLIPPER\*.*
----------------------
pushbu arj 20796 Push (radio) buttons za ubacivanje u GET system
clipper.790fric,
> Ima li koga na Sezamu da je, pišuću u Clipperu mrežne
> aplikacije, koristio TTS (transaction tracking) Novella 3.11 ?
Ajiii... Pa zar niko od silnih kliperaša što prave mrežne aplikacije
ne koristi TTS !?
A ja naivan još mislio: kakav blam, svi ozbiljni ga sigurno koriste
a ja još ne, itd.
Elem, evo u par reči osnovnih rezultata eksperimentisanja
(Clipper 5.01 & Novell 3.11 & nflib 2.0): TTS radi i sa
.dbf i sa .ntx fajlovima, naravno ako se i jedni i drugi
fleguju kao TTS-abilni.
Prvi problem, za koji trenutno ne vidim rešenje, je kako ih
flegovati/unflegovati fajlove direktno iz kliper aplikacije
(postoji realna potreba za tim, jer T flegovani fajlovi ne
mogu da se brišu, a i pri instalaciji sa diskete treba
fajlove flegovati kad stignu na mrežni disk).
I implicitni i eksplicitni TTS rade, ali se javlja drugi problem
koji se uz pažnju i žrtvovanje komfora pri radu ipak može rešiti:
kada se u toku trajanja transakcije sa jedne stanice menja sadržaj
zapisa (replace) i potom isprazne write baferi (commit, go to,
stabilize(), itd.), druga stanica se blokira ako se sa nje pokuša
čitanje tog zapisa čiji je sadržaj upravo flushovan. Ta stanica ostaje
blokirana sve dok se transakcija na prvoj stanici ne završi. Ako
prva stanica padne u toku transakcije, ova druga koja pokušava
da čita ostaje blokirana sve do trenutka kad se stanica (tj. user)
sa kojoj je transakcija započeta ponovo ne uloguje.
Znači - promene koje nastaju u toku transakcije su kod drugih
korisnika vidljive tek kad se ista završi, a ne daj Bože da neko
pokuša da ih pročita pre toga !
Pored navedenih problema, ostaje dilema ima li još anomalija
(koje očekujem, imajući u vidu dosadašnje iskustvo). Takođe je
evidentno da postoje mnoge stvari o korišćenju TTS-a i Novell-a
o kojima u standardnim Novell manualima (Concepts i sl.) nema
reči. U Nanfor ng-u piše u stilu: for further information ...
consult your NetWare manuals, no to je već možda stvar za
PC.OS:mreže.
Toliko za sada.
clipper.791dzoric,
Imal' neko NG za Blinker 2.01.
Ako moze na mail.
Pozdrav ...
Dejan
clipper.792bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
dm_101 exe 18689 Vern Six's DemoMaker: olaksava pravljenje demo verzija
What is DemoMakr.Lib?
DemoMakr.Lib is a function library designed to help you easily
create a functioning demonstration version of your Clipper v5.0x
application(s).
What DemoMakr.Lib does
DemoMakr.Lib provides functions that allow you to limit the execution
of your application by date, number of executions or both.
DemoMakr.Lib also provides a function that allows you to "register"
your application and allow it to function normally in non-demo mode.
You can also store up to three fifteen character user defined fields
that you can later retrieve from within your application.
clipper.793snemcev,
>> pushbu arj 20796 Push (radio) buttons za ubacivanje u GET system
Push buttons-i rade perfektno, a radio... Em ih nema (morao sam da čupam
.obj iz .lib), em horizontalno poređani pokazuju neprijatan bag koji se
ispoljava po pravilu čas sam ovde, čas onde. Anything else? Please? :(
clipper.794bestbp,
I ja sam imao slicnih problema.
Bsd, zna li neko kako moze da se napravi sopstvena biblioteka
kao i NG za nju. Imam par desetina funkcija pa bi mi to bilo
jako interesantno zato sto te funkcije cesto koristim.
pozdrav
clipper.795goranr,
>> Interesuje me dali neko ima iskustva sa Flipper-om,
>> i dali je ta biblioteka pouzdana i koliko.
Gledao sam Flipper, i ne čini mi se loš. Ono što on
nudi je skoro čista statistika+kontrola miša. žini
mi se vrlo pouzdan, tj. nisam primetio nijedan bag, ali
baš se nisam ubijao od gledanja :)))
>> Takodje me interesuju iskustva sa DGE 4.0 i GForce,
>> grafičkim bibliotekama za Clipper.
Za DGE 4.0 ne znam, ali sam radio i sa Gforce, i _JAKO_
mi se dopao. Jedino je šteta što radi samo sa VGA, ali
ono što radi mi se jako sviđa. Još jedan plus je što
ima font editor, screen editor i icon editor, i te
stvari su pisane baš u GForceu...
ÔOPAH
clipper.796mpeti,
>> Push buttons-i rade perfektno, a radio... Em ih nema (morao sam da
>> čupam .obj iz .lib), em horizontalno poređani pokazuju neprijatan
>> bag koji se ispoljava po pravilu čas sam ovde, čas onde. Anything
>> else? Please? :(
Evo nešto sam čačkao oko radiobuttons-a (neke prepravke source-a za push
button-e iz pushbu.arj). Tu ti je prikačen modifikovani .ch i
prepravljeni .prg. Ti pogledaj pa vidi možda možeš da ga iskoristiš.
Inače radio sam samo minimalno testiranje, ali imaš source pa ako nadješ
neki bug verujem da ćeš se snaši. Tu je i doterana verzija pushbu.prg,
koja ne koristi statički niz nego get:cargo, pa ne moraš da lupaš glavu
o funkcijama u stilu ...BtnKill.
Ambicija mi je bila inače da uvedem podršku za miša, unutar get sistema
ali još nisam imao vremena.
Ako ima nekih problema ti se javi pa da vidimo.
Pozdrav MPeti.
radiobtn.zipclipper.797ematic,
> │Posto pominjete Hekom BBS, molio bih nekog ljubaznog
> │da mi da telefon, pa da platim posti novu centralu :)
> └───
>+ 31 34 834072 <──────────────────────────────────────────────────────┐
│
Clipper Developers Group of Netherlands │
│
Address: Posbus 506 │
7100 AM Winterswijk │
NETHERLANDS │
Phone #: 31 -543-018058 Fax #: 31 -543-015399 │
│
BBS : Hekom BBS │
Line(s): - 34-833613 <─────────────────────────────────────────────┘
Contact(s):
Group Coordinator .......... Group Coordinator
Nisam proveravao, ali bih želeo da saznam pre nego što pozovem Hekom
koji je broj ispravan, 834072 ili 833613. Možda oba?
clipper.799bulaja,
│Nisam proveravao, ali bih želeo da saznam pre nego što pozovem
│Hekom koji je broj ispravan, 834072 ili 833613. Možda oba?
└───
Ovaj prvi je sigurno ispravan :), a provericu i ovaj drugi.
Dont' worru nego zovi i pokupi nam nesto lepo odatle :). Uz poruku
je okacen spisak fajlova (uglavnom Clipper related) sa Hekom BBS-a.
Takodje je stavljen u dir spisak svih Clipper User Groups-a around
the world gde ima i nekih dvadesetak telefona BBS-ova vezanih za
Clipper, pa ko ima Jupak ili darezljivu firmu :), moze da pogleda
sta se tamo korisno moze naci :).
hekomcl.zipclipper.801nbatocanin,
Nedavno se pojavio dugo očekivani Clipper za Windows. Proizvod se
zove Visual Objects i trenutno je u fazi testiranja. Oni koji su ga
videli predstavljaju ga kao razvojni sistem sledeće generacije. Stvar
je izuzetno interesantna, pa evo nekoliko reči o tome.
Radi se o razvojnom sistemu namenjenom pisanju poslovnih programa
pod Windowsima. Zove se Visual Objects i ima elemente paketa Visual
Basic, Visual C++, Pascal, dbFast i naravno Clipper. Cela aplikacija
se definiše kao skup "objekata" koji mogu biti različite stvari:
procedure, klase, metodi, meniji, ... Program se kreira interaktivnim
alatkama za kreiranje menija, maski za unos, izveštaja itd. Na
programeru je da izabere objekat koji želi da menja, a integrisana
okolina poziva odgovarajuću alatku u zavisnosti od tipa objekta:
editor, generator izveštaja i sl. Sav posao oko smeštanja procedura
itd. u datoteke preuzima integrisana okolina. Uopšte rad je visoko
automatizovan. Za user interface zadužena je OO biblioteka CommonView.
Podaci u bazi podataka će biti u različitim formatima. Pominje se
DBF i SQL format. Sudeći po fleksibilnosti RDD-a, ne bi me čudilo da
konačan spisak bude podugačak.
Osnovni jezik je Clipper sa izmenama: puna OO implementacija, pa
se sada mogu kreirati klase, može se koristiti nasleđivanje i sl. Što
se tiče performansi, stvari stoje jako dobro: VO će biti PRAVI
kompajler i generisaće ne p-kod nego mašinski kod. Ponašanje
kompajlera je inteligento: ukoliko se u delu programu ne koriste
dinamičke promenljive, makroi i sl, on generiše mašinski kod, a u
suprotnom p-kod. Ovo je ono što sam lično nestrpljivo očekivao i što
će konačno rešiti problem povezivanja sa C-om jednom za svagda:
ubuduće neće ni biti potrebno! Preliminarni testovi kažu da je VO prevod
brži od Clipper-a oko 60 puta! Uvedeno je još dosta tipova podataka
(VOID, INT, FLOAT, BYTE, PTR, ...), a sudeći po priloženim listinzima
time nije završena prepravka jezika. Šta kažete na deklaraciju
LOCAL lRet AS LOGIC
ili
FUNC Test (nVal AS FLOAT) AS LOGIC PASCAL
Lepo je što se ova tipizacija ne mora koristiti.
Što se tiče izmena jezika, obećava se stepen kompatibilnosti između 60 i
90%. Ovo je razumljivo s obzirom da je Win različita platforma u
odnosu na DOS, ali ipak pomalo zabrinjava. VO će će bez problema
prevesti stari program (rađen verzijom 5.x) i napraviti pravi Win EXE,
ali će interfejs biti karakter orijentisan. Rad u pravom Win stilu se
može postepeno ubaciti.
E sad, šta će od ovoga na kraju ispasti, ke vidime!
clipper.802bestbp,
> Nedavno se pojavio dugo ocekivani Clipper za Windows. Proizvod se
> zove Visual Objects i trenutno je u fazi testiranja. Oni koji su ga
> videli predstavljaju ga kao razvojni sistem sledece generacije. Stvar
> je izuzetno interesantna, pa evo nekoliko reci o tome.
I ja sam cuo slicno o ovome jos dosta ranije, jer sam bio zainteresovan
za CL4WIN. Naime, postoji par biblioteka od kojih je verovatno "najpoznatija"
CL4WIN biblioteka koja omogucava rad pod WINDOWS-ima. Video sam demo od nje, a
uz gore navedenu je stajala napomena: ... biblioteka je zvanicno nagradjena od
strane CA i predstavlja preliminarny verziju until VISUAL OBJECTS ne dodje na
svet. Tu je bio i mali opis VO ali je ipak siri ovaj od nbatocanina - Hvala.
Usput, ako je neko zainteresovan za ovo, imam demo, pa neka mi ostavi mail.
pozdrav
clipper.803ematic,
> Takodje je stavljen u dir spisak svih Clipper User Groups-a
> around the world gde ima i nekih dvadesetak telefona BBS-ova
Odatle sam i iskopao ovaj drugi broj za Hekom. Uglavnom videćemo šta
može da se uradi :)
clipper.806bestbp,
Pravim neku aplikaciju u CLipperu pa su mi potrebni ziro-racuni organizacija
sa njihovim imenima (organizacija) . Da li neko zna da li se negde moze
nabaviti ova baza (da je ne bih ponovo unosio). Usput, obavesten sam da to
imaju IRC (Informativni Racunski Centar) 683-411 je tel, pa ako neko zna nesto
vise o ovome ...
pozdrav
clipper.807dejanr,
>> Pravim neku aplikaciju u CLipperu pa su mi potrebni ziro-racuni
>> organizacija sa njihovim imenima (organizacija) . Da li neko zna
>> da li se negde moze nabaviti ova baza (da je ne bih ponovo unosio).
Ima raznih baza tog tipa, i vrede otprilike koliko koštaju. Za reda
1000 maraka može se dobiti vrlo dobra baza sa pouzdanim podacima o
svih 200-tinak hiljada firmi u Srbiji i Crnoj Gori (imena, žiro računi,
adrese, matični brojevi i ostali podaci). Za reda 100-tinak maraka može
se dobita baza manjeg broja firmi, sa znatno nekvalitetnijim podacima.
Od raznih statističkih zavoda se uz malo truda i mnogo moljakanja može
dobiti neka baza i besplatno, ali obično još slabijeg kvaliteta.
Ako te interesuju detalji, može na mail :)
clipper.808bcetina,
SeMća li se ko kako se u FRM izveštajima kod CLIPPERA 87 rešava
problem TOTALA koji su veći od 10 cifara. Kuca zvezdice iako
su i polja i prostor u izveštaju veći.
Na primer to kod foxa radi, normalno.
clipper.809d.petrovic,
1. Izvinjenje svima kojima nisam odgovorio blagovremeno na mail ili
poruku u konferenciji. Privremeno sam bez telefonske linije pa PAD
skidam koz_zna_odakle i EXEC šaljem ko_zna_kada... :(((((
2. Ovo ne radi kako treba:
======================
mm := Select(1)
blabla()
Select(mm)
======================
Ovo radi ono što prethodni zajebe:
======================
mm := Select()
Select(1)
blabla()
Select(mm)
======================
3. Unapred se izvinjavam, ako se nekad, negde, pojave duple poruke.
Ni sam neznam gde je koji exec ;)))
clipper.810d.petrovic,
Ă> Valjda opšti princip, jer ako skikne da se nanese što manje štete
Ă> po otvorene datoteke.
Ako (!!!) skikne (izem ti ga što ga reče ;)))) ) nema štete. Jedino
ne može niko da ih otvori ekskluzivno, a u principu na to ima pravo
samo jedan čovek.
clipper.811d.petrovic,
Ă> E sad, fora je i tome što svaki otvoreni fajl i index guta mem.
Ă> Kad neko radi u kliperu, teško će se odreći nekih 100 kb za te
Ă> stvarčice.
Kad neka mašina ima > 640 KB (trenutni standard je recino 2-4 MB)
nije mu kritično 100 KB.
Ne zamerite što se uključujem u diskusije sa zakašnjenjem, ali ima
razloga :)).
Zna li neko koliko memorije zauzme otvorena jedna baza, a akoliko
otvorenih 10 baza ? Po mogućstvu i indekse uzimati u obzir.
clipper.812d.petrovic,
Ă> A zar ne bih mogao da iskoristim funkciju Open(dbf_name)? Pa u
Ă> njoj da obavim sve vudu vradžbine?
Da obavim sve vradžbine i uštedim na veličini aplikacije (i brzini)
treba mi da znam unapred šta je u kojo radnoj oblasti. Ne moram sve
da otvorim, ali čak i kad mi ne treba BAZA2.DBF BAZA1.DBF se otvara u
oblasti 1, a BAZA3.DBF se otvara u oblasti 3. Konfiguraciona datoteka
se UVEK otvara i otvorena je STALNO da bi se onemogućile sve radnje
koje zahtevaju ekskluzivno otvaranje baza (dok je ona otvorena neko
radi, može se videti i ko) i šef na programi ne može da vrši
pakovanje baza. Kad je već taki slučj što ne bi i ostale ostale
otvorene.
Logično je da ih sve zatvorim kad se korisnik vrati u glavni meni
(jer program može tu da zvrji od 6:30 - 14:30), ali zbog nekih drugih
razloga (svaki korisnik ima svoj username i prema njemu drugačije
menije) ni to ne radim.
clipper.813d.petrovic,
Ă> E pa moraju s vremena na vreme da se zatvaraju. Nemaju sve
Ă> mušterije UPSove na svim mašinama. Sad je samo štos u tome da se
Ă> to minimizuje.
Kakve veze sad zatvaranje ima sa UPS-ovima? Pa svi se slažemo da, ako
ne zatvaraš, koristiš redovno DBCommit().
clipper.814d.petrovic,
Ă> -> (((: A ja mislio da sam jedina lenština među kliperašima na
Ă> Sezamu (((:
Ă>
Ă> Nije ovde u pitanju samo lenjost, već mi se dešavalo da zaboravim
Ă> da dodam funkciju u skript fajl. A najgora stvar je ta kada
Ă> izbacujem neku funkciju,
Sa Blinker-om sam se ponovo rodio :)). Nije sporo prevođenje, samo me
nervira kad počne novi modul da me zeza pa pre RMAKE-a (.rmk je po
defaultu na "/n /a /l" moram zbog ručnog "clipper novi /n /a"
(bez /l) da čekam puno linkovanje.
Znam, znam... ja to NEĆU da izbacim iz radnih verzija. Moje ustavno
pravo je da budem mazohista i nemoj da se neko usprotivio ;>>>
Retko se to dešava u poslednje vreme na sreću :))
clipper.815d.petrovic,
Ă> Imam predlog da zajedničkim snagama uradimo Public Domain
Ă> Library za Clipper( SEZAM.LIB ), možda po uzoru na Nanfor.lib.
Ă> Svako bi dostavio predlog funkcija koje bi ušle u LIB. Tačno je
Ă> da postoje lib-ovi koji rade sve i svašta ali ima i dosta
Ă> specifičnih stvari koje su vezane za naše podneblje. Ajde da
Ă> sve to sredimo, dokumentujemo i stavimo svima na raspolaganje.
Ă> Možda bi moderator konferencije mogao da vodi ovaj projekat.
Predlog za početak:
- Svako da ostavi spisak funkcija iz NANFOR-a koje koristi (za to ima
source, ja lično koristima 10-ak funkcija, ostale su blesave ;)) ).
- Jedan dobrovoljac da spakuje source, .obj-ove i sezam.lib u jednu
arhivu i po novim predlozima redovno upgraje i prosleđuje bulaji.
clipper.816d.petrovic,
Ă> Interesuje se jedan moj drugar da li postoji neka biblioteka za
Ă> Clipper za rad sa bar kodom?
žitač bar koda nisam koristio, ali sam čuo da se vezuje između
tastature i računara. Ako je tako ne treba mu funkcija.
clipper.817d.petrovic,
Ă> Treba procitati makar jednom, da ti ostane u secanju da tako
Ă> nesto postoji, pa posle samo potrazis. Uostalom zar tvoja poruka
Ă> 11.206 ne zapocinje ovako :
Jel neko negde pročitao da postoji funkija StrZero() ?? Kad mi je
zatrebalo nešto takvo napravio sam svoju funkciju i rekao banex-u
posle 2-3 dana. On mi kaže da postoji i onda ja obriišem svoju ;)))
Nisu dovoljne ni knjige ni NG.
BTW. ko ima najsvežije vesi o cajper_radnoj_grupi ?
clipper.818snemcev,
>> Ako te interesuju detalji, može na mail :)
Nemoj u mail, interesuje još nekog.
clipper.819bulaja,
│Pravim neku aplikaciju u CLipperu pa su mi potrebni ziro-racuni
│organizacija sa njihovim imenima (organizacija). Da li neko zna da
│li se negde moze nabaviti ova baza (da je ne bih ponovo unosio).
└───
Firma u kojoj radim prodaje baze podataka (zajedno sa programima koji
omogućavaju pregled, pretraživanje, mailing,..) svih firmi u SRJ, sa
statističkim (naziv firme, adresa, delatnost, žiro račun, matični broj,
...) i poštanskim (naziv firme, adresa, telefoni, podela po sektorima za
veće firme) podacima. Zainteresovani mogu da mi se obrate na mail.
clipper.821arazumenic,
-> Sa Blinker-om sam se ponovo rodio :)). Nije sporo prevođenje, samo me
-> nervira kad počne novi modul da me zeza pa pre RMAKE-a (.rmk je po
-> defaultu na "/n /a /l" moram zbog ručnog "clipper novi /n /a"
-> (bez /l) da čekam puno linkovanje.
Nisam razumeo šta si hteo da kažeš, pogotovo onim "ručnog".
Saša
clipper.822madamov,
> Ako (!!!) skikne (izem ti ga što ga reče ;)))) )
Pa, nije riknuo. B) Kad skikne, nastaviće sledeći put da radi, a kad rikne -
gotov je. B)
clipper.823dr.grba,
Dva pitanja za nbatocanina, zbog sadrzaja ih stavljam ovde, budući da
me zanima mišljenje i ostalih...
U umetku "Clipper 5.2" u poslednjim "Računarima" se pominje tzv. mađarska
notacija. Potpuno je jasno šta ona znači i čemu služi. Voleo bih da znam
poreklo ovog naziva.
I jedna stvar u kojoj želim da izrazim svoje neslaganje, a to je terminološki
momenat pojma "relaciona baza". Dopusti da najpre citiram sporni deo (str.
22, poglavlje "Rad sa bazom podataka") :
"Clipper koristi takozvani RELACIONI MODEL baze podataka. U relacionom
modelu se realni objekti i njihovi odnosi predstavljaju preko relacija,
odnosno tabela. Svaka od tih tabela čuva podatke o nekom objektu. Na primer,..
...Ovakav način organizovanja podataka je veoma jednostavan, pregledan
i lako shvatljiv. Naziv RELACIONE baze podataka dolazi od matematičke
osnove na kojoj je zasnovana ovakva organizacija. Naime, u matematici
se koristi pojam RELACIJA za određeni skup uređenih n-torki i to se može
najjednostavnije predstaviti tabelom kao na slici...."
E, sad...
Slažem se sa matematičkim pojmom relacije, kao i sa prikladnošću da
podaci budu prezentirani kao tabela. Ali se ne slažem sa uravnilovkom
tabela <=> relacija u kontekstu pojma "relaciona baza podataka".
Naime, naziv "relaciona baza" ne potiče zbog te mogućnosti prezentacije u
tabeli, već zbog mogućnosti da se uspostavi relacija između dve ili više
baza postedstvom zajedničkog podatka - ključa relacije. Da ne zalazimo u
implementaciju, mislim na "set relation...".
Relacioni model predstavlja poslednju generaciju u razvoju i projektovanju
baza podataka. Prethodili su tzv. mrežni model i hijerarhijski model. Ovaj
drugi je čak još uvek zastupljen na tržištu (IDS II DBMS). Relacioni model
u sebi podrazumeva implementaciju mreže i hijerarhije.
A tabelarna prezentacija podataka tek predstavlja jedan zgodan vid
implementacije korisničkog pogleda, koji je uostalom ostvariv i u
hijerarhijskom modelu.
Nadam se da sam bio jasan u onome što sam mislio. Spreman sam i dalje
da razjasnim, ako je potrebno. Ukoliko sam na pogrešnom tragu, a mislim
da nisam, spreman sam da korigujem svoj stav, naravno uz prikladnu
argumentaciju drugačijeg mišljenja.
Nenade, nadam se da te ne vređa ovo što napadam ovaj deo tvog (inače
odličnog) umetka. Uostalom, tebi je već dobro poznato šta mislim o tvom
radu. Od tebe bih najpre voleo da čujem par reči na ovu temu.
clipper.824bulaja,
**** new file ****
R:\IBMPC\DATABASE\*.*
----------------------
dbx132 arj 188705 dbMAX v1.32, utility za rad sa DBF datotekama (obj+hlp)
dbx132ex arj 271776 dbMAX v1.32, utility za rad sa DBF datotekama (exe)
dbMAX(tm) Version 1.32
Copyright (c) 1991-1993 David A. Kennedy.
All rights reserved.
INTRODUCTION
============
dbMAX is an xBASE utility that will allow complete multi-user access to
any xBASE databases and indexes. The program uses a CUA-type menu system
with Brief(R)-style hot keys and can browse databases in up to 250 moveable,
sizable windows. Almost every Clipper(R)/dBASE(R) command is available,
allowing dbMAX to replace the dBASE Assist/Control Center or Computer
Associates' DBU utility. dbMAX also has a partially open architecture,
allowing programmers to create their own menus and operate on dbMAX
internal data structures.
clipper.825milanv,
Iz ovog pitanja verovatno će delovati kao da sam upravo
pikirao s marsa :) al' ja propisno olupah glavom zid a i dalje
mi nije jasno kako da dođem do pojedinačnih fajlova sa
instalacionih disketa CLIPPER-a 5.1, konkretno GETSYS.PRG, kome
sam namerio izvesne ispravke.
Da podsetim, fajlovi su u meni nepoznatom .LIF obliku.
clipper.826bulaja,
│kako da dođem do pojedinačnih fajlova sa instalacionih disketa CLIPPER-a
│5.1, konkretno GETSYS.PRG, kome sam namerio izvesne ispravke.
│Da podsetim, fajlovi su u meni nepoznatom .LIF obliku.
└───
GetSys.prg se instalira u \clipper5\sample\sys\ zajedno sa ostalim
primerima, ako prilikom instalacije zadas da ti se kopiraju i primeri.
clipper.827nbatocanin,
> U umetku "Clipper 5.2" u poslednjim "Računarima" se
> pominje tzv. mađarska notacija. Potpuno je jasno šta ona
> znači i čemu služi.
Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
(Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
Mislim da je članak odličan i rado bi ga video prevedenog u R.
> I jedna stvar u kojoj želim da izrazim svoje neslaganje, a
> to je terminološki momenat pojma "relaciona baza".
> Ali se ne slažem sa uravnilovkom tabela <=> relacija u
> kontekstu pojma "relaciona baza podataka".
C.J. Date: Database Systems - "The reasons such systems are called
'relational' is because the term 'relation' is essentially just a
mathematical term for a table. For most practical purposes, indeed,
the terms 'relation' and 'table' can be taken as synonymous."
> Nenade, nadam se da te ne vređa ovo što napadam ovaj deo
> tvog (inače odličnog) umetka.
Taman posla, već sam mislio da te teorijske delove svi preskaču ;)
clipper.828ndragan,
/ ali ne vidim razlog da se forsira zarez kao decimalni separator, dosad
/ nisam sreo ama baš nikog kome bi decimalna tačka smetala.
Ne vidim ni ja - čak sam celu ovu pantljičaru od niza poruka posvetio
prebrojavanju problema koje to stvara.
Kad su se pojavili šifonjeri, kružila je priča da će računari naterati
ceo svet da standardizuje mere, da će se uvesti SI itd. Jedino su
Englezi napravili decimalnu lovu, a sve ostalo je ostalo na "svaka vaška
obaška". Obično ispisivanje datuma, po kalendaru koji je svetski priznat
više vekova, ima desetak varijanti. Ameri i Englezi uporno forsiraju
colove, unce, jarde (i milijarde :), nemački predlog o podeli pravog
ugla na sto gradi je ugrađen u nešto kalkulatora i ni u jedan programski
jezik, i najzad, Evropa uporno koristi decimalni zarez i tačku za
hiljade, osim na računarima koji su američka izmišljotina i rade upravo
obratno.
Nije problem odštampati broj sa decimalnim zarezom, to se uveliko radi,
ali za unos je to maksimalno bezvezna tehnika kad je zarez tako daleko.
Mada, kad se setim PAKA terminala, imali su i zarez (iznad entera, a
plus je bio upola manji).
Bue_ Ndragan
clipper.829ndragan,
/ fn_isNet() provides a simple way to determine if the user
/ running your program is logged in. if fn_isNet() == 0,
Da ne bude samo fn_isNovel()? Imam nezgodno iskustvo sa sličnim
funkcijama, koje prepoznaju neke mreže, a neke ne.
U Foksu, sys(0) treba da da ime čvora/stanice na kome se nalazite,
propraćeno jednobajtnim id brojem. To radi pod RPTI mrežom bez problema.
Ista funkcija pod Novelom daje "# 0", tj. "nisi u mreži". FoksPro,
inače, ume da sarađuje sa Novelovim spulerom, tj ima naredbu tipa Set
Print To Spooler <ime> ili tako nešto.
Pretpostavljam da se ta i slične funkcije oslanjaju na neke službene
adrese na koji mreže ostavljaju neke svoje oznake dok rade; stvar je
uveliko problematična zbog poznate "standardnosti" DOSa. Nema garancije
da postoji bajt u onih 640 K koji sve mreže koriste, pa još na isti
način. žak sam spremniji da poverujem da postoje značajne razlike i među
verzijama iste mreže.
Bue_ Ndragan
clipper.830ndragan,
/ SIxRDD drajvera i MachSIx query optimizera. Blizi se dan kada ces i
/ ti poceti da razmisljas o prelasku sa FoxPro-a na Clipper :).
Da sam imao vremena da naučim C, možda. Previše sam razmažen
interpreterskom okolinom. Gooomilu stvari uradim iz komandnog prozora.
Kad bih za to sve morao da pišem rutine, pa da ih kompajliram, život bi
mi bio mnogo kraći - dok sam radio u (kobolu i u) petlji editor->
kompajler-> linker-> run, za svako linkovanje duže od minuta palio sam
cigaru.
Sve što možete da uradite na računaru, a traje preko deset sekundi od
editovanja do testiranja, škodi zdravlju :>
Btw, Kliper to nema u dućanu, to se dokupljuje na buvljaku pa se
instalira pa dojavljuje linkeru pa je često i kompatibilno jedno s
drugim. Foks sve to ima u startu i radi odmah. Dakle, nismo iz iste
ulice (nisam ni ja iz iste ulice, preselio sam se :)
Bue_ Ndragan
clipper.831ndragan,
/ Za brzinu Foxove SQL SELECT naredbe više je zaslužan ugrađeni
/ optimizator nego .CDX indeksi. Ako se tabele pootvaraju klasičnim
A optimizator upravo najbolje voli cedeiksove. Baška što dobro odabranim
tegovima možeš da ubrzaš mnoge stvari.
Btw, setih se da priupitam kliperaše da li cdx drajver ima isti bugi ko
u foksu: indeksirajte jednu datoteku pet ili deset puta uzastopce po
istom tegu, ne brišući već postojeći istovetan teg. Ako to uradite iz
Foksa, .cdx će nenormalno da raste. Zato smo u rutine za indeksiranje
ubacili da se generiše jedno Delete Tag All pre samog indeksiranja.
Nije neki bag, baš i ne pravi neku štetu, osim što malo pojede diska dok
ga ne primetite. Kako se ponaša Kliper?
Bue_ Ndragan
clipper.832saks,
Pazi ovako: U uputstvu za SixDrivers (imam verziju 1.0), lepo pise
da se reindeksiranjem taga isti ne brise, vec se nadopisuje na
postojeci CDX. Ako hoces da CDX ne raste, nemoj reaindeksirati ni
tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast
CDX-a nije bug vec osobina. Sory.
Sasa
clipper.833i.a.n.,
>> Slažem se sa matematičkim pojmom relacije, kao i sa prikladnošću da
>> podaci budu prezentirani kao tabela. Ali se ne slažem sa uravnilovkom
>> tabela <=> relacija u kontekstu pojma "relaciona baza podataka".
Na ovo je nbatocanin već odgovorio...
>> Naime, naziv "relaciona baza" ne potiče zbog te mogućnosti prezentacije u
>> tabeli, već zbog mogućnosti da se uspostavi relacija između dve ili više
>> baza postedstvom zajedničkog podatka - ključa relacije. Da ne zalazimo u
>> implementaciju, mislim na "set relation...".
... a ovo je bilo i moje uverenje dok me C.J. Date nije prosvetlio. ;)
Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte zaslužuju
naziv "relacioni sistemi". Evo šta Date kaže (svi navodi su iz "An
Introduction to Database Systems", Vol. I):
Data independence can most easily be understood by first
considering its opposite. [...] the way in which the data is
organized in secondary storage and the technique for
accessing it are both dictated by the requirements of the
application under consideration, and moreover _knowledge of
that data organization and that access technique is built
into the application logic and code._
Example: [...] Then the (data-dependent) application in
question will typically be aware of the fact that the index
exists, and aware also of the file sequence as defined by
that index, and the internal structure of the application
will be built around that knowledge.
USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih dvanaest
pravila (o tome koji se sistem može smatrati potpuno relacionim)
zahtevaju "physical" i "logical data independence". Ima tu još zahteva
po kojima Fox i Clipper definitivno padaju. Dobro, da vidimo onda tzv.
"early 1980s definition", po kojoj je sistem minimalno relacioni ako
podržava sledeće:
- Relational databases (i.e., databases that are perceived
by the user as tables, and nothing but tables);
- The operations restrict, project, and (natural) join,
without requiring any predefinition of physical access paths
to support these operations.
Pa sad. Fox ovde prolazi kroz iglene uši, za Clipper ne bih bio
siguran, zbog zahteva #2. Još jedan sistem koji zadovoljava ove
zahteve je Paradox, koji ima i neke zgodne dodatne operacije, npr.
"outer join", za šta se na Foxu treba mučiti sa UNION.
Sve u svemu, xBase sistemi još i najviše liče na ono što Date naziva
"inverted list systems" (Dodatak A). A tu se nalazi i ohrabrujuća
tvrdnja: "Many relational systems -- though not all -- can be thought
of as inverted list systems at the internal (i.e. physical) level".
Što znači da se možemo nadati da xBase sistemi postanu pravi relacioni
-- kad malo porastu. :)
clipper.834djelovic,
> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
> (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
> Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
> promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
> Mislim da je članak odličan i rado bi ga video prevedenog u R.
Inace se ova notacija najvise koristi u C programima za Windowse da bi se
odrzala jaka tipizacija podataka. U modernijim jezicima za tako nesto nema
potrebe jer o tipovima podataka brine kompajler - ako pokusas da pozoves
funkciju sa argumentima pogresnog tipa, on ti javi gresku.
clipper.835petrovics,
>> Naime, naziv "relaciona baza" ne potice zbog te mogucnosti prezentacije u
>> tabeli, vec zbog mogucnosti da se uspostavi relacija izmedu dve ili vise
>> baza postedstvom zajednickog podatka - kljuca relacije. Da ne zalazimo u
>> implementaciju, mislim na "set relation...".
Ja pak delim misljenje Nenada Batocanina :).
Smatram da je njegova interpretacija termina "relacione baze
podataka" ispravna i da naziv bas dolazi od toga sto su podaci
organizovani u tabelama (relacijama) izmedju kojih je moguce
uspostavljati veze (ono sto neki Clipper-asi nazivaju relacijama
;). U Clipperu, kao relacionoj bazi podataka, relacija je DBF
fajl a SET RELATION TO veza izmedju relacija. Ovakva
terminologija je saglasna i sa Oracle-om koji je jedan tipican
predstavnik relacione baze podataka.
Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja
nije dala rezultata. Svi su ostali na svojim stanovistima. Zato
bih zamolio nekog ko je dovoljno kompetentan ili jos bolje ima
adekvatnu literaturu da objasni pojam *relaciona baza podataka*
jednom za svagda ;).
Inace ova diskusija na SETNetu je vodjena i oko toga da li je
izraz "baza podataka" ili samo "baza" adekvatan za .DBF
datoteku ? Ja mislim da nije a vi?
clipper.836ndragan,
/ Kakve veze sad zatvaranje ima sa UPS-ovima? Pa svi se slažemo da, ako
/ ne zatvaraš, koristiš redovno DBCommit().
Hm... jedino čemu bih verovao je da taj DbCommit() uredno forsira DOS da
upiše sve i u FAT i u direktorij (mislim na dužinu fajla, alocirane
klastere). Uostalom, pokušaj da posle svakog dodatog sloga u bazi pratiš
njenu dužinu onako kako piše u direktoriju. Ako je ne povećava uredno,
onda ipak ima opasnosti.
Bue_ Ndragan
clipper.837ndragan,
/ Na primer to kod foxa radi, normalno.
Foks iznutra radi do 15 značajnih cifara, bar toliko pristaje da upiše u
.dbf, međutim otkako me inflacija naterala da pravim izveštaje sa 18 i
20 cifara (bez decimala), primećujem da ih sabira tačno. Zblanut sam.
Btw, i select 000000000000000+sum(iznos) as iznos from... itd, daje bazu
širu od one koja se može stvoriti redovnim Create ili Create Table, i u
njoj iznosi tačno sabrani na više od 15 cifara.
Sad ili su na nekim mestima odustali od IEEE formata brojeva, ili foks
ipak podržava više cifara, jedino se pravi blesav tamo gde treba da
ostane kompatibilan sa dibejzom?
Bue_ Ndragan
clipper.838bestbp,
Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima su
cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo pozeljno da se
max jedan racun izgubi u slucaju nestanka struje . Da li bi najbolje bilo da se
baze otvaraju samo pri upisu ili neko ima bolju ideju.
hvala
GM
clipper.839dragisha,
-> Ima u BYTE od 1991. lep tekst. Autor teksta je autor i ove notacije
-> (Charles Simonyi). Kaže da je prvi put upotrebio ovu notaciju 1972.
-> Zove se ovako zato što je ovaj tip Mađar i što se u njoj tip
-> promenljive stavlja pre imena, kao kod ličnih imena u Mađarskoj.
-> Mislim da je članak odličan i rado bi ga video prevedenog u R.
I tip radi u Microsoft-u i šef je ili tako nešto tima za Windows, i
notacija je napravljena prvenstveno za potrebe tog projekta (što se vidi u
svakoj liniji Windows.H:).
Bilo bi lijepo da neko barem dovuče ASCII formu članka, pretpostavljam da
je ima na bix::byte91.
--
[Postscript,..Prescript,..what's the difference?]
clipper.840i.a.n.,
>> Inace ova diskusija na SETNetu je vodjena i oko toga da li je
>> izraz "baza podataka" ili samo "baza" adekvatan za .DBF
>> datoteku ? Ja mislim da nije a vi?
Ditto. Odgovarajući izraz bi bio "tabela".
clipper.841dr.grba,
>> Mislim da je članak odličan i rado bi ga video prevedenog u R.
I ja.
>> > Ali se ne slažem sa uravnilovkom tabela <=> relacija u
>> > kontekstu pojma "relaciona baza podataka".
>>
>> C.J. Date: Database Systems - "The reasons such systems are called
>> 'relational' is because the term 'relation' is essentially just a
>> mathematical term for a table. For most practical purposes, indeed,
>> the terms 'relation' and 'table' can be taken as synonymous."
No comment. E, šta da se radi, evo 16.589-og primera neusaglašenosti
referentne literature. Organizaciju podataka sam slušao kod Radmila
Simića na Višoj informatičkoj, i neke stvari koje sam čuo od njega mi
ostadoše u glavi, pogotovo kada je u pitanju princip projektovanja baza.
Ne bi me čudilo ni da naletim na neko n-to objašenjenje, sasvim
komplementarno svim ostalim koje sam do sada čuo. Ovo me priseti na
predavanja na PMF-u, gde nema šanse da čuješ dva predavača mat. analize
da pričaju istu priču...
>> Taman posla, već sam mislio da te teorijske delove svi preskaču ;)
Jes', pa posle "Kako ovo?"... (: Tvoje tekstove čitam veoma pažljivo,
na sopstvenu korist i zadovoljstvo. Već ti rekoh da bih voleo da pročitam
tvoju knjigu u kojoj se baviš projektovanjem programa u Clipperu.
Kako ono beše? A, da, SetBlink(.F.)... (:
clipper.842dr.grba,
Vrlo zanimljiv prilog!
>> USE tabela INDEX ind1, ind2... Upravo to. A dva od Coddovih
>> dvanaest pravila (o tome koji se sistem može smatrati potpuno
>> relacionim) zahtevaju "physical" i "logical data independence"....
Može li svih dvanaest, ako nije zametno da prepišeš?
I uostalom, molio bih par reči i bližu referencu na knjigu koju
pomenuste nbatocanin i ti.
clipper.843dr.grba,
>> Inace na ovu temu se svojevremeno u SETNetu vodila rasprava koja
>> nije dala rezultata. Svi su ostali na svojim stanovistima. Zato
Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu
pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist.
Jer sam siguran: kada bismo bolje razumeli teorijske koncepte,
u praksi bi se mogli videti bolji rezultati.
A ja rekoh da sam spreman da korigujem svoje mišljenje uz valjanu
argumentaciju. Prvi argumenti su već stigli i ja sam veoma raspoložen
da ih proučim.
Hvala Bogu, najzad konstruktivna rasprava na Sezamu!
>> Inace ova diskusija na SETNetu je vodjena i oko toga da li je
>> izraz "baza podataka" ili samo "baza" adekvatan za .DBF
>> datoteku ? Ja mislim da nije a vi?
Za mnoge je XXX.EXE program. Za mene nije. To je za mene datoteka u kojoj
se nalazi kod nekog programa, koji se učitava u memoriju blablabla...
E, pa šta je YYY.DBF? Baza? Datoteka čiji se sadržaj može interpretirati
kao baza podataka u dBase i sličnim sistemima? Skup formatiranih podataka
u ASCII obliku? ________________? (dopisati po želji...)
Ovde smo tek kod pojma datoteke, pazite. Još nismo došli do pojma baze
ili baze podataka. Tu bi rasprava mogla da ide u nedogled...
To su mutne vode, te terminološke zavrzlame...
clipper.844bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
frank arj 242263 Frankie lib v2.1: Clip. mouseable User Interface Engine
frankg arj 86579 Frankie lib v2.1: Norton Guide
frankn arj 11015 Frankie lib v2.1: Newsletter
frankr arj 66109 Frankie lib v2.1: Reference (text)
What is the Frankie Library?
────────────────────────────
The Frankie library is a collection of Clipper 5.01/5.2 mouseable
and configurable user interfaces. Every UI is built upon an
engine that has default looks and functionality, but can be
reconfigured. The reconfiguration takes place by sending messages
to the engine via APIs.
The Engines
───────────
The following UI engines are available in version 2.0:
1. Database Browser
2. Get/Read Subsystem
3. Boxed Gets
4. Vertical Menu
5. Horizontal Menu
6. Dialog Box
7. Push Buttons
8. Radio Buttons
9. Scroll Bar
10. File Viewer
The APIs
────────
Each engine has its own set of API functions that serve to
configure the engine (a Config API), interrogate its state (an
Info API), or instruct it to do something (an Action API).
Specialized UI Fucntions
────────────────────────
In addition to the generic engines, Frankie contains a number
of specialized UI functions:
1. Drives picklist
2. Directory picklist
3. Files picklist
4. Fields picklist
5. "Drive Not Ready" dialog box
6. "Printer Not Ready" dialog box
7. "Which Drive?" dialog box
9. "Which Floppy?" dialog box
10. Switch toggler dialog box
11. Database browser scroll bars
12. Horizontal and vertical push buttons
13. A Read of one Get (two variants)
Miscellaneous Functions
───────────────────────
Aside from the engine functions and their APIs, Frankie contains
a wide variety of miscellaneous and useful functions. These,
however, are primarily for the purpose of supporting the Frankie
engines. They are not intended to serve as a full repertoire of
Clipper functions. Frankie is primarily a UI engines library.
clipper.845gari,
Da li bi neko znao da mi objasni zasto 1. primer radi,
a drugi radi nekoliko desetina puta u petlji X pa onda
odjednom izleti sa sledecom porukom:
Error BASE/1003 Variable does not exist: T_DATUM
Razumem ja da on izleti prvi put kad udje u petlju
zbog koriscenja LOCAL varijabli u makrou, ALI
da to uradi N-ti put (N=promenljiva velicina, koja
zavisi od raspolozenja mikroprocesora, vremenske
prognoze, gravitacije,... ;), E TO MI NIJE JASNO!
Evo saljem primere (ko voli probleme, ETO IH):
**********************
*** GLAVNI PROGRAM ***
**********************
do while ...neka petlja X
...
t_kol := Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
...
enddo
****************
*** PRIMER 1 *** OVO RADI ...
****************
FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
LOCAL t_kolicina:=0, t_uslov
if valtype(t_datum) == "D"
t_uslov:={|p1,p2|p1==SIF_RO .and. p2==DATUM .and. !eof()}
else
t_datum:=date()
t_uslov:={|p1,p2|p1==SIF_RO .and. !eof()}
endif
select POCETNO
seek t_objekat+t_sif_robe
if found()
t_kolicina+=KOLICINA
endif
select PRODAJA
set order to 2
seek t_objekat+t_sif_robe
do while eval(t_uslov,t_sif_robe,t_datum)
t_kolicina-=BOMBONA
skip
enddo
...
...
RETURN t_kolicina
****************
*** PRIMER 2 *** ... A OVO NE RADI UVEK !?
**************** ^^
FUNCTION Vrati_Kolicinu(t_sif_robe,t_objekat,t_datum)
LOCAL t_xxx, t_yyy, t_zzz, t_kolicina:=0, t_uslov
if valtype(t_datum) == "D"
t_uslov:="t_sif_robe==SIF_RO .and. ;
t_datum>=DATUM .and. !eof()"
else
t_uslov:="t_sif_robe==SIF_RO .and. !eof()"
endif
select POCETNO
seek t_objekat+t_sif_robe
if found()
t_kolicina+=KOLICINA
endif
select PRODAJA
set order to 2
seek t_objekat+t_sif_robe
do while &t_uslov && <- OVDE GA IZBACI, A PRE
t_kolicina-=BOMBONA && TOGA PROSAO DESETAK PUTA
skip
enddo
...
...
RETURN t_kolicina
clipper.846ppekovic,
>> organizovani u tabelama (relacijama) izmedju kojih je moguce
Tabela nije isto što i relacija. Tabela je skup pojavljivanja
jedne relacije. Tako, može postojati više tabela (skupova
pojavljivanja) jedne relacije.
Paya
clipper.847i.a.n.,
>> Može li svih dvanaest [Coddovih pravila], ako nije zametno da prepišeš?
1. The information rule
2. The guaranteed access rule
3. Systematic treatment of null values
4. Active online catalog based on the relational model
5. The comprehensive data sublanguage rule
6. The view updating rule
7. High-level insert, update, and delete
8. Physical data independence
9. Logical data independence
10. Integrity independence
11. Distribution independence
12. The nonsubversion rule
(1) je drugi način da se kaže da svi podaci u bazi treba da budu
predstavljeni na jedan jedini način, u vidu tabela. (2) zahteva da se
svakoj pojedinačnoj vrednosti unutar baze može pristupiti, što povlači
postojanje primarnog ključa za svaku relaciju, pošto se po relacionoj
teoriji do određenog sloga (n-torke) može doći jedino njegovim
korišćenjem.
(3) je po Dateovom mišjenju slaba tačka većine današnjih relacionih
sistema. žesto je potrebno da se u bazi nađu podaci tipa "nepoznat",
"ne postoji" itd. koji bi trebalo da budu a) predstavljeni vrednostima
različitim od svih ostalih mogućih vrednosti, i b) dosledno tretirani
od strane relacionog sistema. SQL rešenje (NULL vrednosti) je daleko
od potpunog.
(4) traži postojanje on-line kataloga sa podacima o bazama i tabelama
unutar njih. Katalogu treba da je omogućen pristup putem standardnog
upitnog jezika, naravno ako korisnik ima dovoljna ovlašćenja. (5)
znači da treba da postoji bar jedan relacioni jezik koji se može
koristiti za celokupan rad sa bazom: upite, ažuriranja, definiciju
novih tabela/baza, transakcioni rad, davanje prava pristupa i
postavljanje pravila integriteta. Dodatni zahtev je da se jezik
dostupan i interaktivno i u aplikacijama, bez znatne izmene sintakse u
bilo kom slučaju.
Po pravilu (6), sistem mora biti sposoban za ažuriranje svih pogleda
za koje teorija kaže da je ono moguće. I ovde stvari stoje klimavo, i
teorijski i praktično. (7) zahteva operacije INSERT, UPDATE i DELETE
koje ne bi bile ograničene na rad slog po slog, već sposobne da deluju
nad više slogova odjednom. (8) i (9) sam ranije spomenuo.
Prema (10), pravila integriteta moraju da se zadaju nezavisno od
aplikacija i da budu smeštena u katalogu. Takođe se mora omogućiti
njihova izmena bez uticaja na postojeće aplikacije. (11) se odnosi na
uvođenje distribuirane verzije sistema i kasniju preraspodelu podataka
u njemu: postojeće aplikacije i dalje treba da rade bez izmena.
Najzad, (12): ako sistem omogućava pristup podacima na niskom nivou,
pri čemu se ne misli na direktno brljanje po datotekama, već rad sa
pojedinačnim slogovima, onda se u takvom načinu rada ne sme dozvoliti
narušavanje postojećih pravila integriteta i prava pristupa.
>> I uostalom, molio bih par reči i bližu referencu na knjigu koju
>> pomenuste nbatocanin i ti.
C.J. Date: "An Introduction to Database Systems", Vol. I (5th ed.),
Addison-Wesley, Reading, MA, 1990.
Knjiga se smatra za standardni priručnik/udžbenik opšteg tipa. Neki
zameraju Dateu isključivost (relacioni model, i šlus!), ali Bože moj.
Lični utisak: pred ovim bi svi YU udžbenici organizacije podataka
trebalo da se posakrivaju u mišju rupu. Toliko je jasno i dobro
napisano da ne shvatiš da ti u stvari nemilosrdno trpa u glavu hrpu
činjenica i teorije do trenutka kad se malo osvrneš.
Praktičan rezultat čitanja je, u najmanju ruku, ovaj: moje aplikacije
B.D. (Before Date :) su nastajale tako što bih pet dana pisao program,
a posle ga tri meseca doterivao. A.D. postupak je dve nedelje
projektovanja, istih onih pet dana pisanja, nedelju-dve doterivanja i
to *radi*. Da ne spominjem koliko su sva kasnija dodavanja i menjanja
lakša.
clipper.848djelovic,
> (2) zahteva da se svakoj pojedinačnoj vrednosti unutar baze može
> pristupiti, što povlači postojanje primarnog ključa za svaku relaciju,
> pošto se po relacionoj teoriji do određenog sloga (n-torke) može doći
> jedino njegovim korišćenjem.
Jel može šire objašnjenje zašto je primarni ključ neophodan? Još bolje,
ukoliko bi mogao da nađeš neki ilustrativan primer...
clipper.849petrovics,
>> Bio ja u pravu ili ne, drago mi je da je ono moje pitanje Nenadu
>> pokrenulo ovu raspravu, jer bi trebalo da bude svima na korist.
Svaka konstruktivna rasprava je korisna :). Inace slazem se sa
tobom da na Sezamu bas i nema puno konstruktivnih rasprava :(.
>> Jer sam siguran: kada bismo bolje razumeli teorijske koncepte,
>> u praksi bi se mogli videti bolji rezultati.
Nista bez teorije :). Na zalost mnogi i ne haju za ovu vaznu
komponentu bavljenja racunarom. Da ne pominjem one sto misle da
su naucili da programiraju u trenutku kad su zapamtili sve
rezervisane reci nekog jezika...
Inace i ja sam za to da ovde cujem nesto pametno i konstruktivno o
relacionim bazama podataka.
clipper.850petrovics,
>> Sta je najbolje uraditi sa bazama ukoliko se radi na racunarima na kojima
>> su cesti ispadi struje ? Naime , program je kasa za PP pa bi bilo
>> pozeljno da se max jedan racun izgubi u slucaju nestanka struje . Da li
>> bi najbolje bilo da se baze otvaraju samo pri upisu ili neko ima bolju
>> ideju.
Smatram da je dovoljno samo da se posle svake izmene/dodavanja
sloga forsira upis na disk naredbom tipa COMMIT. Mislim da nije
od nekog sireg znacaja da li su u trenutku nasilnog prekida rada
programa datoteke bile zatvorene.
Ipak ne mogu sa sto posto sigurnosti ovo da tvrdim jer se
zasniva na mom iskustvu a to nije dovoljno da se izvede
generalni zakljucak.
clipper.851i.a.n.,
>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još
>> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer...
Teorija definiše telo relacije kao skup (n-torki), a u skupu nisu
mogući duplikati. Definicija primarnog (zapravo kandidatskog) ključa
zahteva da obeležje koje ga čini zadovoljava uslov da ni u jednom
trenutku ne postoje dve n-torke sa istom vrednošću tog obeležja. Ovo
znači da svaka relacija ima primarni ključ -- za razliku od tabele,
gde se može desiti da postoje istovetni slogovi, u kom slučaju tabela
više ne može da se smatra fizičkom predstavom relacije. Dopuštanje
duplikata u tabelama može da dovede do anomalija prilikom brisanja ili
ažuriranja, recimo.
Primer? Svakom primeru koga bih ovde mogao da navedem suđeno je da
deluje budalasto, ali ajde:
Ime Kompjuter
-----------------------------
Ivan 80386SX
Dejan 80386
Dejan 80386
Operacija
UPDATE oprema
SET Kompjuter = "80486"
WHERE Ime = "Dejan" AND Kompjuter = "80386";
bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta
ako treba promeniti samo jednog? Morao bi da se uvede redosled (prvi i
drugi Dejan u tabeli), a relacije (opet zbog toga što su definisane
kao skupovi) nemaju uređenje.
clipper.852djelovic,
> UPDATE oprema
> SET Kompjuter = "80486"
> WHERE Ime = "Dejan" AND Kompjuter = "80386";
>
> bila bi logički uspešna samo ako oba Dejana dobijaju 486-icu. A šta
> ako treba promeniti samo jednog?
S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim sam
saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod standardnih
aplikacija koje se danas vrte u 99% firmi korisnik slog koji se menja bira
interaktivno, kroz nekakvu vrstu tabele (mislim da se to na Clipperu zove
TBrowse?), tako da postojanje primarnog ključa koji ničemu ne služi a veštački
se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne treba zašto
onda sistem da još dodatno opterećuje programera kreiranjem "veštačkog"
primarnog ključa kao što to radi Paradox Engine?
clipper.853nbatocanin,
> U modernijim jezicima za tako nesto nema potrebe jer o
> tipovima podataka brine kompajler - ako pokusas da pozoves
> funkciju sa argumentima pogresnog tipa, on ti javi gresku.
Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost
programa. Na primer, čitaš neki program, a ono u sredini modula od
5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe)
nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa,
ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš
da trčiš na početak modula, ili da imaš editor sa dva prozora u svet
;) Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom
promenljivih.
Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima
tehničko ograničenje koje će vrlo brzo (?) doći na red za
usavršavanje. Klasična deklaracija na početku bloka je čista usluga
koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim
da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na
osnovu primene određene promenljive sam provalio kog je tipa, a ako
baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet
je brzina rada, a to je već njegov problem ;)
clipper.854nbatocanin,
> Ne bi me čudilo ni da naletim na neko n-to objašenjenje,
> sasvim komplementarno svim ostalim koje sam do sada čuo.
Nikako ne bi smelo. O tome zašto se relacioni *model* zove tako, nema
nikakvog spora: zato što se realni objekti modeliraju relacijama. A
relacione baze podataka se zovu tako zato što koriste relacioni
model kao osnovu.
clipper.855nbatocanin,
> Posle toga sam počeo da sumnjam da li Fox ili Clipper uopšte
> zaslužuju naziv "relacioni sistemi". Evo šta Date kaže (svi navodi
> su iz "An Introduction to Database Systems", Vol. I):
Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je
sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za
pravi relacioni sistem. Osnovni razlog za to je nivo obrade: u
relacionom sistemu se zahteva da taj nivo bude mnogo viši od onoga u
kome se radi sa xBase jezicima. E, sad tu ima par kvaka: prvo, ni
jedan sistem se ne pravi tako što sednu neki tipovi i kažu: "ajde da
napravimo jedan relacioni sistem" ili se bar to retko radi. Skoro
uvek se pravi alatka za određenu vrstu problema, a rezultat - gde
upadne. dBase je nastao kao mala baza podataka na računaru sa veoma
skromnim mogućnostima, pa nije bilo ni govora o tome da se
implementira mogućnost transparentnog rada sa relacijama. Clipper i
ostali su nastali kao naslednici dBase-a, pa nisu imali mnogo izbora.
Osim toga, ovi proizvodi i nisu bili namenjeni izradi "pravih" baza
podataka, već poslovnih aplikacija koje, doduše, skoro uvek rade sa
većim količinama podataka.
Druga stvar je shvatanje relacionog modela. To je jedno formalno
predstavljanje realnog sistema čija je osnova da se realni objekti i
njihove veze predstavljaju relacijama. Praktična *realizacija* tog
modela je drugi problem: može biti na ovom ili onom nivou. Ali, po
osnovnom principu svi xBase derivati spadaju u grupu relacionih
sistema. Mada, nije nemoguće neki drugi model (mrežni, na primer)
realizovati u xBase-u. Kao što rekoh, to je pitanje realizacije.
clipper.856nbatocanin,
> Inace ova diskusija na SETNetu je vodjena i oko toga da li
> je izraz "baza podataka" ili samo "baza" adekvatan za .DBF
> datoteku ? Ja mislim da nije a vi?
Baza podataka ima više značenja. Osnovno značenje je otprilike
"organizovan skup podataka koji kontroliše sistem za upravljanje
bazom podataka". U širem značenju, baza uključuje i te podatke i
softver. To znači da DBF nije baza podataka. Međutim, iz ko zna kog
razloga se vrlo često sreće termin "baza" za DBF datoteku i kod nas i
u inostranstvu. Moja deviza je: važno je da se razumemo :)
clipper.857djelovic,
> Ne bi se baš složio, iz više razloga: prvi razlog je čitljivost
> programa. Na primer, čitaš neki program, a ono u sredini modula od
> 5000 linija (ne, ljudi nisu savršeni => ne pišu savršene programe)
> nađeš f(x). Da, prevodilac će javiti grešku ako X nije dobrog tipa,
> ali tebi treba u trenutku čitanja da znaš tačan tip. E, a za to moraš
> da trčiš na početak modula, ili da imaš editor sa dva prozora u svet ;)
Mađarska notacija nastala je (ili se prvi put primenjivala u većem obimu)
za pisanje Windows programa u C-u. Kao takva ona je inžinjersko rešenje
(prljavo al' efikasno) za problem koji ti navodiš, a nikako nešto čemu treba
težiti. Dalje, i kao rešenje za čitljivost programa Mađarska notacija je
uveliko zastarela. Ajmo redom:
1. "žitljivost programa". Danas skoro da ne postoji editor koji ne može da
prikaže više fajlova u raznim prozorima. U jedan prozor staviš tekst programa,
u drugi deklaracije, i problem je rešen. Štaviše, ukoliko koristiš programski
jezik koji ne podržava deklaracije funkcija (fuj!), uvek postoje programi koji
protrče kroz sors i povade ih, makar samo za dokumentaciju. Danas je ta
mogućnost ugrađena i direktno u većinu C kompajlera.
2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
promenljive direktno krši pravilo da "ime promenljive ne sme da bude kriptično
i treba jednostavno i jasno da govori čemu ona služi". (Iz ovog pravila se
naravno izuzimaju promenljive 'i' i 'j' koje svi koristimo kao brojače :).)
3. Dobar dizajn je zasnovan na podacima, i to je jedan od razloga zašto se
programski jezici okreću ka objektnoj orijentaciji. Ako me sećanje dobro služi,
i ti misliš da je OOP dobra stvar. Kako onda misliš da koristiš Mađarsku
notaciju kada nemaš pet osnovnih tipova podataka nego pet hiljada tipova
podataka, tj. sve klase koje si do sada napravio?
> Nije ni malo bezveze što FORTRAN ima konvenciju sa prefiksom
> promenljivih.
Od popularnih jezika samo Fortran i Bejzik koriste takve konvencije. Nije
slučajno da su oba ta jezika nastala u predhistojiji :) računarstva.
> Mislim da je deklarisanje promenljivih u strogo tipiziranim jezicima
> tehničko ograničenje koje će vrlo brzo (?) doći na red za
> usavršavanje. Klasična deklaracija na početku bloka je čista usluga
> koju programer pravi prevodiocu da bi ovaj lakše uradio posao. Mislim
> da će se to bolje rešiti. Razmislite: zašto ne bi prevodilac na
> osnovu primene određene promenljive sam provalio kog je tipa, a ako
> baš ne može da ukapira, nek pita. Jedini razlog koji mi pada na pamet
> je brzina rada, a to je već njegov problem ;)
Dva su razloga za deklaraciju promenjljivih:
Klasičan: Deklaracija promenljivih te rešava muke kada negde u programu
pogrešno napišeš promenljivu a to ne primetiš. Recimo, imaš promneljivu
"brojacLjudi" a na jednom mestu u programu napišeš "broavLjudi". Kompajler ti
ne javlja grešku, a program ne radi. Takođe, ukoliko se promenljive ne
deklarišu postoji zabuna kada globalna i lokalna promenljiva treba da imaju
isto ime, što sa količinom podataka u današnjim programima nije nimalo redak
slučaj.
OOP: Naslednik neke klase ponaša se isto kao i ona sama, tako da kompajler
nema načina da sazna na osnovu primene promenljive da li se radi o promelnjivoj
tipa X, ili nekog naslednika klase X.
P.S.
> ne, ljudi nisu savršeni => ne pišu savršene programe
Pokušavajući da napišem savršen C++ program često se setim metode William
J. Buckleya kako naslikati savršenu sliku: "Postanite vi savršeni i onda
slikajte prirodno."
clipper.858i.a.n.,
>> S obzirom da ti ovde pričaš o velikim sistemima (SQL i sl.), sasvim
>> sam saglasan da svaka tabela mora da ima primaran indeks.
Izgleda da sam bio nedovoljno precizan -- nisam naglasio da u
teorijskom smislu, u kome ga spominjem, postojanje primarnog ključa
ne povlači postojanje *indeksa* definisanog po njemu. Indeksi su
neophodni kod implementacije relacione baze, u teoriji nisu.
Znači, u onome što sam pisao: "mora postojati primarni ključ" = "ne
sme biti duplikata u tabelama". A Paradoxovske zavrzlame sa indeksima
su i meni gazile po nervima. ;)
clipper.859dr.grba,
>> Jel može šire objašnjenje zašto je primarni ključ neophodan? Još
>> bolje, ukoliko bi mogao da nađeš neki ilustrativan primer...
Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale kriterijume.
To znači, na primer (teoretski i praktično): ne smem izbrisati podatke
o nekom komitentu jer imam živu neku analitičku karticu sa njegovim
podacima. Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
dodatne mehanizme, obezbeđen je integritet podataka.
Osim toga, primarni ključ je jedinstven, bar bi trebalo da bude. Dakle,
ne mogu da imam dva komitenta 233-001.
clipper.860dr.grba,
>> saglasan da svaka tabela mora da ima primaran indeks. Međutim, kod
>> standardnih aplikacija koje se danas vrte u 99% firmi korisnik slog
>> koji se menja bira interaktivno, kroz nekakvu vrstu tabele (mislim
>> da se to na Clipperu zove TBrowse?), tako da postojanje primarnog
>> ključa koji ničemu ne služi a veštački se kreira zaista ničemu ne
>> služi (?). Kad treba - treba, al kad ne treba zašto
žovek pomenu PROJEKTOVANJE baza, a dobro projektovan sistem za rad
sa nekom bazom neće dozvoliti ad hoc brisanje - izmenu podataka,
bar ne legalno. Ne mali broj projektanata (barem dvojica koje poznajem)
vrše neko kriptovanje slogova baze ne zbog nekog straha od zloupotrebe,
nego da bi sprečili korisnika i njegove prijatelje da čeprkaju po bazi
na nepredviđen način.
clipper.861dr.grba,
>> usavršavanje. Klasična deklaracija na početku bloka je čista usluga
>> koju programer pravi prevodiocu...
...i sebi.
clipper.862dr.grba,
>> Da, ovde može uslediti jedna pošira rasprava o tome. Ono što je
>> sigurno to je da nijedan xBase jezik neće zadovoljiti sve uslove za
>> pravi relacioni sistem. Osnovni razlog za to je nivo obrade...
>> ...
>> njihove veze predstavljaju relacijama. Praktična *realizacija* tog
>> modela je drugi problem: može biti na ovom ili onom nivou. Ali, po
>> osnovnom principu svi xBase derivati spadaju u grupu relacionih
>> sistema...
Ovaj momenat pomalo liči na raspravu o sistemima koji (ne) zadovoljavaju
atribut "objektni". Izgleda da su kompromis i popustljivost u principima
projektovanja sistema postali sasvim uobičajena stvar. Na sreću ili na
žalost...
clipper.863ndragan,
/ tagove pojedinacno, ni CDX u celini, vec ih kreiraj. Sledi => Porast
/ CDX-a nije bug vec osobina. Sory.
Ružna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer ako
imaš dva istovetna tega, održavaju se oba, a praktično se čita samo onaj
prvi. Očekivao sam da kraj toliko drugih pametnih stvari prepozna
ponovno indeksiranje po nečem što već postoji.
U mom generatoru programa za indeksiranje stoji da uvek prvo obriše .cdx
fajl, pa onda da pravi tegove ispočetka. Očetkivao sam da je siks malo
pametniji.
Bue_ Ndragan
clipper.864bestbp,
Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas potrudili. Do sada
se odlicno pokazuje. Videcu dalje.
Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu bude ASPEN.
pozdrav
clipper.865domana,
Primetio sam da postujes teoriju (ja takodje) pa 'ajde da podelimo onda ovo
sto ja usput skupljam baveci se bazama...
Upozoravam da tekst nije u originalu vec je onako kako ga ja shvatam - pa
mozda negde i gresim...
******************************************************************************
12 ZLATNIH PRAVILA RELACIONE TEORIJE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(E.F.CODD 1970.)
! 1. PRIKAZ INFORMACIJE - iskljucivo na LOGICKOM NIVOU kao TABELARNI iznos
!!! 2. PRISTUP PODATKU - kombinacija imłna: tabele + kljuca + kolone
~~~~~~~~~~~~~~~~~~~~~~~~
! 3. OBRADA VRIJEDNOSTI kojih nema u relaciji ali se dobiju izvedeno
4. PROMJENLJIVI "ON LINE" KATALOG za tipove datoteke i programe
5. RAZVIJEN JEZIK unutar postojeceg relacionog modela
!! 6. AZURIRANJE SISTEMA nezavisno od konceptualne seme
7. AZURIRANJE TABELE - bilo po jednom ili vise podataka (skupova)
!! 8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta
! 9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme
10. NEZAVISNOST SIGURNOSTI na svim nivoima a ne u programima
11. NEZAVISNOST OD DISTRIBUCIJE PODATAKA i BAZE PODATAKA (lokacija)
12. NEMOGUCNOST SUBVERZIJE - INTEGRITET kod izmene i manipulacije podacima
------------------------------------------------------------------------------
12 ZLATNIH PRAVILA RELACIONE TEORIJE
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(E.F.CODD PC Magazine, May 1988.)
...tabela:
1. Struktura baze podataka se na LOGICKOM nivou prestavlja TABELOM,
na fizickom je to bilo sta, recimo dvostruko ulancana lista...
...pristup:
2. Pristup SVAKOM podatku (u relacionoj bazi podataka) moguc/ostvariv je
preko kombinacije imłna: tabele/relacije + kljuca + kolone/atributa
znaci BEZ: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- unapred zadatih pristupnih puteva
- rekurzija
- iteracija
...relaciona nula:
3. Postoji SPECIFICNI INDIKATOR/podatak za predstavljanje NULA VREDNOSTI
BEZ OBZIRA NA TIP PODATKA (razlicit od bilo kog znaka normalno
upotrebljivog). Sistem podrzava/omogucava i sve MEDJUSOBNE operacije
izmedju nula vrednosti (tog specificnog indikatora) i svih ostalih
tipova podataka.
...katalog, meta podaci:
4. Postoji KATALOG/recnik tipova PODATAKa i PROGRAMa koji se LOGICKI
prestavlja na ISTI nacin kao i sama baza podataka tako da KORISNIK
moze da pristupi tim META podacima koristeci ISTI jezik koji koristi
i pri pristupu svarnim podacima u bazi podataka.
..jezik:
5. Sistem mora posedovati BAR 1 jezik koji podrzava:
1 - definiciju podataka/DATA
2 - definiciju pogleda/VIEW
3 - manipulaciju podacima - kroz programe i interaktivno
4 - definiciju pravila integriteta
5 - granice transakcija/BEGIN - COMMIT - ROLLBACK
6 - autorizaciju/sigurnost podataka
...azuriranje sistema, SAMOodrzavanje:
6. AZURIRANJE SISTEMA nezavisno od konceptualne seme - algoritmom koji
za svaki definisani pogled/VIEW u TRENUTKU NJEGOVOG DEFINISANJA
OD STRANE KORISNIKA moze da odredi da li se i koje operacije
odrzavanja MOGU da primene na taj pogled/VIEW i koji te operacije
SMESTA U KATALOG baze podataka (po zelji korisnika).
...azuriranje tabela (baznih):
7. I nad BAZNIM RELACIJAMA i nad POGLEDIMA mogu se izvrsavati ne samo
operacije pretrazivanja vec i operacije odrzavanja baze podataka
bilo po jednom ili po vise podataka (skupova).
...fizicka nezavisnost:
8. FIZICKA NEZAVISNOST PODATAKA od logicke konstrukcije i koncepta -
i aplikacioni program i interaktivna komunikacija korisnika
OSTAJU NEIZMENJENI kada/ako se promeni:
- fizicka organizacija baze
ili - fizicki metod pristupa, record-manager, Btrieve
...logicka nezavisnost:
9. LOGICKA NEZAVISNOST PODATAKA kod promene konceptualne seme -
i aplikacioni program i interaktivna komunikacija korisnika
OSTAJU NEPROMENJENI kada/ako se dese BILO KOJE promene u
strukturi baznih tabela OSIM promena samih podataka koje
bazne tabele cuvaju, recimo promena redosleda polja/atributa
(a mozda i naziva polja - ipak malo teze...)
...integriteti u katalogu:
10. PRAVILA INTEGRITETA se definisu u okviru/trenutku definisanja baze
podataka i cuvaju u katalogu podataka, ne implementiraju se kroz
aplikacioni program/kod.
...nezavisnost od distribucije:
11. Sve gore navedene karakteristike nezavise od DISTRIBUCIJE podataka
i baze podataka, lokacije/mesta FIZICKOG smestanja podataka...
...integritet promena podataka:
12. Ako relacioni sistem radi sa nekim jezikom trece generacije koji
u jednom trenutku obradjuje/menja samo jenu n-torku/zapis
kroz taj jezik se NE MOGU zaobici pravila integriteta zadana
preko samog relacionog jezika.
******************************************************************************
E, sad, moja razmisljanja:
Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji
zadovoljva POTPUNO SVIH 12 principa; mozda im se najvise priblizi Magic...
Drugo,
relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini
SHVATANjA i PRISTUPA problematici OBRADE PODATAKA izmedju kojih narocito
svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno
elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a
razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise,
to su TEMELjI svega...
Gde su onda aplikacije koje se oslanjaju na ostale pristupe podacima ?
Jednostavno ih nema jer teoreticari NISU prakticari - kud' bi oni da pored
toga sto smisle nov nacin GLEDANjA NA PODATKE jos se bakcu i sa jezikom
koji bi podrzao sve to...
Bar se meni cini da tako stvari stoje, mozda i gresim, ali znam da postoji
standardan postupak da se Chen-ov model KONKRETNOG RESENJA nekog problema
PREBACI na relacio fazon. Cini mi se da teoreticari modela samo teoretisu
a kada resenje treba pretociti u aplikaciju - 'ajmo na relacione dijalekte...
A Chen-ov model je tako divan... Gledas graficki prikaz i BUKVALNO citas
RECENICE kojima svi mi tako prirodno komuniciramo medjusobom...
Da ne budem pristrasan evo i spiska ostalih modela:
- MODEL OBJEKT-VEZE (MOV) (Chen 1976) //obrati paznju na godinu !
- BINARNI MODEL PODATAKA
- PROSIRENI RELACIONI MODEL (RT/M) (Codd 1979) //u praksi je stari model !
- SDM-IBM (IBM)
- MODEL PODATAKA SEMANTICKIH MREZA (Roussopoulos & Mylopoulos)
- SEMANTICKI MODEL PODATAKA (SDM) (Hammer & McLeod 1978)
- PETRI-jeve mreze (Reti di Petri)
- SEMANTIC ASSOCIATION MODEL (SAM) (Stanlay)
- D-GRAPH MODEL (Weber)
- PALMER (Palmer)
- DIAM II (Senko)
Spisak je prepisan iz: _"Sistem analiza i modeliranje podataka", Mile Pavlic_
i to samo iz grupe modela podataka III generacije a kazu postoji i IV...
KnjiziCA je zaista zgodan PRIRUCNIK za nuzdu, preporucujem je svim
NAIVNIM UMETNICIMA koji su problematici obrade podataka pristupali direktno
kroz neki aplikacioni jezik (recimo Clipper) - i sebe ubrajam u iste...
Mozda tek posle njenog DETALJNOG iscitavanja naivac shvati da jezik na kome
se pisu aplikacije nije sustina vec samo KRAJNjI CIN celog postupka, da su
jezici orijentisani ka obradi podataka samo "igle i makaze" ili mozda oko
20% cele problematike... Jednostavno, po meni, treba bar zavrsiti FON ili
BAR citati njihove udzbenike ili BAAAR koristiti CASE alate...
Da malo "elaboriram" one "igle i makaze". Svi mi koji zivimo od pisanja
poslovnih aplikacija smo ustvari ZANATLIJE u smislu da kada nekom zatreba
odelo ode kod krojaca da mu ga PO MERI sasije. Ne sporim da, kao sto
krojaci treba dobro da barataju iglama i makazama, treba i "kreatori"
aplikacija da detaljno vladaju finesama jezika kojim MODELIRAJU ali
majstor se ne postaje cistom vestinom baratanja alatima svog zanata - treba
imata i nesto vise, ono sto razlikuje krojaca od modnog kreatora; vestina
igala i makaza je samo TRECI obavezan PREduslov (drugi je poznavanje
teorije a prvi je ideja, po meni). NajLepse od cele price je cinjenica da je
sivenje/kreiranje odela LICNI CIN stvaranja NECEG NOVOG - dakle MOZE
nastati i umetnicko delo (gde ja odoh...).
Izvinjavam se na opsirnosti sve u nadi da cu biti konstruktivan...
Miki
P.S. Prosto su mi smesne one tirade od "diskusija"
koje se bave tackama i zarezima...
Naiva...
clipper.866ppekovic,
>> 12 ZLATNIH PRAVILA RELACIONE TEORIJE
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> (E.F.CODD 1970.)
U knjigama sam najčešće čitao o kriterijumima za ocenu
relacionih SUBP-a (DBMS-a).
>> Prvo, svi kazu a i meni se cini, da ZASTA NE POSTOJI relacini jezik koji
>> zadovoljva POTPUNO SVIH 12 principa;
Tačno. Codd navodi da IBM-ov DB2 zadovoljava samo 7, a neki kao
Cullinet-ov IDMS/R ili CA Datacom, čak nijedan. Kritični su
uglavnom kriterijumi koji se odnose na pravila integriteta, zatim
održavanje pogleda, nula vrednosti, ditribucija, i dr.
>> relaciona teorija je samo jedna od ostalih - postoje i drugaciji nacini
>> SHVATANjA i PRISTUPA problematici OBRADE PODATAKA
Da, mrežni i hijerarhijski na primer, ali je relacioni model
najrasprostanjeniji i najviše SUBP-a (DBMS-a) podržavaju ovaj
model.
>> izmedju kojih narocito
>> svi isticu Chen-ov model OBJEKTI-VEZE. Model je zaista krajnje prirodno
>> elegantan jer, bar se meni cini, polazi od toga kako covek razmislja - a
>> razmislja na nivou OBJEKATA izmedju kojih pravi VEZE - i gotovo, nema vise,
>> to su TEMELjI svega...
Ne možeš porediti relacioni model i model objekti-veze jer
pripadaju različitim "generacijama" modela podataka. Takođe, niti
jedan do sada poznati DBMS ne podržava implementaciju modela
objekti-veze, već se ovaj model mora prevesti u neki model druge
generacije (relacioni, mrežni, hijerarhijski, ...) koji se zatim
implementiraju u neki od postojećih DBMS-a. Takođe, moguće je
model treće generacije prevesti i u modele prve generacije tj.
konvencionalne programske jezike.
Paya
P.S. Veliki deo podataka je iz skripte za vežbe i predavanja iz
predmeta "Baze podataka" autora prof. dr. Branislava Lazarevića.
clipper.867i.a.n.,
>> Po ovom, ako dobro shvatam, taj kriterijum obezbeđuje ostale
>> kriterijume. To znači, na primer (teoretski i praktično): ne
>> smem izbrisati podatke o nekom komitentu jer imam živu neku
>> analitičku karticu sa njegovim podacima.
Smeš, ako postoji mehanizam koji će obezbediti da budu obrisani i svi
podaci koji su vezani za njega. Drugo je pitanje da li je takvo
brisanje poželjno ili ne.
>> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
>> dodatne mehanizme, obezbeđen je integritet podataka.
U primeru koji navodiš, referencijalni integritet. Ideja je da se u
sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer
DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje
samo ako nema vezanih podataka, drugi briše i njih.
clipper.868bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
ct_bli arj 3414 Automatically overlaying CA-Clipper Tools with Blinker
Ustedite 20 Kb root prostora:
--------------
Most of the networking functions of CA-Clipper Tools are dynamically
overlayable with Blinker. The easiest way of taking advantage of this
is to split the original CL.LIB library in two seperate libraries, one
of them being automatically overlayable and one of them still having
to be linked into the root. If you own a copy of a Microsoft library
manager (LIB.EXE) you can create this two libraries easily by using
the batch file SPLIT_CT.BAT.
...
The script file CA-CON.LNK for Blinker shows how to use the two
libraries to create the CA-Clipper Tools sample CA-CON.EXE. The load
size displayed by Blinker using CTROOT.LIB and CTOVL.LIB is 248 KB
compared to 267 KB when using CT.LIB without any overlaying features.
clipper.869nbatocanin,
> Mađarska notacija nastala je (ili se prvi put primenjivala
> u većem obimu) za pisanje Windows programa u C-u.
"I (Simonyi) first used the Hungarian style in 1972. Since then,
programming teams at Xerox, Apple, and 3Com have used it, as well as
hundreds of Microsoft programmers in most Microsoft applications
(e.g. Multiplan, Word, and Excel) and also in large parts of
Microsoft Windows systems. Since its inception, many people have
contributed to the refinement of the Hungarian style"
> 1. "žitljivost programa". Danas skoro da ne postoji editor
> koji ne može da prikaže više fajlova u raznim prozorima. U
> jedan prozor staviš tekst programa, u drugi deklaracije, i
> problem je rešen. Štaviše, ukoliko koristiš programski
> jezik koji ne podržava deklaracije funkcija (fuj!), uvek
> postoje programi koji protrče kroz sors i povade ih, makar
> samo za dokumentaciju. Danas je ta mogućnost ugrađena i
> direktno u većinu C kompajlera.
Ovo je direktan argument meni u prilog. Ako uvek kada treba da
analiziram parče programa treba da otvaram dva prozora, pa da trčim
na deklaracije, pa search, ... Da ne govorim o ponovnom startovanju
kompajlera zbog generisanja deklaracija ;( Zar nije jednostavnije
potrebne podatke pročitati upravo na mestu na kome ti i trebaju? Ako
si radio na nekom iole većem (naročito timskom) projektu, prosto mi
je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da
smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa
za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se
lakše pratio i održavao program.
> 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
> promenljive direktno krši pravilo da "ime promenljive ne sme da bude
> kriptično i treba jednostavno i jasno da govori čemu ona služi"
Prvo, mađarska notacija ne podrazumeva navođenje prefiksa od samo dva
slova: može ih biti i manje ili više i odnose se na tip promenljive.
Dalje se mogu dodavati atributi promenljive (brojač, privremena,
save, ...) itd. U suštini, MN je *predlog* za oformljavanje celog
imena promenljive. E, sad, da je nečitko, ne slažem se: onaj ko čita
takav listing duže od 2 minuta navikne se da preskače prefiks pisan
malim slovima pri čitanju, a ako mu zatreba, tu je. Da su u "sredini"
programa potrebne dodatne informacije, dokazuje i pojava "kolor"
editora koji za sada boje oficijelne stvari kao što su rezervisane
reči i sl. Ne vidim prepreku da tako na neki način olakšam razumevanje
i mog dela ;)
> Kako onda misliš da koristiš Mađarsku notaciju kada nemaš pet
> osnovnih tipova podataka nego pet hiljada tipova podataka, tj. sve
> klase koje si do sada napravio?
Uopšte nije stvar u strogo formalnom pokrivanju svih klasa koje sam
kreirao. Dovoljno je za važnije napraviti mnemonik od 1-3 slova koji
označava objekte iz te klase pa da ih daleko lakše uočavam u
programima. Uostalom, dovoljno mi je samo "o" za "object", pa da bude
korak napred.
>> Nije ni malo bezveze što FORTRAN ima konvenciju sa
>> prefiksom promenljivih.
> Od popularnih jezika samo Fortran i Bejzik koriste takve
> konvencije. Nije slučajno da su oba ta jezika nastala u
> predhistojiji :) računarstva.
Nisam mislio da je ova osobina nešto što je i danas dobro, nego da se
još davno ukazala potreba za dodatnim informacijama o promenljivim.
> Recimo, imaš promneljivu "brojacLjudi" a na
> jednom mestu u programu napišeš "broavLjudi". Kompajler ti
> ne javlja grešku, a program ne radi.
Opet da ponovim: mislim da je deklarisanje promenljivih u strogo
tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na
red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje.
clipper.871saks,
>> Ruzna osobina, preuzeta iz originala. Stvar postaje bezvezna, jer
>> ako imas dva istovetna tega, odrzavaju se oba, a prakticno se cita
>> samo onaj prvi. Ocekivao sam da kraj toliko drugih pametnih stvari
>> prepozna ponovno indeksiranje po necem sto vec postoji.
Nije bas da istovremeno azurira i stari i novu verziju istog taga vec
se jednostavno stara verzija taga pretvara u nekoristan prostor.
Uostalom, evo navoda iz njihovog NG-a:
Q: Why does my .CDX keep growing when I re-create an existing tag?:
A: When an existing tag in a compound index (.CDX) is rebuilt using
INDEX ON ... TAG ... the space from the original tag is not
automatically reclaimed. Instead, the new tag is added to the end
of the file, causing the file size to increase.
You can use the REINDEX command to "pack" the index file. REINDEX
rebuilds each tag, eliminating any unused space in the file.
If you rebuild your indexes on a regular basis, it is recommended
that you either delete your .CDX files before rebuilding the tags
or use the REINDEX command to rebuild them instead.
Sasa
clipper.872petrovics,
>> u inostranstvu. Moja deviza je: vazno je da se razumemo :)
clipper.873smoki,
Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira.
Miloš
ps. mislim da se tako nekako zove.
clipper.874dr.grba,
>> 2. Opet "čitljivost programa". Dodavanje dva slova na početak imena
>> promenljive direktno krši pravilo da "ime promenljive ne sme da
>> bude kriptično i treba jednostavno i jasno da govori čemu ona
>> služi". (Iz ovog pravila se naravno izuzimaju promenljive 'i' i 'j'
>> koje svi koristimo kao brojače :).)
Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost.
Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske notacije.
BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C++++++++++.....
clipper.875dr.grba,
>> U mom generatoru programa za indeksiranje stoji da uvek prvo obriše
>> .cdx fajl, pa onda da pravi tegove ispočetka.
Nema šta, tako verovatno radi većina nas.
>> Očetkivao sam da je siks malo pametniji.
E, sad... Očetkaj malo bolje, možda nestanu fleke (:
clipper.876dr.grba,
>> Eeee, ljudi, ovaj BLINKER 3.0 je bas... Izgleda da su se bas
>> potrudili. Do sada se odlicno pokazuje. Videcu dalje.
Šta konkretno najviše voliš? Dual mode?
>> Usput , sto se tice Visual Objects-a, pravo ime bi trebalo da mu
>> bude ASPEN.
Radiš li sa njim? Imaš praktična iskustva? De, pričaj malo, zanima nas sve,
siguran sam.
clipper.877bestbp,
ASPEN nije jos zvanicno izasao. U uputstvu za Clip-4-Win od Skelton Softwarea
stoji:
"Aspen is a code name for the Windows xBase product that CA are busy working
on. It will no doubt be marvellous, but is not expected to be shipping for 6-9
months. You can use Clip-4Win to gain invaluable expirience with Windows raedy
for Aspen."
Ovo je iz jula '93.
Imam problem kod burazera na racunaru u vezi novog Blinker-a. Naime, on ima
386DX/33/240ÚM i instalirao sam mu Funcky II i CA Tools zajedno sa novim
Blinker-om 3.0. Medjutim , pri linkovanju on javlja sledece:
BLINKER : 1115 : FUNCKY88.LIB(_malloc) : '__str_alloc' :unresolved external
Funcky88.lib je na putanji i navedena je u link fajlu, ali on ovo i dalje
javlja. U drugim programima (examples od FUNCKY-ja) javlja po vise gresaka.
So, ako neko zna ...
Usput, evo jedan koristan program koji kupi sve podatke iz baza, probajte...
pozdrav
clipvars.execlipper.878djelovic,
> Dodavanje dva slova po mnemoničkom principu ničim ne krši jednostavnost.
> Sorry, ali nisam baš najbolje shvatio negiranje kvaliteta mađarske
> notacije.
Uzmi neki srpski tekst i dodaj na kraj svake reči u superskriptu slovo koje
označava šta je ona (p za pridev, g za glagol itd.). To mnogo manje smeta nego
par slova na početku promenljive a ipak će te izluđivati.
Sve ovo pričam zato što sam svojevremeno i ja koristio Mađarsku Notaciju.
Kao rešenje za jedan tadašnji problem ona je bila odlična. Danas, ona je
potpuno nepotrebna i, po mom mišeljnju, čak i kontraproduktivna.
> BTW, da li ti programiraš u Clipperu? Znam da si zaražen sa C+++++++++...
Ne programiram u Clipperu. Smatram da je on dobar za pravljenje baza
podataka zbog svojih low-level rutina, ali da je kao jezik dosta loše
koncipiran. Doduše, vidim da njegovi autori polako izbacuju iz njega razne
"arhaizme" i kradu iz drugih jezika koliko god mogu, tako da će se verovatno
kroz par verzija razviti u moderan jezik. Videćemo...
clipper.879djelovic,
> Zar nije lakše potrebne podatke pročitati upravo na mestu na kome ti i
> trebaju?
Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju
fusnote umesto da ih smeste direktno u tekst :).
> Ako si radio na nekom iole većem (naročito timskom) projektu, prosto mi
> je neverovatno da nisi došao do nekog sličnog rešenja. Sećam se da
> smo uvek u timovima uvodili neke prefikse za svakog člana ekipe, pa
> za funkcionalne celine i sl. u zajedničkim delovima koda kako bi se
> lakše pratio i održavao program.
Prefikse za svakog člana ekipe nikada nismo uvodili i ne znam čemu vodi
takva praksa? No, uvođenje prefiksa za različite module, ili u mom slučaju
hijerarhije, sasvim je normalna stvar. Na taj način se uvodi red u izvorni kod
i izbegava se "name space polution". No stavljanje prefiksa na imena funkcija
i/ili klasa sasvim je različita stvar od stavljanja prefiksa na promenljive.
> Opet da ponovim: mislim da je deklarisanje promenljivih u strogo
> tipiziranim jezicima tehničko ograničenje koje će vrlo brzo doći na
> red za *usavršavanje*. Znači, ne izbacivanje, nego usavršavanje.
Naravno. I kod i podaci se sve više kreću ka dinamičnim formama, pa će se i
mehanizmi deklaracije u skladu s time promeniti i usavršiti. S tim što sam ja
skeptik po pitanju tvog 'vrlo brzo' - ući ćemo mi u 21. vek pre nego što se to
dogodi.
clipper.880dr.grba,
>> >> Dakle, uvodeći *obavezni* primarni ključ, i (sigurno) neke
>> >> dodatne mehanizme, obezbeđen je integritet podataka.
>>
>> U primeru koji navodiš, referencijalni integritet. Ideja je da se u
>> sistemskom katalogu čuvaju i pravila za njegovo očuvanje, na primer
>> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta brisanje
>> samo ako nema vezanih podataka, drugi briše i njih.
Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se vrlo
zanimljivim alatom. Šta kaže praksa?
clipper.881d.petrovic,
Ă> -> Sa Blinker-om sam se ponovo rodio :)). Nije sporo prevođenje,
Ă> samo me -> nervira kad počne novi modul da me zeza pa pre RMAKE-a
Ă> (.rmk je po -> defaultu na "/n /a /l" moram zbog ručnog "clipper
Ă> novi /n /a" -> (bez /l) da čekam puno linkovanje.
Ă>
Ă> Nisam razumeo šta si hteo da kažeš, pogotovo onim "ručnog".
Pre nego što otkucam "rmake bla" moram "clipper truc /n /a"
clipper.882i.a.n.,
>> >> DELETE RESTRICTED ili DELETE CASCADES. Prvi slučaj dopušta
>> >> brisanje samo ako nema vezanih podataka, drugi briše i njih.
>>
>> Da li je ovo implementirano u Oracle-u ili Progress-u? žini mi se
>> vrlo zanimljivim alatom. Šta kaže praksa?
Oracle 7 nešto od toga ima, ako je suditi po reklamama. DB2 u novoj
verziji takođe. Za ostale ne znam. Stvar je u praksi i te kako
potrebna, a implementacija je problem utoliko što treba omogućiti da
mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe
razumne performanse celog sistema.
clipper.883ndragan,
/ se kreira zaista ničemu ne služi (?). Kad treba - treba, al kad ne
/ treba zašto onda sistem da još dodatno opterećuje programera
/ kreiranjem "veštačkog"
Da, to i jeste praktična mana toga. Banalan primer su dani pred
denominaciju, gde se iznos ukucava iz pet puta po 9000000...000, jer
broj sa nulom više ne može da stane, a numerička polja su već proširena
do daske. Pojavljuju se parovi, trojke, ... entorke istovetnih slogova.
Izmišljanje unikatnog ključa je nepotrebno - stavke imaju broj naloga,
datum i ostalo što im treba. Kad malo bolje razmislim, većini prometnih
datoteka uopšte ne smeta što je najčešće nemoguće napraviti unikatni
ključ od postojećih polja.
S druge strane, u .dbf sistemima su baze istovremeno sekvencijalne,
relativne i indeksne, dok su raniji sistemi ove tipove držali strogo
odvojeno: ako ste imali pristup po broju sloga, niste imali indekse i
obratno (VAX RMS, naprimer). Unikatni ključ je bio bitan, da bi se slog
uopšte mogao locirati. Nije se mogao menjati, ni duplirati. Paradoks
prati tu logiku; .dbf sistemi to ne moraju, i čini mi se da je zahtev za
postojanjem unikatnog indeksa nastao dok je takav sistem bio jedini
moguć. Situacija sa ovako komfornim indeksima s kojima je moguće
bukvalno da se igramo, zahtevaće doradu teorije.
Bue_ Ndragan
clipper.884ndragan,
/ Jes' vala, oduvek sam se čudio onim budalama koje u knjige stavljaju
/ fusnote umesto da ih smeste direktno u tekst :).
E, ozbiljno:
oduvek sam se čudio onim budalama koje u knjigama stavljaju fusnote
na kraj knjige umesto da ih smeste na dno strane
Bue_ Ndragan
clipper.885arazumenic,
-> Pre nego što otkucam "rmake bla" moram "clipper truc /n /a"
Ne moraš. Pogledaj još jednom moju poruku 11.636 iz ove konferencije.
Saša
clipper.886bestbp,
Da li je moguce zadati neki format PICTURE, tako da se pri unosu u GET polje
ono ponasa kao kasa, dakle ako se unosi 90000, da on ima zarez - 90.000,00.
Bolje receno, da unos ide s desne na levu stranu, a ne sa leve na desnu.
pozdrav
clipper.887fric,
> Uzmi neki srpski tekst i dodaj na kraj svake reči u
> superskriptu slovo koje označava šta je ona (p za pridev,
> g za glagol itd.). To mnogo manje smeta nego par slova na
> početku promenljive a ipak će te izluđivati.
Nije vic u izluđivanju, već da čitajući s leva u desno odmah
znaš o čemu se radi, a prvo veliko slovo u imenu na koje
se naiđe označava kraj prefiksa i početak samog imena.
> Kao rešenje za jedan tadašnji problem ona je bila odlična.
> Danas, ona je potpuno nepotrebna i, po mom mišeljnju, čak
> i kontraproduktivna.
U (glupom) kliperu nemaš tipove, ne moraš ništa da deklarišeš
na početku ... Kako drugačije, sem uz pomoć konvencija (u koje
spada i mađarska notacija), mogu sa kakvom-takvom preciznošću
znati na šta se odnosi neko _ime_ na koje naletim u sred
procedure: na logučku promenljivu, znakovnu, numeričku, niz,
polje u bazi (ne daj Bože), neku ko-zna-gde definisanu global
ili private ili parameter (sve gore od goreg) promenljivu ...
Idealna pravila za kliper bi po meni bila: strogo deklarisanje
svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija
i još neke konvencije (o imenima globalnih promenljivih i o
imenima polja u bazama), i sve treba da bude ok (valjda:).
Radio sam nekad u Moduli 2 (timski rad, veliki projekat) i
zavoleo njenu _strogu_ tipiziranost, case-sensitive & unlimited
(almost) length imena (procedura, modula, promenljivih), itd.
Doduše, bilo je ponekad kilavo (bez pomoći pametnog, 'uradi
umesto mene' editora) zaroniti u duboko ugnježdene .def fajlove
da bi se stiglo do pra-definicije nekog tipa podataka da bi se
se razjasnila njegova _prava_ suština. Lepa vremena to behu,
kad me nije mogao s*ebati neki variable-not-found error.
clipper.888nbatocanin,
> ali da je kao jezik dosta loše koncipiran.
Šta mu konkretno zameraš?
clipper.889nbatocanin,
> Prefikse za svakog člana ekipe nikada nismo uvodili i ne
> znam čemu vodi takva praksa?
Da, zaista nije neko rešenje, ali to je bio projekat od nekoliko
godina na kome je radilo kuso i repato. Skoro sve procedure su bile
PUBLIC, pa ajde ti izaberi neko ime koje neko već nije upotrebio ;) A
tek da u *tom* trenutku ne piše f-ju sa istim nazivom.
clipper.890nbatocanin,
>>> Usput , sto se tice Visual Objects-a, pravo ime bi
>>> trebalo da mu bude ASPEN.
>
> Radiš li sa njim? Imaš praktična iskustva? De, pričaj
> malo, zanima nas sve, siguran sam.
VO se *ne* zove Aspen: to je bio radni naziv projekta koji je započeo
Nantucket, a sada je deo VO. Imam ja neki tekst na nemačkom, al' ga ič
ne razumem :( Znam samo da gledam slike.
clipper.891nbatocanin,
> Ako neko ima NULLHERC.OBJ iz paketa DGX neka me emajlira.
> Miloš
Misliš li na NULEXHRC.OBJ iz dGE?
clipper.892ndragan,
/ potrebna, a implementacija je problem utoliko što treba omogućiti da
/ mehanizam dejstvuje za proizvoljan broj nivoa veza, a da se održe
Imao sam sličan problem par puta; recimo, u bazi kupaca ima nekih
indikatora (npr. šifra magacina iz kojeg pazari), koji se prevlače u
prometnu bazu. Onda, kad se indikator u matičnoj promeni (mušterija se
sad snabdeva iz drugog magacina), treba protrčati kroz prometnu i
prepraviti u svim stavkama. U neku ruku bi bilo elegantnije da se taj
indikator ne prepisuje u prometnu, nego čita iz matične, ali s druge
strane taj baš služi za grupisanje po magacinima kad se vuku izveštaji.
Verovatno se stvar može i elegantnije rešiti nekom SQL kombinacijom, ali
zasad stoji tako i radi pristojnom brzinom.
U većini slučajeva nema načina da se korisnik spreči da uništi neku
šifru - jer čak i ako se to zabrani iz aplikacije, on uvek može da nekim
drugim programom uleti u bazu i sve to pročačka ručno. Zasad se stvar
rešava banalnim upozorenjima, tj niko nije lud da brljavi po sopstvenim
podacima, i da posle doživljava zaslužene probleme baš u vreme završnih
računa. Međutim, ne bih se čudio da se pojavi neki uvređeni kućni
programer da to uradi iz osvete. DOS ne omogućava zaštitu.
Bue_ Ndragan
clipper.893dr.grba,
>> Da li je moguce zadati neki format PICTURE, tako da se pri unosu u
>> GET polje ono ponasa kao kasa, dakle ako se unosi 90000, da on ima
>> zarez - 90.000,00. Bolje receno, da unos ide s desne na levu
>> stranu, a ne sa leve na desnu.
Dremaš, a? (:
Pogledaj, za početak poruku (i skini priloženi fajl) 11.639, u kojoj
Aquarius predlaže jedno prilično kvalitetno rešenje. A usput pročitaj
i pratećE reference posle te poruke.
clipper.894dr.grba,
>> VO se *ne* zove Aspen: to je bio radni naziv projekta koji je
>> započeo Nantucket, a sada je deo VO. Imam ja neki tekst na
>> nemačkom, al' ga ič ne razumem :( Znam samo da gledam slike.
Potpuno isti slučaj: postoji neki bilten što izlazi u nekom nemačkom
'PC magazine' časopisu, a koji se bavi Clipperom. Tamo videh nešto
o Win verziji Clippera, ali sam, kao i ti, samo bespomoćno zurio u
ilustracije...
clipper.895ficus,
Pogledaj, za pocetak poruku (i skini prilozeni fajl) 11.639, u kojoj
Aquarius predlaze jedno prilicno kvalitetno resenje. A usput procitaj
i pratecE reference posle te poruke.
pOGLEDAH NABRZAKa predlozeno resenje i ... to je i meni padalo napamet ako sam
dobro provalio o cemu se radi ali .... :(((((( kolko sam provalio moram stalno
da se zezam sa preblock i postblock moja ideja i ja sam tako kod sebe uradio je
da se izmeni getsys.prg (funkcija aplykey kolko se secam) tako da standardni
readmodalpoziva tu drugu varijantu. doda se jos jedna proverica za tip
parametra i .... program ne zahteva nikakve izmene samo se ulinkuje novi getsys
i calc unos radi a u programu sve isto ko da se unosi numerik.
clipper.896saks,
Imam neki casopis QBS Software News, koji se bavi samo Clipperom.
Tu je izasao neki prikaza prvih utisaka o VO. Tu se ne kaze previse,
ali ima nekoliko bas lepih slika. Elem:
"Clipper programeri su na Techniconu bili impresionirani onim sto
VO pruza. Isti obuhvata elemente XBase, Clipper-a, VBasica, VC++-a i
Windows API-ja. Postojece aplikeacije se mogu direktno prebaciti u
njega. Radice pod Win-om kao prava W31 aplikacija, bez mem
ogranicenja, ali u karakter rezimu. Garantovano je 90+ posto
kompatibilnosti C5.01 i C5.2 sa VO. VO ima u sebi "form painter",
"menu painter", "report painter", "visual debugger" itd. Aplikacija
razvijena pomocu njega podrzava Multiple Document Interface lako i
brzo (zan li neko sta to znaci?).
VO-ov "Repositoru" uklanja potrebu za make fajlovima, automatski,
bez programerskih zahvata. Kad se klikne na "build button",
Repositoru automatski kompiluje samo one entitete aplikacije koji su
menjani. Entiteti imaju svoje browsere koji se automatski startuju u
zavisnosti od toga koji je entitet pozvan na izmenu.
Kod koji se dobija kompilacijom je pravi (ne pseudo) kod, brzi oko
60 puta od dosadasnjeg.
Najveca snaga VO-a lezi u "CommonView class library". To je GUI
biblioteka objekata. Ti objekti su svesni tipa podataka kojim
manipulisu i automatski predlazu browsere, formatiranje,
validaciju... Inicijalno VO database server podrzava operacije u DBF
i ODBC/SQL formatima."
Sasa
clipper.897dsisic,
Da li se nekad nekom desilo da program povezan blinkerom sa opcijama:
- BLINKER INCREMENTAL PAD ... radi, za razliku od
- BLINKER INCREMENTAL OFF gde se javlja nedefinisano
pucanje programa ( potpuna blokada )
na komandi :
SET RELATION TO ...
Potpuno je iskljucena mogucnost greske u postavljanju relacije
( to je prva SET RELATION komanda), inace radi se o CLIPPER 5.2c.
Greska se ne javlja pod CLIPPER 5.01a.
Greska se javlja prilikom upotrebe blinkera 2.01 i 3.0.
RDD je SIXCDX.
Vrlo cudno !?
clipper.898dpredovic,
Jel to stvarno samo ja imam problema sa Blinkerom 3.0 i Funcky-jem,
ili svi ostali ćute? Problem sam locirao na __videoinit, ali šta sa
tim?
Cu, Dejan
clipper.899bestbp,
Probaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam imao slicne
probleme , a izgleda da on mesa razlicite LIBeĘ._nä
pzdrav
clipper.900saks,
FUNCKY Ima problema sa EXO-Space-om. Tako na primer i FUNCKY-jeva
funkcija FRead() izaziva blokadu masine linkovane sa ES-om. Citao sam
pre par dana da je F sada kompatibilan sa istim, pa verovatno treba
potraziti novi upgrade. Ako je kompatibilan sa ES-om, verovatno je i
sa B3.0, jer je sustina problema u radu u protected modu.
Sasa
clipper.901dpredovic,
> Probaj da izbacis neku FUNCKY biblioteku iz CL.BAT. I ja sam
> imao slicne probleme , a izgleda da on mesa razlicite LIBeĘ._nä
> pzdrav
Da izbacim neki lib? Ne moze, svi trebaju...
clipper.902smoki,
Da, treba mi NULEXHRC.OBJ i DGEHRC kao i iskustva sa DGE-om na Herc-u.
HK
Miloš.
PS. DGEHRC.OBJ :)KKK
clipper.904neman,
> podacima, i da posle dozivljava zasluzene probleme bas u
> vreme zavrsnih racuna. Medutim, ne bih se cudio da se
> pojavi neki uvredeni kucni programer da to uradi iz
> osvete. DOS ne omogucava zastitu.
>
> Bue_ Ndragan
Mada je poruku potpisao ndragan, ide mi u soru kao rzoltan, ali nema veze :)
Ja nameravam da bas zbog tog problema uvedem kontrolni znak za svaki zapis
a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je
zgodan onaj programcic Clipvars
neman
clipper.905bestbp,
//a da u samom programu proverim definiciju dbf datoteke. Glede toga, bas je
//zgodan onaj programcic Clipvars
Hvala, hvala. Nadao sam se da ce vam koristiti kao sto i meni koristi.
pozdrav
clipper.906cnenad,
Instalirao sam novi BLINKER 3. i primetio da nešto nije u redu sa
inkrementalnim linkovanjem. Ubacio sam u LNK datoteku BLI INCREMENTAL ON,
mada po NG-u to je stanje po DEFAULT-u. Svako linkovanje mu traje oko 12-14
sec. dok 2.01 INCREMENTAL radi oko 0.4-0.6 sec.
Da li treba još nešto da se podesi ?
clipper.907arazumenic,
Juče sam saznao tužnu istinu.
Htedoh da isprobam NUM2CALC, pustih kompajler, kad ono ne može da nadje
getexit.ch. Pogledam lepo na mestu gde bi trebao da bude, kad tamo su
svi ostali .ch fajlovi, samo ovog nema. Verovatno sam ga greskom izbrisao.
Stoga molim dobru dušu da mi gorepomenuti fajl pošalje.
Saša
clipper.908gari,
Evo ti getexit.ch (Clipper 5.2c)
Nadam se da ce pomoci.
pozdrav, Gari.
getexit.chclipper.909ndragan,
/ svega, nema makroa, kompajliranje /w, uz sve to mađarska notacija
Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje
vreme makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno -
makroi ti omogućuju da prenosiš imena ili delove imena procedura,
funkcija, .fr? i drugih fajlova kao _argumente_ u potprograme opšte
namene.
Blago rečeno, ne bih mogao da živim bez toga.
Bue_ Ndragan
clipper.910bulaja,
│Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u poslednje vreme
│makroe zamenjujem sa Eval ili (ime) gde ima smisla, ali svejedno - makroi
│ti omogućuju da prenosiš imena ili delove imena procedura, funkcija, .fr?
│i drugih fajlova kao _argumente_ u potprograme opšte namene.
└───
Bljak, discusting. :)
Jesi li nekad prosao pored nekog CODE BLOCK-a?
clipper.911arazumenic,
-> Evo ti getexit.ch (Clipper 5.2c)
Zahvaljujem.
Saša
clipper.912arazumenic,
Povodom NUM2CALC. Fino uradjeno.
Postoji par sitnih problema koje sam ustanovio isprobavajući.
1. Ako se kreira get objekt za unos promenljive nVrednost, a nVrednost nije 0,
onda bi trebalo da pritiskom na prvu cifru obriše prethodnu vrednost, kao
što to radi "normalan" READ.
2. Kurzor nije na pravom mestu ako se stavi picture "čE 999,999.- ". Možda ovo
i nije toliko bitno, ali kvari utisak.
3. nVrednost se mora zadati na sledeći način: nVrednost := 0.00, jer na obično
nVrednost := 0 javlja se isti problem kao i pod 2.
Nadam se da će se autor ovog veoma korisnog dodatka potruditi da ovo ispravi,
jer smatram da ovo zaslužuje da se nadje u predloženom SEZAM.LIB.
Saša
clipper.913djelovic,
> Šta mu konkretno zameraš?
Uffff... puno toga. Clipper je, po mom mišeljnju, najviše osakaćen dBase
kompatiliblnošću, pa tamo i treba potražiti njegove najveće mane: mali broj
osnovnih tipova podataka, nepostojanje struktura i unija, nekonzistentnu i lošu
sintaksu, slabu tipiziranost podataka i sl.
Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da je po
meni i C++ daleko od idealnog jezika, zbog svoje šugave C sintakse. Najbliže
idealu bi čini mi se bio nekakav Turbo Pascal 5.0 + objektne ekstenzije
identične onima iz C++-a. Na žalost, taj je voz već propušten :(.
P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju? Ako
nije, eto još jednog minusa :(.
clipper.914ndragan,
/ Bljak, discusting. :)
De gusibus non est disputandum :). Ovo mi omogućava da pravim rutine
opšte namene, koje rade jedan deo posla, a kao parametre im prosleđujem
druge stvari, te upravo postižem ono što je cilj modularnog
programiranja: manje koda, manje ponavljanja.
/ Jesi li nekad prosao pored nekog CODE BLOCK-a?
Hm, u firmu stiže ukupno jedan primerak Računara te promakne da ga ne
primetim, a kad je to bilo na jelovniku imali smo nesporazum sa
pretplatnom službom, ili sam iz nekih drugih razloga džonjao na času...
Jel može u kratkim crtama šta je tu suštinski novo?
Bue_ Ndragan
p.s. nisam potencijalni kliperaš, nego radoznao.
clipper.915.bale.,
> P.S. Da li je u Clipperu moguće odvojiti definiciju i implementaciju?
> Ako nije, eto još jednog minusa :(.
Pa Clipper je polu-interpreter. To razdvajanje mu dođe samo kao još
jedna komplikacija.
clipper.916bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
bumenu14 zip 12460 BuMenu 1.4, poboljšani sistem menija za Clipper(bulaja)
04.02.94 - v1.4
─────────────────
- dokumentacija u obliku NG (Norton Guide)
- ukljucena BuMenu.ch include datoteka za lakse koriscenje BuMenu
sistema i emulaciju standardne @..PROMPT.. i MENU TO.. sintakse
- ispravljene jos neke sitnice, samo se vise ne secam koje :)
02.09.93 - v1.31 (never released:)
──────────────────
- ispravljen mali bug :) u bu_MenuColor(), zbog koga nije Ok radilo
ne-automatsko podesavanje boja
clipper.918fric,
> Nema makroa? žoveče, pa vraćaš se u kameno doba. Dobro, u
> poslednje vreme makroe zamenjujem sa Eval ili (ime) gde
...
> Blago rečeno, ne bih mogao da živim bez toga.
Well, _teoretksi_, upotrebom kodnim blokovima je moguće
izbaciti potrebu za makroima.
Makroe, kaže dalje teorija, treba izbegavati jer se zbog
njih (ako se samo jednom pojavljuju u kodu) ulinkljuje :)
i ceo interpreter za iste. Drugi razlog za izbegavanje istih
je, normalno, pouzdanost: kompajler ne može da provali da li
ono što je protureno kroz makro ima smisla; error bupne tek
kad se makro lepo razvije :)
U praksi, makroe i dalje koristim :) ponekad kad me mrzi da
provalim kako bih isto uradio sa kodnim blokovima.
clipper.919vlaslo,
hi :-)
da li neko moze da mi objasni oblik ntxXXX.obj filea u clp 5.2
jer zeleo bih da napravim index za madjarski jezik.
cu
clipper.920drdjokic,
Imam sledeci problem. U mrezi koristim svoj program, kada posaljem stampu
na stampac on ne reaguje. Stampa tek kada izadjem u DOS. Isti problem imam i sa
nekim komercijalnim softverom. Sta da radim ?
Hvala u napred !
clipper.921bulaja,
Moze li se nekako iz #command / #translate direktiva pristupati
članovima niza? Standardnim načinom aNiz[i] to naravno nije moguće,
pošto pretprocesor [ ] smatra kao separatore opcionih argumenata.
Pod rešenjem ne podrazumevam pravljenje neke funkcije kao što je:
FUNC ArrayElement (aArray, nIndex)
RETURN aArray[nIndex]
:) već me interesuje da li #command/#translate omogućavaju direktan
pristup članovima niza?
clipper.922cnenad,
ŁŁŁ - ispravljene jos neke sitnice, samo se vise ne secam koje :)
Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan na
ekranu ?
clipper.923dsisic,
Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK
da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a.
clipper.924nbatocanin,
>> Šta mu konkretno zameraš?
> mali broj osnovnih tipova podataka,
Da, ovde bi se moglo dodati ponešto...
> nepostojanje struktura i unija
Strukture on ima: kako drugačije da zoveš ovo: {1, "ABC", Date()}.
Što se tiče unija, nisam baš lud za njima: to je mašinska caka za
uštedu prostora koji se u Clipper-u ne štedi ni na mnogo važnijim
mestima ;)
> nekonzistentnu i lošu sintaksu,
Paaa... Ne bih se baš složio. Šta je nekonzistentno? Meni jedino
smetaju "doslovni argumenti" (USE Test, a ne USE "Test"), ali i to je
sad sređeno.
> slabu tipiziranost podataka i sl.
;) E, ovde se ne slažemo. Meni čak odgovara netipiziranost. Izgleda
da je najbolje rešenje zlatna sredina primenjena u VO: 'oš
tipizirane, 'oš netipizirane podatke, pa biraj :)
> Da se sada po meni ne bi osulo drvlje i kamenje, odmah da naglasim da
> je po meni i C++ daleko od idealnog jezika, zbog svoje šugave C
> sintakse. Najbliže idealu bi čini mi se bio nekakav Turbo Pascal 5.0
> + objektne ekstenzije identične onima iz C++-a. Na žalost, taj je voz
> već propušten :(.
C je svoje pristalice dobio tako što je bio prvi jezik koji je zaista
oslobodio programera: lično me je strašno nerviralo što kad radiš u
nekom jeziku ne možeš sve da uradiš u njemu, nego spajaj sa ovim, pa
sa onim, itd. C je tu napravio revoluciju - prevodilac ti skoro kaže:
"bato, piši šta oćeš, pa šemo da vidimo". I to je nešto što se i meni
kao programeru zaista sviđa - uostalom, ko voli ograničenja? E, sad:
naravno da se tako nešto i gubi. Pascal (ili Modula) su mnogo lepši
jezici za čitanje, ali nisu postali tako popularni uglavnom samo zato
što su imali glupa ograničenja (je*eš jezik bez stepenovanja). Eto,
Borland je dodao par caka u TP i vidite šta je napravio. No, tu smo
gde smo i nema nam izlaza ;) A da je voz propušten, nisam siguran -
ko zna šta će sutra biti...
> P.S. Da li je u Clipperu moguće odvojiti definiciju i
> implementaciju? Ako nije, eto još jednog minusa :(.
Slušaj, razmišljanje ti je kontekstno vezano: probaj malo da se
prebaciš u drugu klasu problema. Clipper je sa te strane tipičan
izvršibilan jezik: čak su i deklaracije poput PUBLIC izvršne naredbe.
Tačno, ima to nedostataka. Međutim, imaj u vidu pri proceni Clipper-a
da su neke stvari zaista originalne: pretprocesor, koncepcija core
jezika kome pretprocesor daje finalni izgled; kod blokovi - jedna
zaista odlična ideja - *akcije* koje se tretiraju kao podaci (sasvim
u duhu OOP-a); potpuno modularna struktura: pristup bazi podataka,
terminal, GET sistem, obrada grešaka... Naročito sistem za obradu
grešaka.
clipper.925bulaja,
│Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi OK
│da ga tutnem ovde, ako ni to ne moze, bicu dostupan preko mail-a.
└───
Baci ga meni na mail :), pa ako može da ide u dir (a trebalo bi
da može:), prebacicu ga.
clipper.926bulaja,
│Jel ono sa MESSAGE ako je negde na sredini pa seče ram koji je iscrtan
│na ekranu ?
└───
Nemam pojma, uopšte ne koristim MESSAGE :)).
clipper.927ndragan,
/ ono što je protureno kroz makro ima smisla; error bupne tek
/ kad se makro lepo razvije :)
Nisam rekao da to ne zahteva stanovitu disciplinu ;). Ali je zato moćna
stvar kad uklaviriš šta sve možeš da uradiš.
/ U praksi, makroe i dalje koristim :) ponekad kad me mrzi da
/ provalim kako bih isto uradio sa kodnim blokovima.
Ama u čemu je stvar sa kodnim blokovima? Samo čujem priče o tome a niko
da provali poentu.
Bue_ Ndragan
clipper.928dvesic,
Naravno da moze !
Dovoljno je da ispred [ MM] dodas \ i resen problem !
(provaljeno probanjem ne znam da li pise i u dokumentacijMi)
Pozdrav,
Dejan.
P.S. Posto odgovaram On-Line, pitanje je bilo na referenciranje
elemenata niza u xcommand/xtranslate direktivama pretproc.
clipper.929djelovic,
> Imam sledeci problem. U mrezi koristim svoj program, kada posaljem stampu
> na stampac on ne reaguje. Stampa tek kada izadjem u DOS. Isti problem imam
> i sa nekim komercijalnim softverom. Sta da radim ?
Ako misliš na mrežni štampač, on štampa tek posle određenog vremenskog
time-outa. Možda je u tome problem?
clipper.930djelovic,
> Strukture on ima: kako drugačije da zoveš ovo: {1, "ABC", Date()}.
Ja to zovem "niz" :). Clipperovi nizovi u koje može svašta da se trpa pri
dinamičkom pogledu (objekti i tokovi podataka) na sistem možda i liče na
strukture, ali u statičkoj slici sistema (procedure i podaci) oni su
kilometrima daleko.
Struktura je, kada se definiše, novi tip podataka potpuno ravnopravan sa
onim koje neki jezik već nudi. Ako uzmemo da je pravilan dizajn "data driven",
onda je jasno da su strukture veoma bitne jer omogućuju da se tipovi realnih
objekata, klase, što bolje preslikaju u program.
U vezi Clipperove slabosti sa tipovima podataka: Ameri imaju izreku "when
the only tool you've got is a hammer, everything starts looking like na nail."
Strašno često vidim Clipper programere kako koriste tabele tamo gde bi mala
uvezana lista ili nešto slično bilo na mestu :(. Znate li vi ljudi za itša
drugo sem tabela? :)
> ;) E, ovde se ne slažemo. Meni čak odgovara netipiziranost. Izgleda
> da je najbolje rešenje zlatna sredina primenjena u VO: 'oš
> tipizirane, 'oš netipizirane podatke, pa biraj :)
Jel znaš kako je nastala objektna orijentacija? Iz potrebe! Naime,
strukturirani programi su udarili u zid kada su došli do nekih 100,000 linija.
Postali su užasno teški za održavanje i proširivanje, a često se dešavalo da
jedna ispravljena greška unosi pet novih u program.
Iz istih razloga je nastalo strukturirano programiranje, jaka tipizacija
podataka, provera argumenata pri pozivu funkcije i slične "moderne" tekovine:
da bi se programi preko neke kritične veličine lakše održavalii proširivali.
Rešenje koje nudi jaku tipiziranost a u isto vreme i veliku slobodu pri
manipulaciji podacima jeste dinamička tipizacija koju implementira recimo
Smalltalk, a moja opklada je da će je implementirati i Clipper kroz
verziju-dve.
> Tačno, ima to nedostataka. Međutim, imaj u vidu pri proceni Clipper-a
> da su neke stvari zaista originalne: pretprocesor, koncepcija core
> jezika kome pretprocesor daje finalni izgled; kod blokovi - jedna
> zaista odlična ideja - *akcije* koje se tretiraju kao podaci (sasvim
> u duhu OOP-a); potpuno modularna struktura: pristup bazi podataka,
> terminal, GET sistem, obrada grešaka... Naročito sistem za obradu
> grešaka.
Mane koje Clipper ima su većinom zaostaci iz dBase dana kojih će se on sa
vremenom rešiti. Clipper ima sjajnu budućnost jer je interpretiran, što mu
omogućuje fleksibilnost kakvu kompajlirani jezici nikada neće moći da imaju.
Kodni blokovi su upravo odličan primer toga što interpreter može da uradi dok
kod kompajlera to ide dosta nategnuto, kroz pointere na funkcije. Toliko mi se
sviđaju da ću da poludim što ih C++ nema :).
P.S. GET sistem baš i nije neki argument u korist Clippera, jer je:
a) prevaziđen
b) lako se implementira u bilo kom jeziku
c) ne nudi ništa posebno
Takođe, obrada grešaka u Clipperu je zbog toga što je interpeter zaista
dobra, ali ima i boljih. Ada već odavno a C++ odskora implementiraju izuzetke,
exceptions, koji de facto predstavljaju najbolji način za kontrolu grešaka do
danas. čivi bili pa videli.
clipper.932herak,
> Imam sledeci problem. U mrezi koristim svoj program, kada posaljem stampu
> na stampac on ne reaguje. Stampa tek kada izadjem u DOS. Isti problem imam
> i sa nekim komercijalnim softverom. Sta da radim?
Ne znam o kojoj mreži je reč, ali ako je Novell, ovo se najčešće dešava zbog
dve stvari:
1) Nije dobro (ili uopšte) startovan capture (mada sumnjam).
2) Nije zatvoren lpt port.
Ovo drugo je verovatnije, jer sudeći po tome da ipak štampa kada se
normalno izadje u DOS, a to je trenutak kada program zatvara sve fajlove,
strimove (lpt port je jedan od njih), vrata, šlic...
Pogledaj, daklem, svoju funkciju za štampanje i po izlasku iz funkcije
(potprograma) zatvori port.
Kliper, na žalost, ne znam, tako da ne znam ni kako, ni da li se za
štampanja prave posebne funkcije ili postoje gotove koje otvaraju port,
štampaju...Simptomatika je, medjutim, tipična tako da mislim da će ti ovo
pomoći.
Pozdrav, Herak.
clipper.934kermit,
Uzmi bilo koju biblioteku za rad u mrezi i pornadji
komandu koja daje znak da je stampanje zavrseno u
netto mislim da bese ft_flpt() flush lpt port i tvoj problem
je resen !!!
Kermit
clipper.935fric,
> Imam sledeci problem. U mrezi koristim svoj program, kada
> posaljem stampu na stampac on ne reaguje. Stampa tek kada
> izadjem u DOS. Isti problem imam i sa nekim komercijalnim
> softverom. Sta da radim ?
>
> Hvala u napred !
Na početku štampe stavi SET PRINTER TO cPrintPort
Na kraju štampe stavi samo SET PRINTER TO
You are well come !
clipper.936dr.grba,
>> Ali je zato moćna stvar kad uklaviriš šta sve možeš da uradiš.
Da li će mi neko objasniti kako se može raditi bilo šta kad
se uđe u klavir? Pa još ako je pijanino, bože blagi...
>> Ama u čemu je stvar sa kodnim blokovima? Samo čujem priče o tome a
>> niko da provali poentu.
Pa u tome je i poenta, da ne shvatiš u čemu je stvar. Je*eš jezik
bez takvog elementa.
P.S. Sorry, folks, moram malo da udaram kontru komšiji, i on peca nas (:
clipper.937snemcev,
>> Baci ga meni na mail :), pa ako može da ide u dir (a trebalo bi
>> da može:), prebacicu ga.
A ako ne može, opet znaš gde ćeš ga prebaciti ;))
clipper.938vlaslo,
Evo saljem vam moj skromni program, pa ga vi upotrebite potrebi
cu :-)
spec.zipclipper.939nbatocanin,
> da li neko moze da mi objasni oblik ntxXXX.obj filea u clp
> 5.2 jer zeleo bih da napravim index za madjarski jezik.
Šta podrazumevaš pod NTX za mađarski? Ako hoćeš sortiranje po nekom
kodnom rasporedu, dovoljno je da napraviš par funkcija.
clipper.940nbatocanin,
> :) već me interesuje da li #command/#translate omogućavaju
> direktan pristup članovima niza?
a\[ i \]
clipper.941nbatocanin,
> Stigao je patch za SIXCDX 1.5. Po nekom mom rezonu bilo bi
> OK da ga tutnem ovde, ako ni to ne moze, bicu dostupan
> preko mail-a.
To! Moram javno da izjavim da je SIx RDD jedan od najboljih proizvoda
koji sam ikada video :)
clipper.942cnenad,
ŁŁŁ Nemam pojma, uopšte ne koristim MESSAGE :)).
U dokumentaciji si naveo da ako koristim CL 5.01. BUMENU.LIB je potrebno
prevesti ponovo. Šta sve tačno treba uraditi ?
clipper.943rzoltan,
/ ono što je protureno kroz makro ima smisla; error bupne tek
/ kad se makro lepo razvije :)
Nisam rekao da to ne zahteva stanovitu disciplinu ;). Ali je zato moćna
stvar kad uklaviriš šta sve možeš da uradiš.
/ U praksi, makroe i dalje koristim :) ponekad kad me mrzi da
/ provalim kako bih isto uradio sa kodnim blokovima.
Ama u čemu je stvar sa kodnim blokovima? Samo čujem priče o tome a niko
da provali poentu.
Bue_ Ndragan
clipper.944ndragan,
/ smetaju "doslovni argumenti" (USE Test, a ne USE "Test"), ali i to je
Da, to je i meni smetalo kad sam se prvi put sreo s Kliperom (u leto 88,
dok je S87 još bio svež). Onda sam ukapirao da tih implicitnih navodnika
ima tušta i tma, i da je kompajler dovoljno pametan da ih sam posadi gde
treba.
Iduće godine sam uleteo u foks i uopšte se nisam čudio. Nek mašina
odradi svoje, a ja imam o čemu da vodim računa.
Bue_ Ndragan
clipper.945ndragan,
/ Pod rešenjem ne podrazumevam pravljenje neke funkcije kao što je:
Al me vučeš za hezik:
AELEMENT(<array>, <expN1> Š, <expN2>Ć)
───────────────────────────────────
Returns array element's number from its row and column subscripts.
Return value - Numeric
───────────────────────────────────
Some FoxPro functions (ACOPY(), ASCAN() , ASORT() ... ) that manipulate
two-dimensional arrays require that elements be referred to by their
element number. AELEMENT() facilitates conversion from subscripts to an
element number for these functions. The corresponding row and column
subscripts may be returned from an element number with the ASUBSCRIPT()
function.
Bue_ Ndragan
clipper.946bulaja,
│U dokumentaciji si naveo da ako koristim CL 5.01. BUMENU.LIB
│je potrebno prevesti ponovo. Šta sve tačno treba uraditi ?
└───
Clipper BuMenu.prg /n /w
TLib BuMenu.lib +-BuMenu.obj // ili Lib umesto TLib
clipper.947dvesic,
Cao !
Vidim da ste se zainteresovali za kodne blokove, a Bulaja
nesto zauzet, pa da mu pripomognem malo :)
Kodni blok je totalno nova koncepcija u Clipper jeziku.
Kodni blok je i tip podatka i inline funkcija. Tacnije kodni
blok je iskompajlirani deo koda na koji se moze referisati.
Osobine kao podatak :
Moze se dodeljivati promenljivama, prenositi kao
argument funkcijama i vratiti kao rezultat
funkcije.
Kao funkcija :
Moze imati argumente, i moze vracati rezultat svog
izracunavanja.
Posto ovo gore sto napisah ni meni nije bas najjasnije,
probacu kroz primere :
Definicija kodnog bloka je :
{ | opcionalni parametri odvojeni zarezom | Telo kodnog bloka }
Izracunavanje kodnog bloka se radi preko xxEval funkcija :
Eval( cbName [,parametri kodnog bloka] )
Rezultat je izracunata vrednost bloka za date
parametre, ako ih ima.
aEval( aNiz, cbIme ,[nStart],[nEnd] )
Kodni blok se izracunava sa svaki element niza
pocev od nStart do nEnd (ako ih nema, ceo niz je
u pitanju). Blok mora (cuj, mora - treba) imati
definisan jedan formalni parametar; on zamenjuje
elemenat niza koji mu se sukcesivno prosledjuje.
dbEval .... Pogledajte u Norton Guid-u
Primeri :
A := {|| Qout( RecNo() / LastRec() ) }
Eval( A )
// Daje procenat predjenosti baze
QOut( Eval( {|x,y| x + y } , 1, 2) )
// daje 3 ;)
Vise naredbi u kodnom bloku se odvaja zarezima :
A := {|x,y,z| QOut("Argumenti su ") , ;
QOUT(x,y,z) }
Sada kada ste dobili predstavu (dal' ste ? ;) ) o tome kako se
definisu i izracunavaju, pitanje je : Cemu to sluzi, a uz to i
ne radi ?
Primena je neverovatna. Preko 40% svih komandi i funkcija je
realizovano preko kodnih blokova : SUM, AVERAGE, DELETE FOR,
REPLACE FOR... za detalje, koga zanima, pogledajte fajl
\clipper5\include\std.ch (standardni header).
U prakticnom programerskom zivotu, omogucava neverovatnu
fleksibilnost. Skoro na svakom mestu gde su makroi mogu
se zameniti kodnim blokom.
Pri tome se kompajliraju samo jednom, izvrsavaju trenutno.
Prakticni primeri :
Neka je vas funkcija definisana na sledeci nacin :
MojaFunkc(.......,cImeFunkcije)
gde je cImeFunkcije string sa imenom funkcije koji
preko makroa izvrsavate tj. &cImeFunkcije
Ako ste pozivali funkciju sa
MojaFunkc(........,"NekaFunk()")
biva pozvana i izvrsena NekaFunkc().
Sada je dovoljno zameniti
&cImeFunkcije sa Eval( cImeFunkcije) ,
"NekaFunk()" sa {|| NekaFunk() }
i dobijate ekvivalent sa gornjim uz mnogo vise pogodnosti.
Ili, napravite opsti Browse-r nad bazom, koji bi za razne baze
trebao razlicito da reaguje na odredjene tastere.
Nista lakse; neka jedan od parametara vaseg browse-ra bude
dvodimenzionalni niz koji sadrzi parove { nKey, cbBlok } ;
sada, ako se pritisne taster nKey izvrsi kodni blok cbBlok :
funkciju, brisanje sloga, RECALL sloga, ili bilo sta drugo sta vam
padne na pamet :
Function Browser(....,aAkcije)
^--------- pominjani dvodimenzionalni
niz
Primer poziva :
Browser(....., { { K_DEL, {|| If( Deleted(), ;
dbDelete(), ;
dbRecall ) },;
{ K_ENTER, {|| EditRec() } , ... })
// Deo koda koji obradjuje pritisnuti taster.
A := Inkey (0)
If ( Tmp:= aScan( aAkcije, {|x| (x[1]==A) } ) <> 0
Eval( aAkcije[Tmp][2]
Endif
Zar nije lepo i elegantno ?
Raspisah se. Ako nekog jos nesto interesuje ( kako deo koda sa
makroom zameniti kodnim blokom i sl ) nek samo samo pita.
Budite pozdravljeni !
Dejan.
clipper.948dejanr,
Hvala na zanimljivom i korisnom opisu :)
clipper.949ficus,
:)> Sta mu konkretno zameras?
:) Uffff... puno toga. Clipper je, po mom miseljnju, najvise osakacen dBase
:) kompatiliblnoscu, pa tamo i treba potraziti njegove najvece mane: mali
:) broj osnovnih tipova podataka, nepostojanje struktura i unija,
:) nekonzistentnu i losu sintaksu, slabu tipiziranost podataka i sl.
Sto se tipova podataka tice ajd reci koj tip ti konkretno fali
sto se struktura tice nizovi su istovremeno i strukture
p.s. sto se unija tice probaj:
local a:="aaaaa" //a je string
? a
a:=1 //a je numeric
? a
a:=ctod("01.01.93")//a je datum
? a
to ce kolko se secam da radi
tako da sa te strane gledista clipper je mnogo iznad ostalih
prg jezika naravno to smanjuje preglednost prog. i... ali cisto
reda radi prava zamerka na clipper je:
ZASTO CLIPPER PRIHVATA SAMO PRVIH 10 SLOVA ZA NAZIV
IDENTIFIKATORA TJ KREIRAJ_FAJL_KONTA I KREIRAJ_FAJL_NALOGA SU
ZA NJEGA ISTE F-IJE
POSTOJI LI NEKI NACIN DA GA UBEDIM DA RADI DRUKCIJE AKO POSTOJI
KOJI JE AKO NE NIKOM NISTA. :(
clipper.950todorp,
Evo i ovde da pitam:
> ===============================
> 12.170 PC.PROG.3:baze.podataka
> todorp, 10.02.Cet 15:34, 207 chr
> ---------------------------------------------------------
> Hi!
> Da li neko ima neke rutine u C-u za rad sa .dbt fajlovima (znaci dbaseIII
memo
> polja), ili barem ako ima strukturu .dbt fajla. I need it badly.
Zar je moguce da niko nema pojma?
clipper.951bulaja,
│Sto se tipova podataka tice ajd reci koj tip ti konkretno fali
└───
Vrlo jednostavno :), fale integeri (short, long,..).
clipper.952bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
six15_p1 zip 59852 SIx Driver 1.5 Fix #1 Maintenance Update (SIXCDX, Intl)
NOTE: This patch is for the INTERNATIONAL release of SIXCDX v1.5 only,
and does NOT apply to the US SIXCDX v1.5 release.
This ZIP file includes patch files for updating v1.5 of The SIx Driver
(SIXCDX, Int'l) and Mach SIx to Maintenance Update #1. This new release
is still v1.5, but the time stamps of the updated files have been
changed indicate the newer revision.
===========================================================================
This maintenance update corrects the following items:
1. Opening .DBF/.DBT without DBT.OBJ would NOT generate an error.
2. Associated .INI file not loaded if data file extension was not .DBF.
3. Sx_IndexCount() could return incorrect value in some cases.
4. Encrypting a previously decrypted DBF file could fail in some cases.
5. 'TRIGGER' keyword in .INI file was not setting new trigger.
6. ZAP with DBT.OBJ would produce an incorrect .DBT file.
7. Sx_DBFencrypt() was not encrypting .FPT if password parameter was not
specified.
8. With a SCOPE set to <higher than any key>, Sx_KeyCount() would move
the record pointer.
9. Calling Sx_KeyNo() repeatedly with a SCOPE active would eat memory.
10. A GPF error would occur (Under ExoSpace or Blinker 3.0 Protected
Mode) when doing a SET TAG TO following deletion of another TAG.
11. Sx_KeyData() would return incorrect data w/ non-selected index.
12. USE w/ Structural .CDX would cause GPF w/ Blinker 3.0 and Clipper
5.01a. This is corrected with the BLXCDX51.OBJ file, which should
ONLY be used with Blinker 3.0 and Clipper 5.01a.
------------------
<Thanks to dsisic>
clipper.953nbatocanin,
> Ama u čemu je stvar sa kodnim blokovima? Samo čujem priče
> o tome a niko da provali poentu.
Bilo je rasprava o tome ovde, da ne ponavljam. Ukratko, kodni
blokovi su obične funkcije bez imena koje se mogu tretirati kao i
ostali podaci. Osnovna namena je za zadavanja metoda objekata i za
definisanje novih naredbi. Na primer, mogu se dodeljivati
promenljivim:
b := {|x,y| x+y }
Ova naredba kodni blok (bezimenu funkciju) za sabiranje dva broja
dodeljuje b-u. Takve funkcije se mogu i izvršavati:
? Eval (b, 4, 6) // 10
U suštini, radi se o pokazivačima na funkcije. Međutim, sintaksno
rešenje pruža veoma lepe mogućnosti. Najbolje je što se mogu
prosleđivati funkcijama:
Sort (a, {|x,y| x <= y } )
Značenje: sortiraj niz A pri čemu je kriterijum za poređenje zadat
kodnim blokom tim i tim. Ukratko, podaci sad mogu da sadrže i
informacije tipa "kako", a ne samo "šta".
clipper.954nbatocanin,
> Struktura je, kada se definiše, novi tip podataka potpuno ravnopravan
> sa onim koje neki jezik već nudi.
U čemu se ogleda ta ravnopravnost? Pa po ovoj definiciji ni čist C ni
Pascal nemaju strukture, jer su osnovni tipovi favorizovani - za sve
izvedene tipove ne mogu se definisati operatori ;) Ozbiljno,
Clipper-u nedostaje samo jedna stvar da bi imao prave slogove:
imenovanje elemenata niza. Međutim, to su upravo objekti bez metoda.
E, sad još samo da sačekamo 6.0 pa da dobijemo naredbu za kreiranje
klasa ;(
> :(. Znate li vi ljudi za išta drugo sem tabela? :)
Kažu knjige: relaciona baza podataka je model realnog sistema gde su
svi realni objekti predstavljeni pomoću tabela i ničeg drugog sem
tabela ;)
> Rešenje koje nudi jaku tipiziranost a u isto vreme i
> veliku slobodu pri manipulaciji podacima jeste dinamička
> tipizacija koju implementira recimo Smalltalk, a moja
> opklada je da će je implementirati i Clipper kroz
> verziju-dve.
Već jeste: po prvim vestima tako upravo radi VO.
> Kodni blokovi su upravo odličan primer toga što
> interpreter može da uradi dok kod kompajlera to ide dosta
> nategnuto, kroz pointere na funkcije.
Zašto bi se kodni blokovi lakše napravili u interpreterima? Njihova
prednost u Clipper-u je upravo to što se prevode (dobro, u p-kod), a
ne interpretiraju kao makroi.
> P.S. GET sistem baš i nije neki argument u korist
> Clippera, jer je: a) prevaziđen
> b) lako se implementira u bilo kom jeziku
> c) ne nudi ništa posebno
a) Možda ako misliš na nivo SAY..GET
b) Da, ali bi imao da poludiš od pokazivača na sve i svašta ;)
hint: @ 0,0 GET x WHEN x > y READER MyReader()
c) Šta bi ti dodao? Ja još nisam našao nešto što mi je zatrebalo, a
da dodavanje nije bilo na granici trivijalnog.
> Takođe, obrada grešaka u Clipperu je zbog toga što je
> interpeter zaista dobra, ali ima i boljih. Ada već odavno
> a C++ odskora implementiraju izuzetke, exceptions, koji de
> facto predstavljaju najbolji način za kontrolu grešaka do
> danas.
Stao sam i razmislio: ne vidim vezu između Error sistema i
interpretera (možda sam nešto prevideo?). Kada se desi greška u
programu, nafiluje se jedan slog podacima o greški i pozove aktuelna
procedura za obradu greške. E, a drugi nivo sa BEGIN/END SEQUENCE je
takođe čist: kada se dođe do BREAK, očisti se stek i ide se na sledeću
naredbu.
clipper.955cnenad,
ŁŁŁ TLib BuMenu.lib +-BuMenu.obj // ili Lib umesto TLib
Gde naći TLib ili LIB ?
Linkovati sa ovim priložnim BUMENU.LIB-om od verzije 1.4 ?
clipper.956dejanr,
>> ZASTO CLIPPER PRIHVATA SAMO PRVIH 10 SLOVA ZA NAZIV
>> IDENTIFIKATORA TJ KREIRAJ_FAJL_KONTA I KREIRAJ_FAJL_NALOGA SU
>> ZA NJEGA ISTE F-IJE
>> POSTOJI LI NEKI NACIN DA GA UBEDIM DA RADI DRUKCIJE AKO POSTOJI
>> KOJI JE AKO NE NIKOM NISTA. :(
Nikom ništa :(
clipper.957ficus,
:)> Strukture on ima: kako drugacije da zoves ovo: {1, "ABC", Date()}.
:)
:) Ja to zovem "niz" :). Clipperovi nizovi u koje moze svasta da se trpa pri
Pa sta onda fali tom nizu jos par define-ova i eto ti struktura
uzgred a sta bi sa oClip-om on nudi objekte(klase) i eto ti opet
struktura
:) Strasno cesto vidim Clipper programere kako koriste tabele tamo gde bi
:) mala uvezana lista ili nesto slicno bilo na mestu :(. Znate li vi ljudi za
:) itsa drugo sem tabela? :)
Sta podrazumevas pod tablama ako su to visedimenzionalni nizovi
u clipperu je niz istovremeno i lista
:) Jel znas kako je nastala objektna orijentacija? Iz potrebe! Naime,
:) strukturirani programi su udarili u zid kada su dosli do nekih 100,000
ok ali ja smatram da ako ja u programu od 10.000 linija mogu da
se snalazim sa komentarom tu i tamo i bez pisanja dokumentacije...
uzgred imas klasu podatak koju naslede podatak_int i podatak float
napises funkciju koja prima objekat klase podatak jer ti odgovara
da prenosis i int i float e a onda definises podatak string i ode
sve u pi*du materinu. Moje misljenje je da se svaki program moze
napisati i neobjektno ali obicno klase i objkte koristim iskljucivo
zbog preglednosti.Mada tu i tamo i malo nasledjivanja i virt. fija
nije na odmet ali... to trenutno jako malo programera koristi dodacu
nazalost.
:) linija. kod kompajlera to ide dosta nategnuto, kroz pointere na funkcije.
:) Toliko mi se svidaju da cu da poludim sto ih C++ nema :).
Meni se vise svidja pretprocesor koj istini za volju u clipperu i ne
koristim puno u c-u bi mozda pravio nepregledne komande ali i dalje
mislim da je kao mogucnost veoma dobra sra znate jednog dana "D++" ;)))
Druga stvar koja mi fali u c-u je dobra podrska za baze podataka
mislim na nesto mnogo bolje od onog u clipperu ali :((( uz to bi
mogo i jedan fini user interface.
clipper.958ficus,
:) Ama u cemu je stvar sa kodnim blokovima? Samo cujem price o tome a niko
:) da provali poentu.
Code block:
nesto slicno makrou i slicno funkciji u principu mozes da pozoves funkciju
da izracunas izraz itd..
primeri:
b1={||blockfunct()}
i sada mozes da b1 koristis u naredbama aeval dbeval itd i onda ti se
za svaki elemenat (slog) izvrsi funkcija blockfunct.
mogu primati argumente npr {|x,y|max(x,y)} i vracaju vrednost slicno
ko f-ija
zgodni su za prenos isto ko i makroi ali su mnogo brzi jer se prevode
pri kompajliranju...
Rezime: Zaboravi na makroe ako nisi preterano naviko na njih i ako
ti bas ne treba nesto sasvim posebno u svkom slucaju nauci code blockove
jer ti omogucavaju dosta toga a i brzi su i ako ti bas treba makro a
neces ga izvrsiti samo jednom probaj nesto ovako:
block:=&("{||"+tekst tvog makroa+"}")
for i:=1 to 1000
eval(block)
next
ovo ce jednom prevesti makro u blok pa ga ti upotrebljavaj ko blok kolko oces
bice brze.
clipper.959dr.grba,
>> uzgred a sta bi sa oClip-om on nudi objekte(klase) ...
Jeste, nudi *implementaciju* klasa na korisničkom nivou. Ali
niko ne garantuje da će ta implementacija biti kompatibilna sa
eventualnim pravm sintaksom rada sa objektima u budućnosti. žak
čovek nije načisto da li bi se igranje sa #command i #translate u
takvoj situaciji isplatilo...
Zato, bar što se mene tiče, čekam nešto pravo...
clipper.961neman,
Pre nekog vremena je neko napisao poruku u kojoj je prijavio slucaj da CDX
drajver lose zapisuje indeksnu datoteku na Novell Lite mrezi ( brisao sam
poruke u SORu pa nisam lupio reply :). Danas sam pustio test program ( sto
sam ranije obecao da cu da uradim pa nisam :( )koji je upisivao jednu vrednost
u polju kljuca a drugi upisivao drugu vrednost. Obe vrednosti polja su fiksne,
"a" za jedan racunar a "b" za drugi racunar. Programi su se naravno izvrsavali
paralelno :). I jedan i drugi su u bazu upisali po 1000 slogova, i to ispravno
i nisu se javljali mali kinezi ;). To sam proveravao iz DBASEa. Kada sam
pokusao
da sumiram iznose drugog polja ( za oba programa to je bilo 10 ) program je
video samo jednu grupu zapisa, bilo "a" bilo "b", u zavisnosti od toga koji
je program kasnije zavrsio rad !?!!?. Prvo popunjavanje baze sam vrsio samo
sa APPEND BLANK, bez provere gresaka ( nije ih ni bilo ), a zatim sam iza
svako REPLACE dodao DBCOMMIT(); UNLOCK par. Za CDX datoteku to nije bilo
dovoljno :((. Programcic sam testirao samo jednom, u zurbi, na kraju danasnjeg
pristupa mrezi, ali mislim da nije bilo drugih gresaka.
Ovaj bag, ukoliko postoji, iz daljeg razmatranja promene indeksnog drajvera :)
dafinitivno izbacuje CA CDX. Ocekujem da dobijem za neki dan SIXCDX :) pa cu da
nastavim testiranje.
neman
clipper.962neman,
A da, mreza je Novell Netware 3.11, 10-tak radnih stanica fercera 8 - 10 sati
dnevno, ima ugradjen bridz i uospte se ne ponasa ;)
neman
clipper.963aquarius,
Evo malo poboljsane verzije Num2Calc, koja ispunjava neke od zahteva
koji su postavljeni ovde na Sezamu, samo se fajl sada zove NLabSGRd.
Sto se mene tice ovo moze i u Clipper dir, naravno ako Bulaja nadje
za shodno. Ako ima primedbi, kritika, sugestija, tu sam... :)
Aqarius
nlabsgrd.zipclipper.964nbatocanin,
>> Da li neko ima neke rutine u C-u za rad sa .dbt fajlovima
> (znaci dbaseIII memo
Trebalo bi da ima u Code Base.
clipper.965ndragan,
/ U suštini, radi se o pokazivačima na funkcije. Međutim, sintaksno
/ rešenje pruža veoma lepe mogućnosti. Najbolje je što se mogu
Pa onda ja to imam u foksu odavno, samo što više ne moram to da trpam
kao makro zamenu, nego nešto a la by reference. Već smo imali varijante
sa formulama spakovanim u polja u bazi, ili sa imenom procedure u bazi.
Foks svaki .prg kompajlira kad ga spazi prvi put, tj samo jednom. Zato
ako u slogu u polju 'metod' piše 01, a u programu piše
_proc='metod'+metod
do (_proc)
Rutina metod01.prg se kompajlira samo jednom, i radi en puta. E sad,
samo mi je problem što moram da pazim da mi ne naiđe neko 'šđ' u tom
polju, jer rutina metodšđ sigurno ne postoji.
Funkcija Eval isto postoji u foksu, i radi nad izrazom tipa string, a
izraz koji se nađe u njemu može da bude šta bilo (ko nekad na spektrumu
- mogao si da kucaš ime promenljive na inputu). Da li će se
kompajlirati unapred ili u trku, u foksu uopšte nije bitno, traje između
pola trenutka i pet sekundi, zavisno od makine, i radi se samo jednom
(interno sravnjuje vremena na sorsu i .fxp kompajliranom fajlu). Zato
mogu da pravim program koji piše rutinu, kompajlira je i odmah izvodi :)
Bue_ Ndragan
clipper.966ndragan,
/ ZASTO CLIPPER PRIHVATA SAMO PRVIH 10 SLOVA ZA NAZIV
/ IDENTIFIKATORA TJ KREIRAJ_FAJL_KONTA I KREIRAJ_FAJL_NALOGA SU
Sa istim se pati i foks - razlog je u kompatibilnosti sa dbejzom, inače
bi to odavno bilo 20 ili 32.
Bue_ Ndragan
clipper.967ndragan,
/ c) Šta bi ti dodao? Ja još nisam našao nešto što mi je zatrebalo, a
/ da dodavanje nije bilo na granici trivijalnog.
Ako se kliperu nema šta dodati, zašto svi kliperaši jure biblioteke?
Dobro, ovo je bila zlobna foksovska zajebancija. Koncepcija je takva,
jelda? Kliper mi nekako najviše liči na VW bubu - kao auto nije bog zna
šta, ali kakve divne bagije možeš da napraviš od njega... Ajd, da ne
zvuči ružno, primerenije je poređenje sa PC računarom - osnovna verzija
radi, a ko voli još i VGA, SB, CD-ciga itd...
Foks mu više dođe ko ono kad su dvoje matorih Amera bili u Veneciji, pa
ih kući posle pitali kako im se sviđa varoš, a oni "pa bili smo u kampu,
i tamo smo imali sve, i bioskop, i poslastičarnicu, i piceriju, i
pijacu... uopšte nijednom nismo morali da idemo u grad".
Bue_ Ndragan
--> od svih rasa pasa najbolje preferiram foks enterijera
clipper.968ficus,
:) Vrlo jednostavno :), fale integeri (short, long,..).
A sta fali ugradjenim tipovvima podrazumevam da ako
vec radis bazu podataka netreba da budes sitnicav sa memorijom
i brzinom posto netreba da se bavis animacijom u realnom vremenu
nego obicnim sabiranjima i oduzimanjima.
p.s. jel nekom trebalo mnozenje ;)))))
clipper.969ficus,
:) Clipper-u nedostaje samo jedna stvar da bi imao prave slogove:
:) imenovanje elemenata niza. Medutim, to su upravo objekti bez metoda.
:) E, sad jos samo da sacekamo 6.0 pa da dobijemo naredbu za kreiranje
:) klasa ;(
#define ???
:) Zasto bi se kodni blokovi lakse napravili u interpreterima? Njihova
:) prednost u Clipper-u je upravo to sto se prevode (dobro, u p-kod), a
:) ne interpretiraju kao makroi.
a sta bi sa
nebih se slozio da je clipper interpreter mada nije ni cist
kompajler on je nesto izmedju
naprimer on ce ovo: {|x|f(x)} izrsiti ko kompajliran kod
ali ce zato ovako nesto:
cb:=&("{|x|f(x)}")
pozati interpreter a zatim raditi ko da je c.b. tj da je
kompajliran
sad druga je stvar sto clipper ima svoje bubice o cuvanju
promenljivih i prosledjivanju parametara ali ... :(( :)))
clipper.970djelovic,
> A sta fali ugradjenim tipovvima podrazumevam da ako
> vec radis bazu podataka netreba da budes sitnicav sa memorijom
> i brzinom posto netreba da se bavis animacijom u realnom vremenu
> nego obicnim sabiranjima i oduzimanjima.
Moje tabele (urađene na C++-u) su tipično 30-40% kraće od ekvivalentnih
urađenih na Clipperu. Isto toliko su i brže, a sve to zbog "manjih" slogova
koje C++ zahvaljujući svojim tipovima podataka ima.
clipper.971bulaja,
│Evo malo poboljsane verzije Num2Calc, koja ispunjava neke od zahteva
│koji su postavljeni ovde na Sezamu, samo se fajl sada zove NLabSGRd.
└───
Prebačeno u CLIPPER dir, thanks.
clipper.972ficus,
Moje tabele (uradene na C++-u) su tipicno 30-40% krace od ekvivalentnih
uradenih na Clipperu. Isto toliko su i brze, a sve to zbog "manjih" slogova
koje C++ zahvaljujuci svojim tipovima podataka ima.
----
Jest ali zato se ispostavi da vise int nije dovoljan da treba long i :(((
Salu na stranu to si u pravu ali ako si bas sitnicar ima neceg slicnog i u
clipperu pogledaj malo nanforum toolkit.
p.s. Cisto da napomenem da nebi neko pomislio da sam iskljucivo na strani
clippera i ja vise volim c++ ali se trudim da budem objektivan. Ono sto
bi bilo zanimljivo napisati je baza podataka koja mnogo brze pretrazuje rec-
orde kad su podfilterom. a sto se duzine gorepomenute tice apsolutno je
nebitna. Ako imam exe od 500 kb nista mi nece smetati kojih 100 kb u bazi vise
clipper.973nbatocanin,
> Pa onda ja to imam u foksu odavno, samo što više ne moram
> to da trpam kao makro zamenu, nego nešto a la by
> reference.
:))) E, od ovog ndragana se ne moš' odbranit ;) Nemaš, bre! Nije to to
:)
> Funkcija Eval isto postoji u foksu, i radi nad izrazom
> tipa string, a izraz koji se nađe u njemu može da bude šta
> bilo (ko nekad na spektrumu - mogao si da kucaš ime
> promenljive na inputu).
To su standardni makroi i to nije to:
x := "1 + 23 + y"
? &x
clipper.974nbatocanin,
> :) Clipper-u nedostaje samo jedna stvar da bi imao prave
> slogove: :) imenovanje elemenata niza.
>
># define ???
Uh, to mi je nekako ružno rešenje.
> :) Zasto bi se kodni blokovi lakse napravili u
> interpreterima? Njihova :) prednost u Clipper-u je upravo
> to sto se prevode (dobro, u p-kod), a :) ne interpretiraju
> kao makroi.
>
> a sta bi sa
Aaaa, pa to je lako:
;)
> nebih se slozio da je clipper interpreter mada nije ni
> cist kompajler on je nesto izmedju
Pa da, prevodi u p-kod.
clipper.975nbatocanin,
> Ono sto bi bilo zanimljivo
> napisati je baza podataka koja mnogo brze pretrazuje rec-
> orde kad su podfilterom. a sto se duzine gorepomenute tice
> apsolutno je nebitna.
Pogledaj malo SIx drajber - prijatno ćeš se iznenaditi :)
clipper.976umajstorovic,
Drug me zamolio da ostavim sledece pitanje: kako povezati
clipper program sa biblioteckim f-jama c-a? Kratko i jasno :)
clipper.977dpredovic,
> Jeste, nudi *implementaciju* klasa na korisničkom nivou. Ali
> niko ne garantuje da će ta implementacija biti kompatibilna sa
> eventualnim pravm sintaksom rada sa objektima u budućnosti. žak
OO ekstenzije koje se dobijaju oclip-om su toliko rudimentarne da
ispod toga ne može. Bilo kakva promena u samom clipper-u svešće se
verovatno na mali s&r u sorsu i to je sve, mada ni u to baš
neverujem. Ne znam zašto bi se klasa deklarisala drugačije nego sa
CLASS-ENDCLASS, članovi sa VAR, metodi sa METHOD...
Cu, Dejan
clipper.978bulaja,
Ukoliko se kod indeksiranja (INDEX ON...) ključ navede preko aliasa
(npr. INDEX ON xAlias->Polje TO cFile) u indeksnu datoteku će biti
upisan ključ koji sadrži oznaku aliasa odnosno "xAlias->Polje".
Da li se u tom slučaju Clipper ponaša drugačije neko što je uobičajeno
(kada index key sadrži samo naziv polja, bez alias pointera) tj. da li
je npr. pretraživanje preko takvog indeksa sporije?
clipper.979ndragan,
/ :))) E, od ovog ndragana se ne moš' odbranit ;) Nemaš, bre! Nije to to
Znam da nije, ovi kodni blokovi mi više liče na inlajn funkcije ili
nonejm funkcije, s tim što te baš briga za njihova imena; ili ih navedeš
na licu mesta ili ih strpaš u promenljivu. A jel možeš da je strpaš u
polje u bazi? Koliko puta se kodni blok, naveden direktno, ponavlja u
.exe fajlu ako je naveden više puta? Tj, da li kompajler prepoznaje da
je to isto?
/ x := "1 + 23 + y"
/ ? &x
Neee, ovo je suviše prosto. Vidi ovo:
x=seek(eval(key(1,'druga')))
Kao parametar za eval može da bude bilo šta što vraća neki rezultat,
naprimer
č trt, mrt get baza.polje1 valid eval(baza2.valid)
Tako da kompletnu funkciju (ok, jednorednu) možeš da držiš kao polje u
bazi; tj. to treba da je izraz koji daje vrednost, a on u sebi može da
sadrži bilo kakve pozive funkcija. Štaviše, može i ovo:
... valid eval(trim(baza2.valid2)+'()')
Sve spomenute funkcije se kompajliraju samo prvi put. U slučaju da se
pravi projekat (koji, kod foksa, kao rezultat daje .app, mali .exe ili
veliki .exe sa ili bez Vatkomovog ekstendera), onda treba sve te
funkcije pretkompajlirati, naravno.
Razlika između Eval() i & u foksu je što za većinu stvari eval() radi
brže, jer ne prevodi celu liniju u kojoj se nalazi, nego samo deo izraza
u kojem se spominje; tako se učitava manji deo kompajlera i manje ostaje
za kompajliranje u trku. Mada, kad mu onako podmetnem nepoznatu
funkciju, mogu svašta da mu napravim. Dok radim iz samog foksa, nema
problema, sve on pojede, međutim... trpanje takvih stvari u samostalni
.exe je već problematična stvar, jer nikad ne znam da li sam ubacio u
projekat sve što se može spomenuti.
Bue_ Ndragan
clipper.980aquarius,
<>
<> Evo malo poboljsane verzije Num2Calc, koja ispunjava neke od
<> zahteva koji su postavljeni ovde na Sezamu, samo se fajl sada
<> zove NLabSGRd.
<>
aRazumenic me naterao da jos malo cackam i evo, ovu stvar sam
jos malo doradio, pa sad moze i matematicka operacija nad nVar, a
doradjeno je jos po nesto. Cu... :)
aquarius
nlabsgrd.zipclipper.981nbatocanin,
> A jel možeš da je strpaš u polje u bazi?
Može, ali ne baš direktno: upisuje se kao string, a prilikom čitanja
se koristi makro za restauraciju:
FIELD->f := "{|| x + y }"
b := &f
> Koliko puta se kodni blok, naveden direktno, ponavlja u
> .exe fajlu ako je naveden više puta? Tj, da li kompajler
> prepoznaje da je to isto?
Ne. Ne znam za druge, ali moje iskustvo kaže da se kodni blokovi
izuzetno retko ponavljaju - ne umem sad da dokučim razlog.
> / x := "1 + 23 + y"
> / ? &x
>
> Neee, ovo je suviše prosto. Vidi ovo:
>
> x=seek(eval(key(1,'druga')))
Ajde malo pojasni šta radi key.
> Kao parametar za eval može da bude bilo šta što vraća neki
> rezultat, naprimer
>
> č trt, mrt get baza.polje1 valid eval(baza2.valid)
E, nisam znao da je makro u Fox-u tako ograničen: ovo je jedna od
slabijih mogućnosti Clipper operatora "&".
> Štaviše, može i ovo:
>
> ... valid eval(trim(baza2.valid2)+'()')
Naravno. Može i ovo:
String1 := "&String2"
String2 := "&String3"
String3 := "String4"
String4 := "KRAJ!"
? &String1
x := "Alfa"
&(x + "01") := 12.5
? Alfa01
cProc := "Fora"
&cProc ()
clipper.982aquarius,
Moze li neko da objasni ??? :(((
----------------------------------------------------------------
doit( 10, 0, 1 ) // U ovom slucaju petlja DO WHILE !b = a
// ce biti prekinuta kada b = a
doit( 1, 0, 0.10 ) // U ovom slucaju kada je b = a nikom nista
FUNC doit( a, b, c )
do while !b = a
b := b + c
enddo
RETURN(nil)
----------------------------------------------------------------
Da li je to jos jedan bug ili nesto drugo ?
aquarius
clipper.983dvesic,
>> doit( 10, 0, 1 ) // U ovom slucaju petlja DO WHILE !b = a
>> // ce biti prekinuta kada b = a
>> doit( 1, 0, 0.10 ) // U ovom slucaju kada je b = a nikom nista
>> Da li je to jos jedan bug ili nesto drugo ?
Ne, nego odluka konstruktora Clipper-a !
Stari problem sa float brojevima; moras da primenis
poredjenje tipa
IF abs(b-a)<eps
....
ENDIF
gde je EPS dovoljno mala konstanta.
Npr, broj u drugom slucaju koji ti smatras nulom je
0.000000000000000111
sto, strogo govoreci i nije nula !
Pozdrav,
Dejan.
clipper.985jorad,
>> doit( 1, 0, 0.10 ) // U ovom slucaju kada je b = a nikom nista
>>
>> FUNC doit( a, b, c )
>> do while !b = a
>> b := b + c
>> enddo
>> RETURN(nil)
I meni je to jednom prilikom pravilo probleme. Rešenje je
jednostavno:
DO WHILE ROUND(b,2) # ROUND(a,2)
jer ćeš na zaokruživanju izgubiti onih nevidljivih 0.000000001
clipper.986ndragan,
/ (kada index key sadrži samo naziv polja, bez alias pointera) tj. da li
/ je npr. pretraživanje preko takvog indeksa sporije?
Foks za .cdx indekse izričito tvrdi da spominjanje aliasa u indeksnom
izrazu izbacuje Rašmor pretrage, tj. indeks će biti korišćen samo za
redosled, a pretrage idu preko baze a ne preko indeksa (ko razume
shvatiće).
Mislim da je razlog tome što taj alias uopšte ne mora biti alias te
baze; sasvim je legalna konstrukcija
use kupci orde 1
sele 0
use promet
set rela to sifra into kupci
inde on kupac.naziv to trt (ili tag trt, svejedno)
To sam ponekad i koristio, ali samo u krajnjoj nuždi. E sad, takav
indeks sigurno ne može da se koristi za optimizovanu pretragu, a kao
kriterijum za optimizaciju uzima se izgleda brza sintaksna kontrola
indeksnih pojmova; na spisku stvari koje znače odustajanje od Rašmora su
i aliasi, i funkcije tipa upper(), stuff() i još dosta toga.
Bue_ Ndragan
clipper.987ndragan,
/ Može, ali ne baš direktno: upisuje se kao string, a prilikom čitanja
/ se koristi makro za restauraciju:
Hm, a pošto je makro, ne kompajlira se, osim u trku?
/> x=seek(eval(key(1,'druga')))
/ Ajde malo pojasni šta radi key.
Daje indeksni izraz; u ovom primeru bi tražio slog u tekućoj bazi čija
je vrednost trenutno aktivnog indeksa jednaka indeksnom pojmu prvog
indeksa iz baze sa aliasom Druga; obratno
x=seek(eval(key(1)),'druga')
bi tražio u bazi Druga slog čiji je aktivni ključ jednak prvom ključu u
tekućoj.
/ E, nisam znao da je makro u Fox-u tako ograničen: ovo je jedna od
/ slabijih mogućnosti Clipper operatora "&".
Makro & je istih mogućnosti, i s njim se i u foksu radi svašta, međutim
čim se u liniji nađe taj znak, ona se ne kompajlira do izvođenja. Zato
se radije koriste funkcije Eval() koja jeste makro nad svojim
argumentom, ali se ograničava na izraz (ne može biti naredba), i još
lepša stvar, imenski izrazi, tj ona mesta gde treba dati ime nečega
(alias, ime pendžera, fajla...), promenljiva ili izraz koji to ime
sadrže se navedu u zagradi. To je blagi povratak na ono iz bejzika
ime$="podaci.dat" ili
open #3, ime$ open #3, "podaci.dat"
Pošto se u xBase jezicima na ovakvim mestima navodnici ne pišu (a
očekuje se string), onda se ne zna da li tu i kako može da dođe
promenljiva. E sad može, strpa se u zagrade i to onda radi ko u bejziku
(primer levo). Dok to nije bilo, moralo se
bz='trtmrt'
use &trtmrt
sad ide
bz='trtmrt'
use (trtmrt)
pri čemu se druga linija ne kompajlira u trku, nego samo jednom.
/ cProc := "Fora"
/ &cProc ()
tj
Do (cproc)
Sad je pitanje koliko puta će ovaj cproc da se kompajlira? U foksu
će jednom, kad prvi put bude pozvan. Linija koja sadrži & se ne
kompajlira; u ovoj varijanti je ni nema. Da li za kliper treba ovakve
stvari ručno poterati kroz kompajler/linker/mejk, ili je dovoljno
bistar da to uradi u trku? Hoće li sam od sebe da to ubaci u .exe, a
ako neće, hoće li ga izvesti ako nije ručno ubačen?
U foksov .exe, lepo kaže u helpu, ulazi ono što se eksplicitno
poziva; ono što se poziva po imenu ili makrou nije dostupno
generatoru projekta i mora se ubaciti ručno. Ako se sve tera iz
normalnog foksa (iz IDE) tih problema nema, dohvati šta nađe.
Bue_ Ndragan
clipper.988bdm.,
Hi,
ukoliko imate problema sa pisanjem help-a za Vaše aplikacije izaberite
već gotovo rešenje, poruke 13.466, ima primer za povezivanje sa Clipper-om.
Vrlo je jednostavno... :)
BDM.
clipper.989bulaja,
SIx CDX v1.5
Da li se neko igrao sa patchovanjem onih .OBJ-ova za national support
(sixger, sixswe,..) tako da podrzavaju nasa slova?
clipper.990dvesic,
>> SIx CDX v1.5
>> Da li se neko igrao sa patchovanjem onih .OBJ-ova za national
>> support (sixger, sixswe,..) tako da podrzavaju nasa slova?
Ideja postoji, ali mi nedostaje kvalitetan OBJ2ASM. Cisti
disk edit bi bilo greota upotrebljavati.
clipper.991nbatocanin,
> Hm, a pošto je makro, ne kompajlira se, osim u trku?
Da, prevođenje makro izraza radi makro prevodilac koji je deo
Clipper-ovog run-time modula za vreme izvršavanja programa.
> / cProc := "Fora"
> / &cProc ()
>
> tj
>
> Do (cproc)
žini mi se da je malo različito. Ovo može i u izrazima:
PROC Main
a := "p"
b := "q"
c := "(1, 2, 3)"
x := &(a + b + c) + 2
? x
RETURN
PROC PQ (x, y, z)
RETURN x + y + z
> Sad je pitanje koliko puta će ovaj cproc da se kompajlira?
E, u Clipper-u je filozofija drugačija - on je mnogo bliži pravom
prevodiocu od Fox-a: implicitno prevođenje je označeno kao zastarela
stvar. Procedura se prevodi kada kažeš CLIPPPER <ttt>, gde je TTT
datoteka sa izvornim kodom procedure. Poziv nema nikakvog efekta na
prevođenje.
clipper.993djelovic,
[Pišem bilten, pa naiđoh na jednu poruku koju sam ranije propustio.]
> Zašto bi se kodni blokovi lakše napravili u interpreterima? Njihova
> prednost u Clipper-u je upravo to što se prevode (dobro, u p-kod), a
> ne interpretiraju kao makroi.
Zbog oblasti važenja promenjljivih. Štoćereći, kodni blokovi se daju
bez problema implementirati i u kompajliranim jezicima, ali onda gube pola
snage jer imaju problem sa "vidljivošću" (scope) promenljivih.
> b) Da, ali bi imao da poludiš od pokazivača na sve i svašta ;)
> hint: @ 0,0 GET x WHEN x > y READER SLćYXYY.ąą╚
> da dodavanje nije bilo na granici trivijalnog.
b) Kod mene to je:
if (editvar == &x) ...
To znači: U jednoj funkciji radim razne GET-ove, a u drugoj kontrolu
unosa. Ovo je nesumnljivo komplikovanije od Clippera, no pogledajmo šta
time dobijam:
c) CUA/SAA kompatibilnost sa mišem i svim onim poljima za unos kakve ima
recimo Windows.
clipper.994bulaja,
│Ideja postoji, ali mi nedostaje kvalitetan OBJ2ASM.
│Cisti disk edit bi bilo greota upotrebljavati.
└───
Sourcer radi posao :), ali mislim da će ipak običan DiskEdit najbolje
poslužiti :). Nego, kako se uopšte aktivira taj alternativni index
order? Nisam primetio da se prostim linkovanjem u aplikaciju (i
naravno reindex-a) nekog drugog SIx*.obj umesto SIxUK.obj bilo šta
menja u redosledu index-a.
clipper.995dvesic,
>> order? Nisam primetio da se prostim linkovanjem u aplikaciju
>> (i naravno reindex-a) nekog drugog SIx*.obj umesto SIxUK.obj
>> bilo sta menja u redosledu index-a.
Ubaci svedska slova u stringove, pa probaj opet ! :)))
clipper.996zorand,
Sve ovde napisano o SIX drajveru, kao i text u racunaljkama,
teraju me da ga nabavim. Da li neko zna mogucnost kupovine kod nas
- ima li ga legalno u prodaji? Mislim na legalnu kupovinu jer
placanje (preko firme) nije problem.
clipper.997bulaja,
│Ubaci svedska slova u stringove, pa probaj opet ! :)))
└───
Hm, sa svedskim slovima radi :) ali ako se patchuje translaciona
tabela u SIxSwe.obj (samo jedna od njih ima strana slova) i ubaci
neki drugi raspored, onda nece da radi :). Znaci, mora jos nesto
da se promeni :).
clipper.998vlaslo,
hi :-)
evo mene ponovo. posto vidim da Vam se moj prethodni program nije dopao...
saljem vam ovaj, mozda bolji ?
cu
conn.zipclipper.999petrovics,
Interesuje me postoji li nacin da se Clipper-ska aplikacija
projektovana za rad u mrezi testira tako sto bi se
visekorisnicki rad simulirao pomocu multitaskinga iz DeskView-a
ili Windows-a ?
Potrebno je uglavnom testirati zakljucavanje datoteka i slogova.
clipper.1000djelovic,
> Interesuje me postoji li nacin da se Clipper-ska aplikacija
> projektovana za rad u mrezi testira tako sto bi se
> visekorisnicki rad simulirao pomocu multitaskinga iz DeskView-a
> ili Windows-a ?
Naravno. Učitaš SHARE.EXE i pičiš kao da si pod mrežom.
clipper.1001dvesic,
>> Interesuje me postoji li nacin da se Clipper-ska aplikacija
>> projektovana za rad u mrezi testira tako sto bi se
>> visekorisnicki rad simulirao pomocu multitaskinga iz
>> DeskView-a ili Windows-a ?
Nego sta !
Samo uradi sledece :
1. EXE fajl proglasi za readonly
2. Staruj SHARE
3. Stratuj DV (DesqView)
i vozi Misko !
P.S. NEMOJ koristiti DBFCDX.LIB iz Clipper-a 5.2 jer NE PODRZAVA
korektno mrezni rad (bug).
clipper.1002ndragan,
Probao; zbog sintakse ispalo ovako, i radi:
a = "p"
b = "q"
c = "(1, 2, 3)"
x = eval(a + b + c) + 2 (& ispred zagrade neće, moralo bi u
? x neku promenljivu)
PROC PQ
para x, y, z
RETURN x + y + z
Hm, jel' rezultat stvarno 8 ili je nameštaljka?
/ stvar. Procedura se prevodi kada kažeš CLIPPPER <ttt>, gde je TTT
/ datoteka sa izvornim kodom procedure. Poziv nema nikakvog efekta na
Da, tu se gubi upravo ono što ja obožavam da radim: imam nekoliko rutina
kojima se prosleđuju dugački parametri, koji se onda analiziraju,
muljaju i prepakuju u nekoliko nizova, pa se onda trči kroz niz i
serijom makro zamena u petlji radi šta već treba (ređaju se getovi sa
validima, promptovima itd). Učini mi se da je to sporo za neke
situacije, pa umesto makro zamena napravim da taj niz naredbi ispiše u
neko programče, kompajlira ga i izvede (sve u vreme izvvođenja!).
Sledeći put, ako su se parametri već pojavljivali (vadim nekakav crc iz
njih i pomoću toga zadajem ime generisanog programa), on nalazi
programče na disku i to već kompajlirano, te ga samo pozove, preskočivši
kompletnu analizu i makro zamene.
E ako nekome to proradi u nekom drugom jeziku, svaka čas. To može samo
interpleter; prednost foksa je što i to prevodi u pe kod.
Bue_ Ndragan
clipper.1003nbatocanin,
>> Zašto bi se kodni blokovi lakše napravili u
>> interpreterima?
>
> Zbog oblasti važenja promenjljivih. Štoćereći, kodni
> blokovi se daju bez problema implementirati i u
> kompajliranim jezicima, ali onda gube pola snage jer imaju
> problem sa "vidljivošću" (scope) promenljivih.
Ne bih rekao: dovoljno je pri prevođenju funkcije iza poslednjeg RET
staviti prevod svih kodnih blokova definisanih u toj funkciji, pa će
kodni blokovi videti sve što i matična funkcija, a to je to :)
> b) Kod mene to je:
>
> if (editvar == &x) ...
>
> To znači: U jednoj funkciji radim razne GET-ove, a u
> drugoj kontrolu unosa. Ovo je nesumnljivo komplikovanije
> od Clippera, no pogledajmo šta time dobijam:
>
> c) CUA/SAA kompatibilnost sa mišem i svim onim poljima za
> unos kakve ima recimo Windows.
Da, ali štos je što to što dobijaš ne dobijaš zbog razdvojenog unosa
i kontrole, zar ne? :) A Clipper-ove *naredbe* za korisnički interfejs
su na nižem nivou od *sistema* za komunikaciju za korisnikom. Ono
iznad tek treba napraviti i čini mi se da je GET sistem sasvim
solidna osnova za to.
clipper.1004nbatocanin,
> Sve ovde napisano o SIX drajveru, kao i text u
> racunaljkama, teraju me da ga nabavim. Da li neko zna
> mogucnost kupovine kod nas - ima li ga legalno u prodaji?
Koliko ja znam, ne postoji mogućnost legalne nabavke u zemlji.
clipper.1006nbatocanin,
> Hm, jel' rezultat stvarno 8 ili je nameštaljka?
:))
> Da, tu se gubi upravo ono što ja obožavam da radim: imam
> nekoliko rutina kojima se prosleđuju dugački parametri,
> koji se onda analiziraju, muljaju i prepakuju u nekoliko
> nizova, pa se onda trči kroz niz i serijom makro zamena u
> petlji radi šta već treba (ređaju se getovi sa validima,
> promptovima itd).
> E ako nekome to proradi u nekom drugom jeziku, svaka čas.
> To može samo interpleter; prednost foksa je što i to
> prevodi u pe kod.
I Clipper prevodi u p-kod. Principijelno ne bi trebalo da ima
problema da radi isto to, nisam te baš najbolje razumeo oko detalja,
ali nije ni bitno.
clipper.1007zorand,
>> Sve ovde napisano o SIX drajveru, kao i text u
>> racunaljkama, teraju me da ga nabavim. Da li neko zna
>> mogucnost kupovine kod nas - ima li ga legalno u prodaji?
>
> Koliko ja znam, ne postoji mogucnost legalne nabavke u
> zemlji.
Da preformulisem pitanje. Kako uopste da nabavim SIX ??
Legalno - nelegalno, ovde ili napolju, potpuno mi je svejedno :)).
Salim se, s obzirom da placanje nije problem, voleo bih
legalan i kompletan paket.
Adresa u Evropi bi dobro dosla kao i sve druge sugestije :).
clipper.1008dzoric,
Imal' neko CAS driver za SilverClip v4.02.
Unapred zahvalat
Dejan
clipper.1009ndragan,
/ I Clipper prevodi u p-kod. Principijelno ne bi trebalo da ima
/ problema da radi isto to, nisam te baš najbolje razumeo oko detalja,
/ ali nije ni bitno.
Mogu ti eventualno poslati sors jedne rutine tog tipa da ga isprobaš,
ali prva verzija nije moja... mogao bih umesto toga da pustim ovo kao
primer
set alte to trt.prg
set alte on
? 'use', the_dbf && the_dbf je promenljiva, definisana negde
? 'list'
... && popuniti tekstom po želji
? 'use'
set alte off
do trt
E ovde je trt.prg napisan iz samog programa, kompajliran u trku, i
izveden. Varijantska razlika je u tome što još samo nedostaje uslov da
znam na ulasku u rutinu da li je trt.prg već izgenerisan ili nije; ako
jeste, preskačem generisanje, i prevođenje isto tako - pe kod je
napravljen prošli put.
Prilikom pisanja takvog programa bitna je procena broja izvođenja
generisane rutine; sve naredbe koje se u njoj pojavljuju mogu se
napisati unapred i u trku ubacivati makro zamene, tj to ne mora da bude
izgenerisana rutina, može da bude opšta rutina sa gomilom makroa. Treba
samo ošacovati šta se bolje isplati.
Ono što je lepo, je što uopšte ne moram da znam kako će to programče da
se zove; to mora da zna samo rutina koja ga generiše i/ili poziva. To je
onaj luksuz koji mi omogućava integraljeni kompajler i nestašica
linkera.
Bue_ Ndragan
p.s. kako da patentiram ovu ideju?
clipper.1010bulaja,
│Da preformulisem pitanje. Kako uopste da nabavim SIX ??
│Legalno - nelegalno, ovde ili napolju, potpuno mi je svejedno :)).
│Salim se, s obzirom da placanje nije problem, voleo bih
│legalan i kompletan paket.
└───
SIx u USA kosta oko 160 USD. Evo ti brojevi fax-a nekih USA firmi gde bi
se to moglo nabaviti (pozivni za USA je 991):
C Programmers Warehouse
fax: (602) 443 0659
Zac Catalog
fax: (617) 551 0857
clipper.1011neman,
> b) Da, ali bi imao da poludis od pokazivaca na sve i
> svasta ;) hint: @ 0,0 GET x WHEN x > y READER MyReader()
Nisam bio neko vreme na Sezamu, pa tek sada postavljam pitanje, mada
je mozda bilo,:
ajd objasni sta se menja u std.ch da bi gornji hint funkcionisao kako
treba. To pitam glede aquariusovog pozivanja GETa u nekoliko redova.
neman
clipper.1012dvesic,
Cao !
Da li neko mozda zna odgovore na sledeca pitanja :
- Da li je moguce u Clipper programu utvrditi da li jos
neka kopija istog programa radi negde na mrezi i za
to ne koristiti mrezno specificne stvari (npr. NetBios
signalizaciju i sl.) ?
(Pazite, pitanje glasi da li je kopija AKTIVNA a ne da
li je pocela sa radom, tako da odgovori tipa : "neka
svaka aplikacija setuje neki flag" ne pasuju; ko mi
garantuje da ista u medjuvremenu nije pukla i "zaboravila"
da spusti svoj radni flag, pa ostane ativna vecno)
- Sta se desava sa bazom koju neka aplikacija zakljuca
(bilo celu, bilo jedan ili vise slogova) a zatim ista
neregularno zavrsi rad ? Da li se lokovi skidaju ili
ne ? Postoji li mozda neko generalno pravilo koje zavisi
od Dos-ovog Share ili alternativnog mehanizma zakljucavanja ?
Pozdrav,
Dejan.
clipper.1013dejanr,
>> - Sta se desava sa bazom koju neka aplikacija zakljuca
>> (bilo celu, bilo jedan ili vise slogova) a zatim ista
>> neregularno zavrsi rad ? Da li se lokovi skidaju ili
>> ne ?
Koliko sam ja primetio, stvari otprilike ovako idu: ako je ta aplikacija
kako-tako završila rad, fajlovi se uglavnom zatvore, dakle slobodni su
za druge. Ako se računar zaglupeo, onda uglavnom fajl ostane zaključan
sve dok je korisnik na "zaglupljenom" računaru logovan. A logovan je
obično dok se ne izloguje (što ne može da uradi, ako je računar totalno
zaglupljen). Dakle, taj će resetovati računar, i ponovo se logovati,
u kom će se trenutku fajl osloboditi. Najgora varijanta je da taj korisnik
prosto ugasi računar i ode, u kom slučaju će Novell posle nekog vremena
(ne naročito dugačkog) primetiti da je čvor neaktivan i sam ga izlogovati.
Dakle, reklo bi se da nema problema, ali sam imao slučajeve da uz sve to
fajl ostane zaključan. Nekada se to moglo srediti iz raznih Novell-ovih
uslužnih programa (ili čak iz Load Monitor sa konzole), dakle "ubiti"
korisnik i osloboditi fajlove. Međutim, u bar dva slučaja je fajl ostao
totalno zaključan dok nije oboren i ponovo dignut server.
clipper.1014bulaja,
Da li je neko video kako rade Clipper biblioteke koje omogućavaju
pravljenje Windows aplikacija u standardnom Clipper-u? Npr. napolju
se reklamiraju Grumpfish Clip 4 Win i DolceVita biblioteke. Ima li
slucajno neko demo verziju (mislim zaista DEMO, čini mi se da je
neko ovde skoro spominjao da ima demo za Clip4Win)?
clipper.1015dr.grba,
>> ajd objasni sta se menja u std.ch da bi gornji hint funkcionisao
>> kako treba.
Zašto da diraš STD.CH? On je priložen da vidiš kako su preprocesirane
funkcije Clippera prilikom generisanja CLIPPER.LIB. Inače ti nije
potreban u redovnom radu. Ako već hoćeš da napraviš neke svoje komande
koje se preprocesiraju (a na kraju, zašto da ne?), nazovi je nekako
drukčije, npr. MYSTD.CH ili slično, pa je eksplicitno pozivaj u PRG
fajlovima.
Ako nisi upoznat sa tehnikom rada preprocesora i načina pravljenja
komandi kroz njega, moja preporuka je da se obratiš gospodinu Ricku
Spenceu. On će ti vrlo pažljivo, detaljno i sa primerima rado
objasniti kako se ovo radi. Nešto koncizniji opis imaš u umecima
kolege Batoćanina izdatim u "Računarima". žinjenica je da ovo nije
lak posao, ali da daje isplative rezultate...
clipper.1016dr.grba,
>> u kom će se trenutku fajl osloboditi. Najgora varijanta je da taj
>> korisnik prosto ugasi računar i ode, u kom slučaju će Novell posle
>> nekog vremena (ne naročito dugačkog) primetiti da je čvor neaktivan
>> i sam ga izlogovati.
Ne sećam se da sam video, pa da pitam: da li se vreme neaktivnosti pre
logout procedure može setovati kroz mrežni softver?
clipper.1017neman,
> Zasto da diras STD.CH? On je prilozen da vidis kako su
> preprocesirane funkcije Clippera prilikom generisanja
> CLIPPER.LIB. Inace ti nije
Pa dobro :) nisam mislio da se tu menja, nego sam odatle video da nema
READER opcije. A i mnogo je dugacko :)
> drukcije, npr. MYSTD.CH ili slicno, pa je eksplicitno
> pozivaj u PRG fajlovima.
Koristim modifikovani "common.ch", a pravi cuvam :)
A sto se tice Spence-a, hvala na uputstvu, pogledacu to kod prijatelja
neman
clipper.1018nbatocanin,
Ništa naročito: samo izmeniš standardnu definiciju tako da bude nešto
u stilu:
#command @ <row>, <col> GET <var> ;
[READER <r>] ;
=> SetPos( <row>, <col> ) ;
; AAdd( ;
GetList, ;
_GET_( <var>, <(var)>, , <{valid}>, <{when}> ) ;
) ;
; ATail(GetList):reader := <{r}>
clipper.1019nbatocanin,
> set alte to trt.prg
> set alte on
> ? 'use', the_dbf && the_dbf je promenljiva,
> definisana negde ? 'list'
> ... && popuniti tekstom po želji
> ? 'use'
> set alte off
> do trt
A ne: ovo neće moći. Clipper-ov run-time prevodilac je ograničen samo
na izraze. Doduše, 95% Clipper-ovih naredbi se svode na funkcije.
Cela koncepcija ide ka pravim prevodiocima, gde se sve određuje za
vreme pisanja programa. Gde koristiš ovo gore?
clipper.1020nbatocanin,
> Pa dobro :) nisam mislio da se tu menja, nego sam odatle
> video da nema READER opcije. A i mnogo je dugacko :)
Uh, moj previd. U žaru diskusije prevideo sam da Clipper nema READER
opciju u GET sistemu. Al' se lako dodaje ;)
clipper.1021cnenad,
Da li se povećava veličina EXE fajla ako u svakoj proceduri na njenom početku
imam ubačeno #include "tralal.ch" ?
Naravno, u svakoj proceduri je u pitanju isti .ch fajl ali ako ga samo stavim
u glavnu proceduru definicija se ne prenosi na ostale podprocedure.
clipper.1022ficus,
Da li se povecava velicina EXE fajla ako u svakoj proceduri na njenom pocetku
imam ubaceno #include "tralal.ch" ?
Naravno, u svakoj proceduri je u pitanju isti .ch fajl ali ako ga samo stavim
u glavnu proceduru definicija se ne prenosi na ostale podprocedure.
--------
Nebi trebalo jer u tralal.ch nemas izvrsnog koda vec samo direktive
koje promene prg u preytprocesovan fajl (nadam se da je prava rec)
clipper.1023ndragan,
/ zaglupljen). Dakle, taj će resetovati računar, i ponovo se logovati,
/ u kom će se trenutku fajl osloboditi. Najgora varijanta je da taj
Ne na svim mrežama. Na RPTI ostaje zaključan; postoji program (netfile)
kojim se to zatvara, a uglavnom je dovoljno da je još neko tog trenutka
držao iste datoteke otvorene pa da se svi baferi regularno zapišu kada
ovaj drugi pozatvara. Za nevolju, niko nov ne može da ih otvori, jer su
zaključane. Za rad sa posadom nije neki problem, to i najbelje ptice
nauče iz dve tri seanse, ali za rad bez nadzora, sa serverom koji čuči
negde u nekoj kabini, baš i nije zgodno.
Bue_ Ndragan
clipper.1024bulaja,
│Da li se povećava veličina EXE fajla ako u svakoj proceduri na njenom
│početku imam ubačeno #include "tralal.ch" ?
└───
Ako u include datoteci nema nikakvog izvršnog koda (definisane funkcije
i sl.), a preporuka je da ga nikako nema :), onda se ne povećava.
clipper.1025petrovics,
>> Da li se povecava velicina EXE fajla ako u svakoj proceduri na njenom
>> pocetku imam ubaceno #include "tralal.ch" ?
Ne. Definicije iz inklud datoteke se u toku kompajliranja
ubacuju u sors umesto simbolickih naziva koji su u sorsu bili.
clipper.1026nameci,
> P.S. NEMOJ koristiti DBFCDX.LIB iz Clipper-a 5.2 jer NE
> PODRZAVA korektno mrezni rad (bug).
Ukratko u vezi ove poruke da li neko ima Upgrade za Clipper 5.2 ali
ne za US
verziju.
CU:)
clipper.1027dr.obradovic,
Zamolio bih nekoga ko ima (valjda svi imate :)) biblioteku
TERMINAL.LIB, da mi je posaljeÚ. Pojavila mi se neobjasnjiva greska
na instalacionim disketama, i nadam se da je samo ovaj fajl falican.
Hvala unapred...
cu
Dragoljub B. Obradovic
clipper.1028dvesic,
Izvoli.
terminal.arjclipper.1029bstevan,
>>>GForce, ? Imam interesantno iskustvo.
Pa prenesi ga, opiši onako ukratko, ima tu još koga bi
interesovalo.
---BSTEVAN---
clipper.1030bstevan,
>>> Jedino je šteta što radi samo sa VGA,
Da, ja imam Hercules ...
>>> ima font editor, screen editor i icon editor,
Fino i još pisan u samom GForce-u ....
Šteta dok sam na Hercules-u nemam šanse da to vidim.
---BSTEVAN---
clipper.1031bstevan,
Gorane imam problema sa funkcijom RMDIR iz tvoje biblioteke
CLIPTOOL.LIB
Parce koda izgleda ovako:
dirname = "C:ĐFPĐDAT"
IF RMDIR(dirname) != 0
TONE(300,1)
ELSE
SET COLOR TO R/W
č 24,0 SAY "RMDIR -------> C:ĐFPĐDAT"
SET COLOR TO
END IF
dirname = "C:ĐFP"
IF RMDIR(dirname) != 0
TONE(300,1)
ELSE
SET COLOR TO N/W
č 24,0 SAY "RMDIR -------> C:ĐFP "
SET COLOR TO
END IF
Kad prođe kroz ovo događa se sledeče, izbriše pod direktorijum,
C:ĐFPĐDAT a ostavi direktorijum C:ĐFP ili neizbriše ni jedno ni
drugo, i ako u njima nema ni jednog fajla.
Ja sam rešio ovako:
Propustim da mi program prođe još jednom kroz to parce koda i
tada izbriše sve.
Muci me zašto sve neradi u prvom prolazu.
---BSTEVAN---
clipper.1032dr.obradovic,
>> Izvoli.
Hvala!
cu
Dragoljub B. Obradovic
clipper.1033cinfo,
Da lise neko igrao sa novim indexima Clippera 5.2 ?
Probao sam nest ovto ovako:
set order to 1 // on sif_grada
seek 'BGD'
index on sif_grada into bgdindex rest while sif_grada = 'BGD' ;
for sif_grada = 'BGD'
To bi trebalo kreirati potpuno isti indeks kao i
index on sif_grada into bgdindex for sif_grada = 'BGD'
samo sto je daleko brze. I radi. Skoro.
Naime, stvarno kreira indeks kao sto i treba, ali kad mu probam dodati
novi slog (zgodno za BROWSE) potpuno podivlja. U NG-u pise da je jedina
razlika izmedju ove dvije varijante u, cini mi se, sestom bitu jednog bajta
u zaglavlju. Jel' neko probao da ga "rucno" prepravi tako da izgleda kao da
nije privremeni?
clipper.1034nbatocanin,
Vidim da se dosta ljudi zainteresovalo za SIx RDD posle teksta u
Računarima. Interesovanje je zaista razumljivo, jer se radi o
vanserijskom proizvodu velikih mogućnosti. U novim Računarima će
takođe biti reči o novoj verziji SIx drajvera, koja ima veoma
značajne izmene u odnosu na verziju 1.1c. Što se tiče mogućnosti, one
su zaista fascinantne i o tome možete pročitati u Računarima. Ono što
bih ovde napomenuo je da svakako treba nabaviti verziju SIx drajvera
koja podržava NSX indekse. Naime, SIx drajver se sada prodaje u dve
varijante: jedna podržava standardni FoxPro DBF/CDX/FPT format, a
druga radi po internom formatu DBF/NSX/SMT koji je projektovan da
izvuče maksimum iz SIx RDD-a. Na žalost, ova druga verzija nije još
stigla do nas, ali bi je svakako trebalo nabaviti.
Sledeća važna napomena se odnosi na probleme: od sitnijih stvari SIx
RDD će vam praviti veoma male komplikacije oko prepravki starih
programa: veoma malo standardnih funkcija je izmenjeno. U principu,
trebalo bi da samo linkovanjem vaš program proradi sa SIXCDX
drajverom. Međutim, problem je memorija: SIx traži znatno više
memorije od DBFNTX drajvera (što je razumljivo). Korišćenje sa
RTLinkom je skoro nemoguće: on ne stavlja ASM module u overleje i
tako rezultujući program traži mnogo više memorije. Rešenje je
Blinker: on može i ASM module da stavlja u overleje i program odlično
radi sa veoma malo memorije (primer: EXE od oko 1MB se izvršava sa
oko 400K RAM-a i to se još može smanjiti.). Na žalost, tu se javlja
jedan veliki problem: kada sam u svoje programe ubacio SIx drajver,
program je počeo da iskače sa greškom VM integrity failure. U čemu je
tačno problem, teško je reći. Moguće je da je reč o nekom sukobu
između Blinker-a, SIx drajvera i Clipper-a 5.2, ali je to u principu
svejedno: za sada je dosta riskantno koristiti ovu kombinaciju i
mislim da treba sačekati nove verzije, jer je ovaj bag uočljiv i
mislim da će ga brzo ispraviti. Po ranijim iskustvima mislim da je
problem u Blinker-u.
clipper.1035ndragan,
/ vreme pisanja programa. Gde koristiš ovo gore?
Pa, upravo je danas zatrebalo Tibiju (TArva na Sezamu, mislim da mu je
istekla pretplata). Napisao je jedan duži dijalog za generisanje uslova
pomoću kojeg se dobija probran skup slogova iz neke baze, i onda radi
ovo:
Select * from (_baza);
Where &uslov;
into cursor trtmrt
Browse
Itd, tu se još definiše nekakav pendžer u koji ide brauz itd. U
promenljivoj Uslov je sadržan tekst uslova kakav bi se pojavio u
programu, recimo ' datum < š31.12.93ć and broj between 13 and 145 and
...' i tome slično, što je napravio onaj prvi dijalog. Ispalo je da je
preterao, promenljiva Uslov je duža od 256 bajta, što je granica za
raspakivanje makroa.
Onda smo stvar preuredili ovako
sy = 'se'+alltrim(sys(2007,uslov))+'.prg' && izmisli ime
if !file(sy) && ako ga već nismo napravili
set alte to (sy)
set alte on && onda da ga napravimo
set cons off
?' Select * from (_baza);'
?' Where',uslov,';'
?' into cursor trtmrt'
set cons off
set alte off
set alte to
comp (sy) && kompajliraj ga
endif
do (sy) && i izvedi
Sys(2007,<cExp>) daje nekakav čeksum od drugog parametra, taman dovoljno
da se raspozna da li se isti sadržaj parametara već pojavljivao.
Razlog da radim ovakve stvari je da zaobiđem češće raspakivanje istih
makroa - čemu, ako istom lakoćom mogu da izgenerišem programče koje će
ih sadržati raspakovane i kompajlirati samo jednom, i u ovom slučaju, da
izbegnem ograničenje na dužinu makroa.
U originalnom primeru nije bilo ispisa sa Set Alternate, nego u stvari
ovako
set text to (sy)
set text on
set cons off
Đ Select * from (_baza);
Đ Where <<uslov>>;
Đ into cursor trtmrt
set cons off
set text off
set text to
Ono Đ na početku linije je ascii 92, tj beksleš (vidim ga kao Đ, ali mi
ne smeta). Najlepše od svega je što su prerada i testiranje rutine da
radi ovako trajali dva do tri minuta (okačio torbu o rame i krenuo
nekud, pa sve s nogu i ne skidajući ono s ramena). Najduže je trajalo
dok smo u helpu pronašli koji ono sys(200* ) daje čeksum ;).
Bue_ Ndragan
clipper.1036snemcev,
>> jedan veliki problem: kada sam u svoje programe ubacio SIx drajver,
>> program je počeo da iskače sa greškom VM integrity failure.
Simptomatično je da se ova greška mnogo češće javlja na 386 mašinama
nego na 286 -- otprilike 1:100, a možda i više. Zašto? Samo nebo zna...
clipper.1037dvesic,
>> Simptomaticno je da se ova greska mnogo cesce javlja na 386
>> masinama nego na 286 -- otprilike 1:100, a mozda i vise.
>> Zasto? Samo nebo zna...
Dajte jos informacija !
Da li je to SixCdx 1.5 sa ili bez Uprade-a sa Sezama ?
Koji (da li) memory.menager je prisutan ?
Ima li Double Space ? Koristi li se Stealth DblSpc od Qemm-a ?
A Stacker ?
itd, itd...
Koji kod greske javlja ? (ima ih vise VM Int Fal)
clipper.1038nbatocanin,
> Jel' neko probao da ga "rucno" prepravi tako da
> izgleda kao da nije privremeni?
šta ćeš time dobiti? Za mnogo komotnije operacije za indeksima
preporučujem SIx :)
clipper.1039dzoric,
Hi, pisem On Line. Sto se tice gresaka SIx RDD-a tice,
problem sa VM Integrity Failure sam nekako izbegao
koristeci FUNCKY II Lib, i to MFUNCkyVM.LIB, koji po
NG-u bolje hendla VM od Clipper-a.
Probajte kombinaciju SIx, Funcky, Blinker 3.0.
Pozdrav,
Dejan.
clipper.1040dzoric,
OOOOOOOOOOOOHHHHHHHHH NEEEEEEEEEEEEEEEEE
Ipak definitivan bug ( or feature ) SIx RDD-a.
I pored FUNCky-ja program je pukao sa cuvenim
VM Integrity Failure.
Steta, velika steta......
Dejan.
clipper.1041snemcev,
>> Da li je to SixCdx 1.5 sa ili bez Uprade-a sa Sezama ?
Verzija 1.5 sa upgrade-om.
>> Ima li Double Space ?
Ne.
>> Koristi li se Stealth DblSpc od Qemm-a ?
Ne. Nikakvi programi za kompresuju "u letu" nisu prisutni.
>> Koji (da li) memory.menager je prisutan ?
Qemm 7.01
>> Koji kod greske javlja ? (ima ih vise VM Int Fal)
E ovo stvarno nisam zapisivao. Da li ga uopšte ispisuje? Znam da dâ neku
levu adresu u zagradi, ali kod greške...
clipper.1042snemcev,
>> Probajte kombinaciju SIx, Funcky, Blinker 3.0.
Prva i treća stavka su tu, ali Funcky... Jesi voljan za razmenu?
clipper.1043dr.grba,
>> Ipak definitivan bug ( or feature ) SIx RDD-a.
>> I pored FUNCky-ja program je pukao sa cuvenim
>> VM Integrity Failure.
Opiši uslove pucanja, da pokušamo da rekonstruišemo. Mašina,
okruženje, broj baza i veičina,....
clipper.1044dzoric,
Evo, ovako izgledaju moja iskustva sa SIx RDD-om.
U postojecu aplikaciju za knjigovodstvo sam ulinkovao
SIx čisto probe radi. Posle početnog oduševljenja i
izbacivanja iz koda gomile SKIP funkcija za TBrowse
prikaze i uvođenjem SET SCOPE klauzula (CDX indekse
neću ni da pominjem) program je počeo s'vremena na
vreme da puca sa porukom "VM Integrity Failure" :(((
i u zagradi da adresu gde se zablesavio.
Posle mnogo testiranja, izbacivanja QEMM-a 7.03, raznih
kombinacija BLINKER 3.0 Script fajlova, dešavalo se isto.
Kad sam već bio kod unapređenja aplikacije izbacio sam
NANFOR.LIB i ubacio FUNCky II za koji tvrdim da je jedan
od najboljih LIB-ova za Clipper. FUNCky je na 5 X 1.44
i uz gomilu primera i dodatnih alata kao sto je FPATCH
pandam PATCH-u dobija se izvorni kod LIB-a + NG od oko
3 Mb. LIB ima istovetne funkcije za Clipper i za C.
Unutar FUNCky-ja postoji i FUNCkyVM.LIB koji se obavezno
linkuje i koji po dokumentaciji bolje resava Virtual
Memory.
Elem, posle linkovanja FUNCky-ja program nije više pucao
i izdržao je 7 dana intenzivnog testiranja. Ali osmi dan
ponovila se ista stvar :(((. Ipak sumnjam u SIx, jer je
već imao problema sa Blinker-om.
Linkovanje sa RTLNIK-om ne dolazi u obzir kod vecih aplikacija.
Jedino ako neko ima RTLINK PLUS (koji radi overleje C i ASM koda)
pa da probamo.
Posle svega smatram da je SIx RDD najbolji proizvod koji
sam imao prilike da koristim i pored toga što jede memoriju
i ovoga BUG-a, ali više ga niko ne izbaci iz mojih aplikacija.
Sve dodatne informacije o FUNCky.LIB-u (razmena, itd.) na MAIL.
Pozdrav,
Dejan :)
clipper.1045dzoric,
Po poslednjim informacijama od dsisic-a postoji
PATCH br. 2 za SIx RDD koji mozda resava nase probleme.
Ima izgleda da stigne u nase krajeve sledece nedelje.
Dejan.
clipper.1046neman,
>
> Simptomaticno je da se ova greska mnogo cesce javlja na
> 386 masinama nego na 286 -- otprilike 1:100, a mozda i
> vise. Zasto? Samo nebo zna...
Da, na mojoj 386 se javlja ta greska, ali sam do sada to pripisivao
recimo sukobu sa kes programom ( PCKWIK ), nisam posvecivao vise paznje
tome.
BTW, da se nadovezem na nbatocanina, sada nema onog groznog pisanja
skipkey bloka za TBrowse, vec kazem SET SCOPE i pici. A WILDSEEK je
posebna poslastica :), bas sam napisao takvu rutinu koja analizira
uneti podatak i radi trte mrte. Zaboravio sam na taj modul :)
Ostaje samo pitanje brzine. Naime, indeksiranje ( konkretnih ) baza
traje nesto duze a zauzvrat dobijam indeksnu datoteku 2-4 puta kracu,
a sama SEEK naredba je i dalje sporija od NTX-a.
Zbog toga bi trebalo razmotriti :) taj NSX drajver. Medjutim, samo
prethodne pogodnosti umanjuju ovaj problemcic.
A tek sto mi padaju na pamet mogucnosti koriscenja RYO indeksa, ali
otom poto(p) :)
I jos nesto glede clanka. Pominjes Advantage RDD koji izvrsava obradu
nad indeksima ( bazi ??? ) na samom serveru. Takav pristup mi je sumnjiv
jer zahteva valjda mnogo mocnije servere na mrezama nego sto je to kod
obicnog ;) deljenja resursa, i tu bi trebao da se vidi odnos brzine/cene
takve realizacije.
neman
clipper.1047dvesic,
>> Qemm 7.01
Uradi upgrade na 7.03. To ce resiti deo problema.
Ako te ne mrzi, posalji mi :
- AUTOEXEC.BAT
- CONFIG.SYS,
- ispis od MEM /C (ili od nekog drugog programa za raspodelu
memorije)
- informaciju o inicijalnim zahtevima programa za memorijom
(Ono sto RTlink/Blinker jave na kraju u zagradama)
- Ako imas sors programa koji pravi probleme, postavi mu kao
prvu izvrsnu liniju jedno WAIT "", pa program startuj sa
APP.EXE //INFO pa mi i to posalji
ako te mrzi, onda nista :)))
clipper.1048dvesic,
Da li su svi koji imaju problema sa SIx & VM uradili
upgrade sa Sezama ?
Mozda je potreban jedan DownUpGrade na originalnu verziju ... :))
Meni programi radjeni sa cistom 1.5 jos nisu (cuk, cuk) pucali
na ovaj nacin, dok me je jedan skoro menjan u firmi bas danas lepo
obradovao :(
clipper.1049dr.grba,
>> prvu izvrsnu liniju jedno WAIT "", pa program startuj sa
>> APP.EXE //INFO pa mi i to posalji
Šta znači ovo //INFO? Je li ovo neki Clipper hint???
De, da probam...
...
Gle, vraga.... GDE JE OVO BILO DOSADA???
clipper.1050bulaja,
│Po poslednjim informacijama od dsisic-a postoji
│PATCH br. 2 za SIx RDD koji mozda resava nase probleme.
└───
Izgleda da se sprema i SIx 2.0 :). U katalogu dobijenom od nekog USA
software dilera već se prodaje i SIx v1.5 sa besplatnim upgrade-om na
verziju 2.0. Takodje izgleda da će skoro izaći i FUNCky 3. Btw da li je
neko ovde video na delu ExoSpace ili neki GrumpFish Lib?
clipper.1051nbatocanin,
>>> jedan veliki problem: kada sam u svoje programe ubacio
>>> SIx drajver, program je počeo da iskače sa greškom VM
> integrity failure.
>
> Simptomatično je da se ova greška mnogo češće javlja na
> 386 mašinama nego na 286 -- otprilike 1:100, a možda i
> više. Zašto? Samo nebo zna...
Ne bih rekao: meni je sa skoro istim procentom program iskakao na
286/12MHz.
clipper.1052nbatocanin,
> Dajte jos informacija !
> Da li je to SixCdx 1.5 sa ili bez Uprade-a sa Sezama ?
1.5a. Clipper 5.2c, Blinker 2.01 ili 3.0 svejedno. Probano na raznim
mašinama, javljalo se i na klot DOS 3.31, a o 5.0 + QEMM da i ne
pričam... Dakle, nema veze sa drugim programima.
> Koji kod greske javlja ? (ima ih vise VM Int Fal)
Nema ga u spisku: "VM integrity failure".
clipper.1053nbatocanin,
> I jos nesto glede clanka. Pominjes Advantage RDD koji
> izvrsava obradu nad indeksima ( bazi ??? ) na samom
> serveru. Takav pristup mi je sumnjiv jer zahteva valjda
> mnogo mocnije servere na mrezama nego sto je to kod
> obicnog ;) deljenja resursa, i tu bi trebao da se vidi
> odnos brzine/cene takve realizacije.
Pa to je klasična klijent - server organizacija. Rekao bih da
performanse zavise od obrade: može se lako desiti da posao oko
prosleđivanja podataka bude značajno veći od operacije koju treba
obaviti! Na žalost, o ovom drajveru sam pročitao svega nekoliko
rečenica i nisam imao prilike da isprobam. Mada, svakako deluje
izuzetno interesantno.
clipper.1054nbatocanin,
> Mozda je potreban jedan DownUpGrade na originalnu verziju
> ... :))
Ne, ja sam imao istih problema sa čistim 1.5. Na žalost, upgrade nije
doneo poboljšanje. A nije da se nisam nadao :(
clipper.1055neman,
> Gle, vraga.... GDE JE OVO BILO DOSADA???
U uputstvu ;)
neman
clipper.1056neman,
> obaviti! Na zalost, o ovom drajveru sam procitao svega
> nekoliko recenica i nisam imao prilike da isprobam. Mada,
> svakako deluje izuzetno interesantno.
Ta informacija ide iz nekog biltena ( gde ima slika i Visual Objects-a ),
pa posto je sve to u koloru, pretpostavljam da spada pod ono
"svaki ciga svoga konja fali". Inace i u Blinker reklami nema "VM ... " ;)
neman
clipper.1057neman,
> ovde video na delu ExoSpace ili neki GrumpFish Lib?
Ja sam imao neki stari GrumpFish. Svidela mi se ona slagalica brojeva
( 1 - 15 ) ;)
neman
clipper.1058snemcev,
>> Uradi upgrade na 7.03. To ce resiti deo problema.
Radio sam x puta, ali 7.03 mi pravi probleme sa VGA karticom (Trident
8800 (ili beše 8900, koja li je bila aktuelna '90-te kad sam kupovao
računar?)) po izlasku iz nekih programa sve boje su crne. Ništa, osim
reseta, ne pomaže. Baš mi se ne mili da posle svakog startovanja više se
i ne sećam kojih programa radim reset.
clipper.1059dvesic,
>> Radio sam x puta, ali 7.03 mi pravi probleme sa VGA karticom
>> (Trident 8800 (ili bese 8900, koja li je bila aktuelna '90-te
>> kad sam kupovao racunar?)) po izlasku iz nekih programa sve
>> boje su crne. Nista, osim reseta, ne pomaze. Bas mi se ne mili
>> da posle svakog startovanja vise se i ne secam kojih programa
>> radim reset.
Ima gomila parametara koje mozes da pokusas pre nego sto odustanes :)
Ne secam se tacno, ali NV (NoVideoFill) ili NVR (NoVideoRam)
ili VIDEO bi na liniji QEMM386.SYS u Config-u mogli da pomognu
Mozes detalje da potrazis u TECHNOTE poddirektorijumu.
clipper.1060snemcev,
>> Mozes detalje da potrazis u TECHNOTE poddirektorijumu.
Mislim da ću za detalje zloupotrebiti i tvoj mail ;)
Tnx in advance. Imaš piće u Kikindi...
clipper.1061bstevan,
Zdravo !
Interesuje me gde se može nabaviti LIB - menadjer,
i koja je cena.
Dali postoji neki SW/PD LIB - menadjer i dali ga ima
negde na SEZAM-u ?
---BSTEVAN---
clipper.1062bstevan,
Interesuje me dali ima neko funkciju za ispitivanje
dali je disketa stavljena u drajv A ili B.
Funkcija bi trebala da je pisana u S87'.
---BSTEVAN---
clipper.1063bulaja,
│Interesuje me dali ima neko funkciju za ispitivanje
│dali je disketa stavljena u drajv A ili B.
│Funkcija bi trebala da je pisana u S87'.
└───
Slao sam nekad davno (mislim da je tada S87 još uvek bio šire
aktuelan:) trik za otkrivanje da li je disketa u drajvu odnosno
ili da li postoji hard disk particija (valjda ga je u Dejan bio
objavio u Bajtovima...).
LM, samo pozovi funkciju DiskSpace() za zeljeni drajve (A: = 1,
B: = 2,...) i ako ti vrati neku razumnu vrednost onda je disketa
u drajvu odnosno posoji HD particija, a ako javi neki nenormalan
broj (reda nekoliko Gb slobodnog prostora na disketi:) onda nema
diskete u drajvu.
clipper.1064nbatocanin,
> Ta informacija ide iz nekog biltena ( gde ima slika i
> Visual Objects-a ), pa posto je sve to u koloru,
> pretpostavljam da spada pod ono "svaki ciga svoga konja
> fali". Inace i u Blinker reklami nema "VM ... " ;)
čitao sam u nekoliko novina, ali su uglavnom bile vesti, pa je teško
nešto preciznije reći. Međutim, ideja mi se svakako sviđa.
clipper.1065dpredovic,
> Unutar FUNCky-ja postoji i FUNCkyVM.LIB koji se obavezno
> linkuje i koji po dokumentaciji bolje resava Virtual
> Memory.
Meni se čini da je fazon da funckyvm _koristi_ VM, a ona druga
(funckycl) ne, da bi bila kompatibilna sa S87.
Inače, koliko odvajate za stack? Ja sam bogami sa funcky i six-om
dogurao do lepih 15k.
Cu, Dejan
clipper.1066dpredovic,
> Šta znači ovo //INFO? Je li ovo neki Clipper hint???
>
> De, da probam...
>
> ...
>
> Gle, vraga.... GDE JE OVO BILO DOSADA???
A tek //SWAPTRACE... Možda bi moglo biti korisno povodom cele ove
priče?
Cu, Dejan
clipper.1067dr.grba,
>> > Gle, vraga.... GDE JE OVO BILO DOSADA???
>>
>> A tek //SWAPTRACE... Možda bi moglo biti korisno povodom cele
>> ove priče?
Jel' može neko da baci sve ove prekidače?
clipper.1068snemcev,
>> Inače, koliko odvajate za stack? Ja sam bogami sa funcky i six-om
>> dogurao do lepih 15k.
Kako odvajaš prostor za stack? Zar to VM sistem ne radi sam?
clipper.1069bstevan,
>>> LM, samo pozovi funkciju DiskSpace() za zeljeni drajv (A: = 1,
>>> B: = 2,...) i ako ti vrati neku razumnu vrednost onda je disketa
>>> u drajvu odnosno postoji HD particija,
Hvala, to mi rešava problem.
---BSTEVAN---
clipper.1070dpredovic,
> Kako odvajaš prostor za stack? Zar to VM sistem ne radi sam?
U Blinkeru sa STACK komandom, sa rtlinkom ne može, ali može naknadno da
se "prevari" sa exehdr. Inače stack je jedna od lepih stvari kojima ni
VM ni protected mode ne pomaže. žak i windowsi u 386 modu imaju stack od
64K.
Koliko sam primetio, kod clipper-a stvar stoji ovako: postoje DVA steka
- normalni, mašinski stack i eval stack tj. clipperov interni stack na
kojem on (u osnovi stack interpreter) izračunava izraze. Za to je
odvojen DS segment koji pored ta dva stacka izgleda sadrži i
compile-time inicijalizovane statičke promenljive.
Ergo:
1. ako vam program pravi nepredvidljive probleme povećajte stack
2. ako dobijate grešku eval stack fault i sl, smanjite stack
3. ako ste uradili 2., pa vam se javlja 1., UNDO & statičke
promenljive inicijalizujte run-time
Ako ne funkcionise nijedna varijanta, ostaje:
4. objasnite korisnicima sve mane PC tehnologije, kukajte na
nesavršenost alatki, plačite nad segmentnom arhitekturom itd. ;)
Cu, Dejan
clipper.1071dzoric,
A ako mi javi "Internal Stack Overflow" i pri tom
mi unisti FAT.
Dejan.
clipper.1072goxx,
Imam jedno pitanje. Počeo sam da radim podsistem za štampu. Ispis
svega što postoji u aplikaciji treba da ide preko jedne rutine. U stvari,
sve se upisuje binarno u fajl. I štampač se otvara kao fajl (PRN).
Problem je (banalno gledano) sledeći :
#include "FileIO.Ch"
#define CRLF CHR(13)+CHR(10)
FUNCTION Main()
LOCAL stampac := FOPEN("PRN", FO_WRITE)
FWRITE(stampac, "Neki tekst koji se stampa" + CRLF)
FCLOSE(stampac)
RETURN NIL
Funkcija FWRITE() radi normalno kada je štampač spreman za stampu.
Medjutim problem nastaje kada se štampač stavi off-line. Tada, funkcija
jednostavno čeka da štampač bude spreman. Očekivao sam da se funkcija
prekine i vrati broj upisanih bajtova (manji od dužine stringa) i da se
kasnije funkcijom FERROR() dobije neki kod greske.
Da li postoji neki način da se ovo zaobidje, i da se ispita kada je
štampač nespreman.
Unapred zahvaljujem na svim odgovorima i konstruktivnim savetima.
Goran.
clipper.1073mpeti,
cao narode !
Ovo pišem on-line pa mi ne zamerite za loš izgled teksta.
Možda je već prošo voz, ali samo da kažem moja iskustva o kombinaciji
DBFSIX, Blinker. Koristim DBFSIX (v1.1) :( jer još nisam nabavio 1.5.
I meni je često ispadao sa VM Integr.... grrrrrrrr :(.
Posle nekog čačkanja sa u DBFSIX.lnk forsirao module SXINDEX i SXSETHI u root
(skinuti tarabe sa početka redova gde se ovi navode) i posle toga mi je sve
lepo radilo. Nisam još radio sa 1.5 ali možda nekome ovo da ideju, pa probajte
da experimentišete.
Uzgred ima li neko iz Subotice, Novog Sada, Zrenjanina, Sombora ili Kikinde a
ima SixCDX drajver. Molio bih dobru dušu koja je voljna za neku trampu da mi se
javi na mail ili na (024) 26-618.
Pozdrav MPeti
clipper.1074zizo,
Neko ovde reče da se FoxPro *.APP fajlovi ne isplate zipovati,
jer se ništa ne može uštedeti.
To je slučaj ako su fajlovi pravljeni sa ENCRYPT(ED) opcijom.
U tom slučaju zip ih komprimuje sa uštedom od 0-1%.
Ali ako se ne navede ENCRYPT dobijaju se fajlovi koji su
u bajt iste dužine a stepen kompresije je i do 75% (25% orig.).
Kako sam ovo otkrio?
Trebao sam da modemom prebacim izmenjenu verziju programa
korisniku, kad vidim stepen kompresije kod ZIP-a 1%. Znam da ZIP-ovan
fajl treba da bude 3x kraći od originala, a oni skoro jednaki u bajt.
Poverujem, u prvom trenutku, da sam došao do epohalnog otkrića
da: ili je ZIP-u istekao period registracije pa zajebava (šta ga znaš)
ili ga je Fox navuko da pobrljavi.
Tek kasnije se setim da sam se opet zezao sa encrypt.
Da remiziramo:
FoxPro kod enkriptovanja dobije fajl koji je u bajt iste
dužine kao ne enkriptovani, samo što se umesto imena varijabli i
sadržaja konstanti, koje ima izvorni kod, pojavljuju tzv. KIKE (Kuke I
KvakE) koje se ne mogu komprimovati.
U ovom slučaju meni više odgovara 3x manji prenos nego što
će neki haker da mi "razbije" program.
Pozdrav
█ █ █ █
▄▄█ █ █▄▄ █▄▄
clipper.1075solomus,
Znate šta !
Iza mene je četiri godine Clipper-a, gomila uradjenih projekata, trenutno
za jedno veliko osiguravajuće društvo radim glavne aplikacije sa bazama
od par stotina hiljada rekorda a vi meni tako ! :)
Molim ? Kako šta vi meni tako ?
Pa, evo šta. Godinu dana me nema na Sezamu, pokupim lepo celu temu u rikverc
i čitam, čitam i lepo, tu i tamo, nemam pojma o čemu pričate.
Pored vas nekoliko *referentnih* Clipper-aša se pogotovo osećam kao malo dete !
Šalim se, naravno, potrčaću malo pa će vas stignem :)).
E, i još nešto.
Bale mi curile kad god se pričalo o SIx-u, te se dadoh se u poteru za istim.
Prevrnuo sam većinu BBS-ova, potegao (ne)legalne veze i NIL !
I sad, kažite vi meni, jel' to lepo :) !
P.S. More, pevajte bre gdi ga krijete !!!
clipper.1076bulaja,
│Funkcija FWRITE() radi normalno kada je štampač spreman za stampu.
│Medjutim problem nastaje kada se štampač stavi off-line. Tada, funkcija
│jednostavno čeka da štampač bude spreman.
└───
NoRMaLno :), ipak ne možeš tretirati printter kao običan file :). Pre
upisivanja koristi funkciju IsPrinter() ili, ako baš hoćeš da sve bude
low-level :), Int 17h ili Port 379h (oba služe za kontrolu printer-a,
pogledaj neki od INFO fajlova za opis).
clipper.1077mirche,
> Da li postoji neki način da se ovo zaobidje, i da se ispita
> kada je štampač nespreman.
ISPRINTER() je valjda ono što tražiš.
clipper.1078nbatocanin,
> Integr.... grrrrrrrr :(. Posle nekog čačkanja sa u
> DBFSIX.lnk forsirao module SXINDEX i SXSETHI u root
> (skinuti tarabe sa početka redova gde se ovi navode) i
> posle toga mi je sve lepo radilo.
Nije to: štos je u memoriji, pa si verovatno ovom intervencijom
promenio mem. mapu.
> Uzgred ima li neko iz Subotice, Novog Sada, Zrenjanina,
> Sombora ili Kikinde a ima SixCDX drajver.
Javi se anenad-u, nadam se da ti može pomoći.
clipper.1079dpredovic,
>> Integr.... grrrrrrrr :(. Posle nekog čačkanja sa u
>> DBFSIX.lnk forsirao module SXINDEX i SXSETHI u root
>> (skinuti tarabe sa početka redova gde se ovi navode) i
>> posle toga mi je sve lepo radilo.
>
> Nije to: štos je u memoriji, pa si verovatno ovom intervencijom
> promenio mem. mapu.
AAAAAAAAAAAArrrrrrrrrggghhhhhhh!!!!
(Tension breaker, had to be done.)
Nakon cca mesec i po dana VM Integrity fai*&%$#, konačno mi se ukazao TAO!
Ako je problem u VM, zašto ju ne isključiti? Daklem, jedno
BLINKER CLIPPER PAGE OFF rešava problem, barem što se tiče VM Integ %$#%$#.
Doduše, blinkerovi overleji porastu na cca 360K, ali šta se može: BLINKER
CACHE XMS 512, pa će sve moći sasvim lepo da se podnese...
Cu, Dejan
clipper.1080ndragan,
/ A ako mi javi "Internal Stack Overflow" i pri tom
/ mi unisti FAT.
Na čemu onda napisa ovo?
Xm, ne sećam se o čemu je reč... obrisao sam svoju poruku na koju
odgovaraš, a pošto nisi ništa citirao, odgovor je
nemam pojma
clipper.1081ndragan,
/ ISPRINTER() je valjda ono što tražiš.
Za Foksovce, ova funkcija se zove PrintStatus(), za prijatelje samo
Prin().
clipper.1082cubro,
Pomoc !
Molim nekoga da mi se javi na mail (cubro), ako ima zadnju
verziju FoxPro -a (2.5 ?). Potrebne su mi neke informacije.
Ne bi bilo loshe, ako mi ostavite Vash broj telefona, pa cu
se ja javiti glasom. Unapred thank !
clipper.1083goxx,
■ ISPRINTER() je valjda ono što tražiš.
Hvala na ogovoru. To sam odavno pronašao, ali to nije to.
Goran
clipper.1084goxx,
■ Pre upisivanja koristi funkciju IsPrinter() ili, ako baš hoćeš da sve bude
■ low-level :), Int 17h ili Port 379h (oba služe za kontrolu printer-a,
■ pogledaj neki od INFO fajlova za opis).
Hvala na pomoći. ISPRINTER() mi ne završava posao (onako kako sam trenutno
zamislio). Pogledaću joć funkciju write (ili još niže _open _write _close) iz
C-a.
Goran
clipper.1085dzoric,
>> Xm, ne sećam se o čemu je reč... obrisao sam svoju poruku na koju
>> odgovaraš, a pošto nisi ništa citirao
Izvinjavam se bio je reply na 11.1070, ali sam pisao on-line
pa sam omanuo.
>> Ergo:
>> 1. ako vam program pravi nepredvidljive probleme povećajte stack
>> 2. ako dobijate grešku eval stack fault i sl, smanjite stack
>> 3. ako ste uradili 2., pa vam se javlja 1., UNDO & statičke
>> promenljive inicijalizujte run-time
>> A ako mi javi "Internal Stack Overflow" i pri tom
>> mi unisti FAT.
clipper.1086snemcev,
>> 4. objasnite korisnicima sve mane PC tehnologije, kukajte na
>> nesavršenost alatki, plačite nad segmentnom arhitekturom itd. ;)
Interesantan prilog. Elem, problema sa stekom još nisam imao, a nadam se
da će tako i da ostane. :)
clipper.1087dsisic,
Hi!
SIXNSX 1.5 came in to town!!!
Ko voli da proba, mail-me.
Takodje je stigao patch br 2 za SIXCDX, ali ne u formi patcha, vec u
obliku LIB direktorijuma sa neke xxx masine iz neke xxx zemlje.
U principu, mogao bi se napraviti patch iz domace radinosti, zar ne!!
Sto se tice VM Int. Failure, ljudi iz inostranstva koji rade sa SIXOM
i koji imaju mnogo bolji pristup raznoraznim forumina ... tvrde da
je to bug Clippera, a ne Sixa i da Six sa svojim zahtevima
za memorijom ili nekim drugim pozivima samo otkriva nemarnost
CA programera.
clipper.1088dsisic,
Sledstveno poruci koju sam nedavno ostavio ovde, obavestavam vas da
posedujem patch koji ce od datoteka:
sixcdx lib 231,845 5:22a
machsix lib 87,677 5:22a
machsix ch 36,117 5:20a
napraviti:
sixcdx lib 232,883 5:23a
machsix lib 91,799 5:23a
machsix ch 36,245 5:23a
Dakle, radi se o patchu u domacoj radinosti koji nije autorizovan.
Ovo je uradjeno u nedostatku zvanicnog patcha.
Cenim da ovaj patch moze biti downloadovan u ovu konferenciju
iako nije autorizovan dok se ne nabavi regularan, kako bi se svi oni
koji su presli na SIX zakrpili.
O patchu nemam nikakvu dokumentaciju.
Voleo bih kratak odgovor od nadleznih u vezi DownLoadinga :)
Ko zeli precicom, mail-me. ( Patch je kratak: 38,437 bytes )
clipper.1089djelovic,
> Voleo bih kratak odgovor od nadleznih u vezi DownLoadinga :)
Patch je dobrodošao.
clipper.1090dsisic,
Evo patcha
six2.arjclipper.1091nbatocanin,
> Ako je problem u VM, zašto ju ne isključiti? Daklem, jedno
> BLINKER CLIPPER PAGE OFF rešava problem, barem što se tiče
> VM Integ %$#%$#. Doduše, blinkerovi overleji porastu na
> cca 360K, ali šta se može: BLINKER CACHE XMS 512, pa će
> sve moći sasvim lepo da se podnese...
Teško... Ovakvi programi iskaču i sa 700K osnovne memorije :(
clipper.1092dmajkic,
Nov sam kliperaš. :) Ne, neću pitati ima li ko SIX v2.0 ili
Blinker ili ne_znam_ti_ja_koju_tamo_biblioteku. (To ću da
pitam za koji mesec. ;) )
Očekujem vašu podršku u rešavanju problema koji mi tokom
učanja budu iskrsli.
Prva stvar koju bi hteo da pitam je koji editor koristite?
Da li ste ga konfigurisali da radi kao mali CA IDE, i kako?
Probao sam brief, međutim, brlja mi po norton gajdu.
Druga stvar, kako se koriste vbase52.pll i vbase52.plt?
Toliko za sad, unapred hvala i pozdrav svima. :)
clipper.1093neman,
> Nov sam kliperas. :) Ne, necu pitati ima li ko SIX v2.0
> ili Blinker ili ne_znam_ti_ja_koju_tamo_biblioteku. (To cu
> da pitam za koji mesec. ;) )
Ako, ako...
> Prva stvar koju bi hteo da pitam je koji editor koristite?
> Da li ste ga konfigurisali da radi kao mali CA IDE, i
> kako?
Ja koristim SideKick 1.1 (?)
> Druga stvar, kako se koriste vbase52.pll i vbase52.plt?
Clipper ime
Rtlink fi ime /pll:vbase52
ime
Treba da postoji i jedno
SET PLL=put_do_direktorijuma_gde_ti_je_pll
npr.
SET PLL=D:\CLIPPER5\PLL
BTW otkud ti vbase52, obicno je samo base52 ?
neman
clipper.1094dpredovic,
..SOR 2.30 EXEC Z0F72176
CONF JOIN PC.PROG.3
CONF REPLY 11.1091
>> Ako je problem u VM, zašto ju ne isključiti? Daklem, jedno
>> BLINKER CLIPPER PAGE OFF rešava problem, barem što se tiče
>> VM Integ %$#%$#. Doduše, blinkerovi overleji porastu na
>> cca 360K, ali šta se može: BLINKER CACHE XMS 512, pa će
>> sve moći sasvim lepo da se podnese...
>
> Teško... Ovakvi programi iskaču i sa 700K osnovne memorije :(
Khm... Radost je bila preuranjena... schmrc... :(
U celom teoretskom razmatranju sam zaboravio maaalu sitnicu...
Sa PAGE OFF Blinker preuzima na sebe rad sa kompletnim kodom
(i clipper i c). Problem je što na clipperu opet ostaje da
barata sa podacima. Jeste da ovo pomaže (oko 250-300 kila manje
za clipper da se muči), ali sam uspeo i to da oborim.
Da bude još gore, ceo program sam (konačno) prebacio u
EXECUTABLE EXTENDED, i guess what? Opet isto...
ALI...
Program takav kakav jeste, puca kada malo jače dune promaja, kod
korisnika startujem iz windowsa. Program se muči, krči, radi do
zla boga sporo, ali NE puca???
Neću (opet) da kažem da imam neko spasonosno rešenje, ali mi se
stvarno čini da je to-to:
Izgleda da stvar spasava DPMI, bilo bi vrlo glupo da postoje
aktivna dva VM menagera, jedan u dos-u (windowsu), a drugi u
clipperu, da rade isti posao. Daklem, izgleda da ako postoji externi
DPMI, blinker ne pravi neku njegovu emulaciju, u kojoj učestvuje i
clipper, nego se kompletan MM prebacuje na pravi DPMI.
Naravno, ne pada mi napamet da korisnike teram da moj program startuju
iz windowsa, pa mi na pamet pade QDPMI, ali avaj... Bez obzira na ono
što piše u NG blinker NEĆE aktivirati QDPMI, ako je ulinkovan swapruncmd.
Nije neka strašno velika greda, pošto u extended modu ostaje ihaha mesta
i za običan RUN, ali bi ipak voleo da mi neko pošalje overlay.lib.
Imao sam ga nekad, ali sam ga skinuo kad je stigao Blinker 3.0.
Cu, Dejan
PS. Jel i kod vas u exe fajlu piše Blinker 3.0 Beta 8?
clipper.1095nbatocanin,
> Probao sam brief, međutim, brlja mi po norton gajdu.
??? Kako? Ja ga koristim otkako znam za sebe :)
clipper.1096feniks,
Jel pratio neko prva dva časa Clipper-a na
Prolupatoru? Dr.ing.prof.Ćosić je čujem doveo nekog
da na popularan način nauči ljude. Ako neko ima te
demo programe nek mi baci na mail a može i ovde,
sigurno još nekog to interesuje.
S.P.
clipper.1097nbatocanin,
> Izgleda da stvar spasava DPMI, bilo bi vrlo glupo da
> postoje aktivna dva VM menagera, jedan u dos-u (windowsu),
> a drugi u clipperu, da rade isti posao. Daklem, izgleda da
> ako postoji externi DPMI, blinker ne pravi neku njegovu
> emulaciju, u kojoj učestvuje i clipper, nego se kompletan
> MM prebacuje na pravi DPMI.
Na žalost, izgleda da puca i u protected modu. Više bi mogao da kaže
dsisic.
clipper.1098dpredovic,
>> Ako je problem u VM, zašto ju ne isključiti? Daklem, jedno
>> BLINKER CLIPPER PAGE OFF rešava problem, barem što se tiče
>> VM Integ %$#%$#. Doduše, blinkerovi overleji porastu na
>> cca 360K, ali šta se može: BLINKER CACHE XMS 512, pa će
>> sve moći sasvim lepo da se podnese...
>
> Teško... Ovakvi programi iskaču i sa 700K osnovne memorije :(
Khm... Radost je bila preuranjena... schmrc... :(
U celom teoretskom razmatranju sam zaboravio maaalu sitnicu...
Sa PAGE OFF Blinker preuzima na sebe rad sa kompletnim kodom
(i clipper i c). Problem je što na clipperu opet ostaje da
barata sa podacima. Jeste da ovo pomaže (oko 250-300 kila manje
za clipper da se muči), ali sam uspeo i to da oborim.
Da bude još gore, ceo program sam (konačno) prebacio u
EXECUTABLE EXTENDED, i guess what? Opet isto...
ALI...
Program takav kakav jeste, puca kada malo jače dune promaja, kod
korisnika startujem iz windowsa. Program se muči, krči, radi do
zla boga sporo, ali NE puca???
Neću (opet) da kažem da imam neko spasonosno rešenje, ali mi se
stvarno čini da je to-to:
Izgleda da stvar spasava DPMI, bilo bi vrlo glupo da postoje
aktivna dva VM menagera, jedan u dos-u (windowsu), a drugi u
clipperu, da rade isti posao. Daklem, izgleda da ako postoji externi
DPMI, blinker ne pravi neku njegovu emulaciju, u kojoj učestvuje i
clipper, nego se kompletan MM prebacuje na pravi DPMI.
Naravno, ne pada mi napamet da korisnike teram da moj program startuju
iz windowsa, pa mi na pamet pade QDPMI, ali avaj... Bez obzira na ono
što piše u NG blinker NEĆE aktivirati QDPMI, ako je ulinkovan swapruncmd.
Nije neka strašno velika greda, pošto u extended modu ostaje ihaha mesta
i za običan RUN, ali bi ipak voleo da mi neko pošalje overlay.lib.
Imao sam ga nekad, ali sam ga skinuo kad je stigao Blinker 3.0.
Cu, Dejan
PS. Jel i kod vas u exe fajlu piše Blinker 3.0 Beta 8?
clipper.1099snemcev,
>> Jel pratio neko prva dva časa Clipper-a na Prolupatoru?
>> Dr.ing.prof.Ćosić je čujem doveo nekog da na popularan način nauči
>> ljude. Ako neko ima te demo programe nek mi baci na mail a može i
>> ovde, sigurno još nekog to interesuje.
Jel' ti to ozbiljno?!
clipper.1100dpredovic,
> Na žalost, izgleda da puca i u protected modu. Više bi mogao da
> kaže dsisic.
Jesi li probao pod DPMI-jem, ja stvarno još nisam uspeo da ga
nateram da pukne, a problem sa swpruncmd sam rešio sa shroom-om.
Cu, Dejan
clipper.1101mbole,
> A još kada bi moglo u .LNK fajlu da se napiše nešto kao:
># ifdef d
> ...
># endif
> pa da nemam dva-tri skript fajla za linker, bilo bi izvanredno.
>
> Saša
Listam ovih dana poruke iz perioda 4.93-3.94 dok me nije bilo ovuda pa
natrčah na ovo.
Ako sam dobro shvatio šta te muči, reč je o raznim varijantama lnk filea
za demo, radnu i final verziju.
Davno već ne koristim rtlink (pa se ne sećam da li omogućava include
.lnk datoteka), ali kod blinkera sam ovo rešio ovako:
Imam tri mala lnk fajla trtradna.lnk, trtdemo.lnk i trtfinal.lnk, u
kojima se nalaze razlike za ove verzije što se tiče linkera. Npr u
trtfinal.lnk stoji blinker inc off koga nema u trtradna.lnk. Rmake u
zavisnosti od prenetog parametra bat fajlu poziva blinker sa nekom od njih.
Na kraju svake se nalazi jedno @trt.lnk u kome se ustvari nalaze moduli
koje treba povezati, i koji su zajednički za sve verzije.
Sada se izmene vrše samo na jednom mestu.
PS. Sory ako otkrivam toplu vodu.
clipper.1102arazumenic,
-> Imam tri mala lnk fajla trtradna.lnk, trtdemo.lnk i trtfinal.lnk, u
-> kojima se nalaze razlike za ove verzije što se tiče linkera. Npr u
-> trtfinal.lnk stoji blinker inc off koga nema u trtradna.lnk. Rmake u
-> zavisnosti od prenetog parametra bat fajlu poziva blinker sa nekom od
-> njih.
-> Na kraju svake se nalazi jedno čtrt.lnk u kome se ustvari nalaze moduli
-> koje treba povezati, i koji su zajednički za sve verzije.
Da, ovo funkcioniše, ali samo ako svuda koristiš iste prekidače prilikom
kompajliranja programa, odnosno ako koristiš isti .OBJ fajl za sve verzije,
što kod mene nije slučaj. Ne znam da li si obratio pažnju na to da za
različite verzije .EXE fajla koristim različito kopmajlirane .PRG fajlove.
Tako u .LNK za radnu verziju stoji FILE radniĐxxx.obj, u .LNK za debug
verziju stoji FILE debugĐxxx.obj, a u .LNK za instalacionu verziju stoji
FILE installĐxxx.obj.
Osim toga, za radnu i debug verziju koristim blinker, a za instalacionu
RTLink.
Naravno, da osim ovih glavnih razlika, postoje još i neke druge, manje
bitne za ovaj problem .LNK datoteka.
Saša
clipper.1103dmajkic,
+>> Probao sam brief, međutim, brlja mi po norton gajdu.
+>
+> ??? Kako? Ja ga koristim otkako znam za sebe :)
Pa pojavi se okvir NG-a, ali nema teksta. Počne da se nazire kada
mrdam "štanglu" kursorskim tasterima, a onda počne da sipa đubre.
Plus što se stalno kači sa brifovim satom u ćošku. :(
clipper.1104mbole,
> različite verzije .EXE fajla koristim različito kopmajlirane
> .PRG fajlove. Tako u .LNK za radnu verziju stoji FILE
> radniĐxxx.obj, u .LNK za debug verziju stoji FILE
> debugĐxxx.obj, a u .LNK za instalacionu verziju stoji FILE
> installĐxxx.obj.
Zašto ovo ne rešavaš u samom programu sa
#ifdef debug
.....
#endif
#ifdef inst
....
#endif
ili sličnim konstrukcijama. Jedino ako postoje baš žestoke razlike. Al
nikako ne vidim razlog zašto bi razlike između radnog i finalnog filea
trebale (a i smele) da budu velike.
Lično se trudim da tu razliku održim na što manjem nivou, recimo
preskačem uvodni ekran i neke slične gluposti, da bi mogao da testiram
aplikaciju u što realnijim uslovima.
> Da, ovo funkcioniše, ali samo ako svuda koristiš iste prekidače
> prilikom kompajliranja programa, odnosno ako koristiš isti .OBJ
> fajl za sve verzije,
A što bi prekidači morali da budu isti? Recimo:
!ifdef debug
!ifdef demo
.prg.obj:
clipper $* /m /n /b /w /o$@ /ddebug /ddemo
!else
.prg.obj:
clipper $* /m /n /b /w /o$@ /ddebug
!endif
!else
!ifdef demo
.prg.obj:
clipper $* /m /n /l /w /o$@ /ddemo
!else
.prg.obj:
clipper $* /m /n /l /w /o$@
!endif
!endif
Naravno kada se kompajlira finalna verzija ide i jedno /f u pozivu
rmake-a tako da ga nateram da prevede sve što postoji iz početka.
Doduše /f je ponekad neophodan i u toku rada, ali je to ipak srazmerno
retko.
clipper.1105arazumenic,
-> Zašto ovo ne rešavaš u samom programu sa
-> # ifdef debug
-> # endif
Ovo tako i rešavam. Inače, razlika izmedju radnog i finalnog fajla je
minimalna, odnosno da mi u pojedinim fazama rada prikaže neke informacije.
-> A što bi prekidači morali da budu isti? Recimo:
Upravo je problem u različitim prekidačima.
-> Naravno kada se kompajlira finalna verzija ide i jedno /f u pozivu
-> rmake-a tako da ga nateram da prevede sve što postoji iz početka.
-> Doduše /f je ponekad neophodan i u toku rada, ali je to ipak srazmerno
-> retko.
E sada ovako. Način na koji ti radiš je sledeći:
Ispravljaš neki deo programa, startuješ rmake sa /ddebug, Clipper prevodi
ispravljeni fajl sa "clipper $* /m /n /b /w /o$č /ddebug", i posle toga se
linkuje. Završiš razvoj tog fajla, i startuješ rmake bez prekidača. E sada
ti Clipper NE prevodi ponovo taj fajl, već se samo startuje linker, i linkuje
.OBJ fajl koje preveden sa /b /ddebug, jer svuda ti .OBJ fajlovi idu i isti
direktorijum.
Ako si pažljivo čitao moju poruku, video si da su kod mene 3 direktorijuma
za .OBJ fajlove. U jednom je radna verzija, u drugom debug verzija, a u
trećem je instalaciona verzija .OBJ fajlova. Zbog toga što su u različitim
direktorijumima, zbog potrebe za dodatnim .OBJ fajlovima za debug verziju,
moram da imam 3 .LNK datoteke. Zato mi nedostaje prenos prekidača iz rMake
u skript fajl za linker.
Saša
clipper.1106drdjokic,
Kako da deaktiviram u Cliper programu kombinaciju tastera ALT cŤC, kako bih
sprecio nasilni izlazak iz programa.
Hvala unapred !
clipper.1107bulaja,
│Kako da deaktiviram u Cliper programu kombinaciju tastera ALT cŤC,
│kako bih sprecio nasilni izlazak iz programa.
└───
SetCancel (.F.)
clipper.1108mbole,
> Ispravljaš neki deo programa, startuješ rmake sa /ddebug,
> Clipper prevodi ispravljeni fajl sa "clipper $* /m /n /b /w
> /o$č /ddebug", i posle toga se linkuje. Završiš razvoj tog
> fajla, i startuješ rmake bez prekidača. E sada ti Clipper NE
> prevodi ponovo taj fajl, već se samo startuje linker, i linkuje
> .OBJ fajl koje preveden sa /b /ddebug, jer svuda ti .OBJ
> fajlovi idu i isti direktorijum.
Neće biti :) Tj. bilo bi tako da nisam startovao rmake sa prekidačem /f
koji tera rmake da prevede sve iz početka, bez obzira na vremena kreiranja
.obj odnosno .prg fajlova.
Tačnije rečeno ovo se sve poziva iz jednog .bat fajla kome šaljem
prekidače d(debug-poziva debuger nakon linkovanja), e(konačna exe verzija),
m(demo verzija), f(full-prevodi se sve što postoji bez obzira na vremena
kreiranja), bez parametara (radna verzija- podrazumevana opcija ako nije
navedeno m ili e, tj isto kao prekidač d samo nema poziva debugera već se
samo startuje program). Ima tu još komplikacija kao naprimer ako je pozvan
samo sa parametrom m onda se prevodi sa /b a ako je pozvan sa m e prevodi
se bez /b i sa /l.
E sad nisam probao da različite .obj držim u raznim direktorijumima
(mada mi se čini da bi i to moglo da se reguliše, probaću ovih dana).
Priznajem da ne vidim neke preke potrebe za ovim, osim ako je računar na
kome radiš zaista spor.
Konačne verzije u principu prevodiš jednom ili najviše par puta, tek
nakon što si sve živo proverio na radnoj verziji. Znači sve vreme u obj
dir-u mi stoje radne .obj verzije, tj ponovo se prevodi samo menjani fajl.
Kad završim sa razvojem, pokrenem bat fajl sa f opcijom (plus e i/ili m)
tako da se svi sorsevi ponovo prevedu, i imam konačni exe.
Da ne bih davio previše evo ti uz poruku garnitura .bat;.rmk;*.lnk
fajlova pa ako ti se sviđa koristi, a ako ne teraj po svome.
Ah da ovaj .bat je prilično glomazno i ružno napisan (znam da to može
mnogo elegantnije), al prvi(i jedini :)) put kad sam ga radio bilo je negde
oko 3 ujutru, a posle me mrzelo da diram stvar koja radi :)
PS. Ne pružam nikakve garancije za priložene fajlove tj upotrebljavate
ih na svoj rizik. Biću zahvalan za dojavu svakog uočenog bug-a.
Beše ovako se to piše? ;)
make.zipclipper.1109nbatocanin,
> Pa pojavi se okvir NG-a, ali nema teksta. Počne da se
> nazire kada mrdam "štanglu" kursorskim tasterima, a onda
> počne da sipa đubre. Plus što se stalno kači sa brifovim
> satom u ćošku. :(
Mora da si nešto ubrljao sa bojama. To mora da radi.
clipper.1110toma,
Sećate se svih onih preporuka o nekorišćenju imena tipa 1200,
2200 i sličnih za DBF fajlove. E, ja nisam baš obratio pažnju na ovo
i evo sad kad konačno pređoh na 5.2 on me fino dočeka porukom da to
nije regularno ime za DBF fajl. Clipper 5.01 je ladno gutao ovakve
nazive. I još nešto. Imao sam na par mesta u programu klauzulu
SET COLOR TO To je prouzrokovalo nevidljivost teksta u naredbama tipa
@10,10 say "Naziv:" get ime
CLEAR GETS
Na ekranu je pisalo samo Naziv:, iako je ime <> ""
Toliko od mene o razlikama. Pozdrav.
clipper.1111mbole,
> i evo sad kad konačno pređoh na 5.2 on me fino dočeka porukom
> da to nije regularno ime za DBF fajl. Clipper 5.01 je ladno
> gutao ovakve
Eh ovo je stari problem na koji sam jednom natrčao. Naime u ng fajlu za
5.01 lepo piše da fajlovima ne treba davati imena koja počinju nečim drugim
osim slova. Pošto to parče uputstva nisam pročitao na vreme :))) bilo mi je
baš zgodno da fajl bude recimo 01_23_93.dbf dok se jednog dana program nije
zakucao nakon neke banalne izmene, sa nebuloznim porukama o greškama.
Nakon pokušavanja svega i svačega, pozivanja debugera u pomoć, čitanja
očenaša, i časne pionirske reči da neću nikad više, ništa nije pomoglo.
Nekako tih dana se pojavila rev a za clipper 5.01 pa reko ajd da
probamo. Poteram ga ja, a on prijavi dotičnu grešku pri kompajliranju.
Opps, šta sad. Instaliram ponovo 5.01 (bez revizije a), promenim imena
fajlova, i stvar radi bez problema.
Znači, i 5.01 ne radi kako treba (barem ponekad, što je za mene sasvim
dovoljno često) kada ime fajla počinje nečim drugim osim slova.
E sad, što su momci umesto da isprave ovo samo uveli sintaksnu kontrolu
njima na dušu.
Naravoučenije: Iako Clipper 5.01 dozvoli da ime fajla počinje brojem,
nemojte podleći iskušenju.
clipper.1112arazumenic,
-> Neće biti :) Tj. bilo bi tako da nisam startovao rmake sa prekidačem /f
-> koji tera rmake da prevede sve iz početka, bez obzira na vremena
-> kreiranja .obj odnosno .prg fajlova.
Poenta držanja .OBJ fajlova u različitim direktorijumima je ta da mi ne
prevodi sve .PRG fajlove, već samo menjane.
-> Priznajem da ne vidim neke preke potrebe za ovim, osim ako je računar na
-> kome radiš zaista spor.
Radim na jednom 386/25 i jednom 386/33.
-> Konačne verzije u principu prevodiš jednom ili najviše par puta, tek
-> nakon što si sve živo proverio na radnoj verziji. Znači sve vreme u obj
-> dir-u mi stoje radne .obj verzije, tj ponovo se prevodi samo menjani
-> fajl. Kad završim sa razvojem, pokrenem bat fajl sa f opcijom (plus e
-> i/ili m) tako da se svi sorsevi ponovo prevedu, i imam konačni exe.
Evo nekih aktuelnih podataka:
62 .PRG fajlova, približno 400k
.OBJ fajlova, 336k
Vreme kompletnog prevodjenja: 3 min i 45 sec. (386/25)
Dok nisam počeo da radim na ovaj način, dešavalo se par puta sledeće:
Startujem program (debug verzuju), dodjem na kritično mesto, i ustanovim
da mi je potrebno da vidim neki drugi deo programa. Po Marfijevom zakonu,
taj deo nije preveden sa /b. Onda prekidaj program, briši dotični .OBJ i
sve ponovo. Ovako sam siguran da mi takva egzibicija više neće trebati.
Saša
clipper.1113bulaja,
│Poenta držanja .OBJ fajlova u različitim direktorijumima je ta da mi ne
│prevodi sve .PRG fajlove, već samo menjane.
└───
????
Pa čemu onda služi (r)make?
clipper.1114snemcev,
>> Sećate se svih onih preporuka o nekorišćenju imena tipa 1200,
>> 2200 i sličnih za DBF fajlove. E, ja nisam baš obratio pažnju na ovo
>> i evo sad kad konačno pređoh na 5.2 on me fino dočeka porukom da to
>> nije regularno ime za DBF fajl.
To jeste regularno ime za dbf, ali nije za alias. Nije šija, nego vrat?
Varaš se! Pokušaj USE 1200 NEW ALIAS Kupci
clipper.1115dpredovic,
> Pa pojavi se okvir NG-a, ali nema teksta. Počne da se nazire
> kada mrdam "štanglu" kursorskim tasterima, a onda počne da sipa
> đubre. Plus što se stalno kači sa brifovim satom u ćošku. :(
Proveri da li među svim onim silnim svičevima za brief postoji -p,
ako nema - probaj.
clipper.1116ndragan,
/ E sad, što su momci umesto da isprave ovo samo uveli sintaksnu
/ kontrolu njima na dušu.
Probao sam nešto slično u foksprou prošle godine (v 2.0). U jednoj firmi
su imali kućnog programera koji je krstio dbfove sa I-230.dbf i slično.
Učini mi se sumnjivo kako će to čudo da se ponaša, pa uradim
use i-230
i prođe. Probam
? i-230.polje
i javi 'Variable "I" not found'. Probam da strpam to u imensku
promenljivu, opet javlja isto. Ispišem
? Alias()
i javi lepo A. žim ime datoteke nije regularno, on mu daje difolt alias
(A, B, C itd do Z izuzev rezervisanog M). Probam
? a.polje
kad ono radi. Elem, foks neće pući, ali možeš da gledaš u pasulj koji će
alias da bude ako sam ne izabereš zonu u kojoj otvaraš (što ja nikad ne
radim), ili sam ne odrediš alias (e to već radim, ali tek kad treba).
clipper.1117petrovics,
Mucim se neko vreme sa Blinkerom pa bih moli za pomoc.
Kako da celu aplikaiju (RTLINK-ov EXE je oko 600 KB) izlinkujem
Blinkerom ? Moze li on uopste da potpuno automatski obavi posao
kao RTLINK ?
Za sada ga koristim samo za manje programe :(
clipper.1118bdm.,
Subject: Files... :(
Prijatelji pomagajte,
imam ludački problem, stavio sam u CONFIG-u da mi je FILES čak
70 međutim Clipper mi opet ne dozvoljava da otvorim više od 20
fajlova, čista glupost... Kad pozovem aplikaciju sa //F:40 npr.
onda sve fercera super, e sad kako izbeći ovo stalno pozivanje
sa //F:40 a da to ne bude setovanjem CLIPPER=F:40, pošto ne bih
volio da mi korisnik o tome brine već da ja to nekako ugradim
u kod aplikacija, da on može samo da otkuca P i da ne mu je sve
ok... Please, hitno mi je vrlo... :(
BDM.
clipper.1119mbole,
> Kako da celu aplikaiju (RTLINK-ov EXE je oko 600 KB) izlinkujem
> Blinkerom ? Moze li on uopste da potpuno automatski obavi
> posao kao RTLINK ?
Može. Kažeš lepo blinker fi (imena obj fajlova ili @lnk datoteka) i gotovo
Sintaksa je čak potuno ista u najvećem delu. Jedino je neophodno da
recimo za finalnu verziju dodaš jedno blinker incremental off u lnk fajl.
clipper.1120mbole,
> onda sve fercera super, e sad kako izbeći ovo stalno pozivanje
> sa //F:40 a da to ne bude setovanjem CLIPPER=F:40, pošto ne bih
Postoji način al je vezan za korišćenje blinkera. U lnk fajl dodaš
liniju blinker executable clipper f:40 ili bilo šta od opcija (piše u ng
fajlu za blink).
Sa rtlink-om ovo nije moguće.
Jedina dva načina su da mu u autoexec dodaš jedno set clipper=f:40 ili
da mu kreiraš .bat fajl u kome piše app.exe //f:40 pa da pokreće aplikaciju
preko bat fajla. Ah da. žesto se zaboravi pa da te podsetim. Pazi da ne
nazoveš .bat isto kao i aplikaciju jer se onda neće nikada izvršiti .bat
već .exe.
clipper.1121.bale.,
> fajlova, čista glupost... Kad pozovem aplikaciju sa //F:40 npr.
> onda sve fercera super, e sad kako izbeći ovo stalno pozivanje
> sa //F:40 a da to ne bude setovanjem CLIPPER=F:40, pošto ne bih
Mislim da netje motji drugačije...
clipper.1122arazumenic,
-> Pa čemu onda služi (r)make?
Da mi prevede samo menjane fajlove.
Saša
clipper.1123bulaja,
│Mucim se neko vreme sa Blinkerom pa bih moli za pomoc. Kako da celu
│aplikaiju (RTLINK-ov EXE je oko 600 KB) izlinkujem Blinkerom ? Moze
│li on uopste da potpuno automatski obavi posao kao RTLINK ?
└───
Naravno da može. Pogledaj primere LNK fajlova koji se dobijaju uz
Blinker, a za početak će i ovo raditi isto što i RTLink:
Blinker FI <lista OBJ> LIB <lista LIB> BLI INC OFF
clipper.1124dejanr,
>> imam ludački problem, stavio sam u CONFIG-u da mi je FILES čak
>> 70 međutim Clipper mi opet ne dozvoljava da otvorim više od 20
>> fajlova, čista glupost... Kad pozovem aplikaciju sa //F:40 npr.
>> onda sve fercera super, e sad kako izbeći ovo stalno pozivanje
>> sa //F:40 a da to ne bude setovanjem CLIPPER=F:40, pošto ne bih
>> volio da mi korisnik o tome brine već da ja to nekako ugradim
>> u kod aplikacija, da on može samo da otkuca P i da ne mu je sve
>> ok...
Ako koristiš BLINKER, dosta je da negde na početku LNK fajla staviš:
BLINKER EXECUTABLE CLIPPER F40;
clipper.1125nbatocanin,
> Mucim se neko vreme sa Blinkerom pa bih moli za pomoc.
> Kako da celu aplikaiju (RTLINK-ov EXE je oko 600 KB)
> izlinkujem Blinkerom ? Moze li on uopste da potpuno
> automatski obavi posao kao RTLINK ?
Ja koristim sledeću proceduru (navodim datoteku APP.LNK):
BLINKER EXECUTABLE CLIPPER //F:50
OUTPUT app.exe
FILE app
BEGINAREA
FILE p1, p2, p3, p4, ... // spisak datoteka
LIBRARY l1, l2, ... // spisak bibl.
ENDAREA
@cl52min.lnk // ovo se dobija uz Blinker
i sad kad treba link za radnu verziju kažeš:
BLINKER @APP.LNK
Za finalnu verziju kažeš:
BLINKER @APP.LNK BLI INC OFF
i to je to.
> Za sada ga koristim samo za manje programe :(
Ja imam programe od preko 1MB EXE urađene na ovaj način.