clipper.923dejanr,
-> #914, snemcev>> Probao sam i dobio malo čudne rezultate. Recimo:
>> 11000 - jedanaesthiljad ( gde je a? )
>> Objašnjenje?
I ja sam malo pogledao, i jedino objašnjenje je logička greška
koju je autor napravio. Naime, on kada vidi hiljade, milione itd,
tretira sve prema istom algoritmu, a raspon 10-19 je specijalan.
Recimo kaže se dve hiljade, tri hiljade ali i dvanaest hiljadA,
trinaest hiljadA, a posle opet dvadeset dve hiljade, dvadeset
tri hiljade itd. Program ovaj izuzetak naprosto nije predvideo.
Dakle, ostaje da neko sam pokuša da ispravi program ili da se
nadamo da će autor to čuti i "srediti", pa nam poslati ispravnu
verziju.
clipper.924d.petrovic,
-> #912, jankoĂ> Eto, tu se slažemo. Proširi 'brze' delove na CEO program i eto
Ma ljudi bre, preterujete više sa tom sporošću klipera !!! Za šta se
Kliper koristi nego za baze podataka i šta rade nego komuniciraju sa nekom
prosečno obdarenom ženskom. E, sad: Ako takva prosečna ženska stiže da prati
šta program radi i još da čeka da program svoj deo posla završi (osim pri
reindeksiranju, pakovanju i sl.) onda to ne valja. Ali, ako maalkice iskusniji
i domišljatiji (namerno kažem domišljatiji, jedino treba da zamisli operatera
pri radu, koji trese cigaru u pikslu između unosa dveju stavki, mada je retko i
toliiiiiko vremena potrebno da se izvrši deo programa, recimo da izvrši commit
što ja radim češće, kad god menja vrstu rada) programer iskoristi vreme između
dve reakcije programera niko se neće žaliti da mu kliper spor. Pa radi ti isto
to i u asembleru pa će ti "skoro" isto vreme trebati ako je vreme pristupa HD-u
27 ms !! Bilo bi stvaaaarno puno da sad nastavim bla, bla kako to realizovati,
ali uopšte nije teško. Ja pri testiranju najčešće ne mogu da stignem da unesem
sve što traži iako unapred znam šta će sve desiti ako pritisnem....itd.
Pozdrav, Dejan
clipper.925d.petrovic,
-> #918, nbatocaninĂ> Na žalost, nije tako :((. Probajte ovo:
Ă>
Ă> FOR i := 1 TO 1000
Ă> REPLACE Memo WITH Space(600)
Ă> NEXT
Ma to smo već zaključili ! Izgleda da si ti samo nešto preskočio. E, sad
(lakše mi ovde da pitam nego da časkom probam ;)))) ) jel se to beše eliminiše
sa PACK ?
Pozdrav, Dejan
clipper.926janko,
-> #924, d.petrovic> Ă> Eto, tu se slažemo. Proširi 'brze' delove na CEO
> program i eto
>
> Ma ljudi bre, preterujete više sa tom sporošću klipera !!!
:) Speed was not an isue here, što kažu... NB je pominjao 'brze
delove' ali je ideja bila u tome da nije nužno da se sve
interpretira, već da bi bilo lepše da se stvarno prevodi... A
ja sam o tome pričao ne zbog brzine, već zbog sigurnosti
programera... o čemu sam napisao kilobajte i kilobajte pa ne
bih da sad ponavljam... ima sve u ovoj konf...
> reindeksiranju, pakovanju i sl.) onda to ne valja. Ali,
> ako maalkice iskusniji i domišljatiji (namerno kažem
> domišljatiji, jedino treba da zamisli operatera pri radu,
> koji trese cigaru u pikslu između unosa dveju stavki, mada
> je retko i toliiiiiko vremena potrebno da se izvrši deo
> programa, recimo da izvrši commit što ja radim češće, kad
> god menja vrstu rada) programer iskoristi vreme između
:) Tipično ponašanje programera koji NE koriste svoje programe
je da prave prilično slabašne (da ne kažem teško upotrebljive)
korisničke interfejse. Tako da ono 'znam šta nailazi' retko ima
smisla ako je interfejs slab... jer nije isto unositi
proizvoljne vrednosti i unositi bitne podatke. No, skrenuo sam
sa teme... žak i to, što je odziv spor, neki koriste da uliju
veće strahopoštovanje... ako ti kompjuter preračunava plate za
petsto ljudi dva sata, a na ekranu je poruka 'sačekajte malo,'
amater ga gleda kao boga... ako to isto uradi za manje od
minuta na XT-u, ljudi misle 'pih, pa to je * dim.' Ipak, oni
koji koriste ovaj drugi posle ovog prvog, već umeju da cene taj
drugi program.
Ova ideja da programu ne smeta da radi dugo nije pala na pamet
samo domaćim programerima (i 'programerima,' onim koji pišu
aplikacije na Turbo Bejziku, ili nekom UKPC Paskalu (koji se
interpretira), na primer). Tip iz američke firme koja pravi
programe za dekriptovanje komercijalno zaštićenih datoteka
tvrdi da su u svoje rutine dodali i petlje 'koje ne rade ništa'
da ne bi izgledalo to dekriptovanje 'isuviše jednostavno.' ;))
clipper.928toma,
-> #911, neman■■>> Ako ste zainteresovani, spremiću pregled sadržaja datoteka.
Ajd bar pregled da vidimo, kad si mi već smanjio doživljaj. :))
Pozdrav from Toma.
clipper.929dpaun,
-> #921, ciki>> Koliko muke, a kako prosta stvar.
Ima još jedno rešenje, bez ijedne programske linije:
da se napusti YU prostor ...
dPaun
clipper.930dpaun,
-> #919, nbatocanin>> Nećete verovati koliko je prosto: treba samo dodati jednu naredbu
>>
Nije znanje znanje znati, već je znanje znanje dati!
Nama iz prvog Clipper razreda fali mnogo očiglednosti, mejeutike i sl.
Ohrabren tvrdnjom da je prosto, ja pokušao ...
-> Ritao se dok nisam kompajlirao getsys sa /m/n/w (kao što piše);
-> sada je sve u redu, i YuVilajet može da odahne.
-> zato valja rezimirati:
Za podizanje MalihYu u toku kucanja, dakle kad je PICT "č!",
valja uraditi sledeće:
1) iz poruke 5.894 skinuti yu.obj;
2) iz poruke 5.899 videti način pozivanja preko VALID-a
3) iz poruke 5.919 videti koju prepravkicu treba uneti u GETSYS.PRG
4) ulinkovati yu.obj i getsys.obj u aplikaciju;
5) osećati se konačno kao YuEuroPPejac!
>>> A još ako bi to zakačio ovde, znao bi o tebi i Vita šumar iz
>>> Ravne Reke, i moj komšija Vlasta Bačilo, s kojim koljem
>>> drva u šumi, i njegova žena Vilarija, i ...
>>
>> Držim te za reč :))
Ma saznala je i cela Šumska uprava, i pola Majdanpečke Domene ...
A Laza Tufan, kozar amater iz Todorove Reke, dobio vrtoglavicu od
neverice ...
clipper.931dpaun,
-> #918, nbatocanin>>> Bitnije od ovoga jeste sam koncept: DBT će se povećavati samo kada
>>> se nešto unese u memo polje baze, a ne uvek kada se sa APPEND
>>> BLANK doda novi slog.
>>
>> Na žalost, nije tako :((. Probajte ovo:
>>
>> FOR i := 1 TO 1000
>> REPLACE Memo WITH Space(600)
>> NEXT
>>
Dobro sam mislio, ali sam kuso objasnio. Mislio sam na onu situaciju kada
se sa APPEND BLANK dodaje novi slog u bazu radi popunjavanja OSTALIH
polja, a ne i Mem-a ... Da, da. Baš sam krečana! (Ne ide, izgleda,
DrVosečstvo i ova suptilna Clipper problemtika).
>>> Nedostatke ne vidim u ovom kancerogenom konceptu DBT-a, već u
>>> siromašnim i oskudnim opcijama koje su ugrađene u MemoEdit().
>>
>> Ja suprotno: ništa mi se ne sviđa rad MEMO sistema, ni MemoEdit
>> nije nešto, ali se da dosta učiniti. Biće tekst o tome u narednim
>> "Računarima".
Nekoliko puta sam podsećao na (nailazeći) problem tekstualnih baza;
jednom sam čak i pitao kako se to rešava u svetu, kako kod nas, ali je
na moje pitanja pala prašina ... žekaću s nestrpljenjem "Računare".
>> Trebalo bi nabaviti neku od zamenu za memo polja, ima ih prilično.
>>
Vidi ti njega: zna a ćuti! Ovo na dobro ne sluti.
clipper.932ndragan,
-> #892, janko/ makro supstitucije se nikako nisu mogle koristiti onako divlje
/ kao u dBase programima.
A upravo divlje makro supstitucije čine lepotu ovakvih jezika. To je
ono što nijedan jezik pre DiBejza, Klipera i Foksa nije imao. Dobro,
imao je Spektrumov bejzik - tamo je u običnoj Input naredbi umesto
broja mogao da se ukuca algebarski izraz sa nekoliko promenljivih, i
bio bi izračunat i primljen. DB jezici su takođe doneli neverovatnu
novost: znaju kako im se šta zove.
Normalan kompajlirani jezik pamti imena promenljivih do objektnog
modula, i još imena javnih promenljivih i procedura predaje linkeru; u
linkeru sve to postaju nekakve adrese i od onih blesavih imena koje smo
nadenuli promenljivim u svom programu ne ostaje ništa. Da ne spominjem
da je nemoguće izmisliti novu promenljivu u toku izvršavanja programa,
predati _ime_ procedure kao parametar drugoj proceduri... što sve može
da se radi u DB jezicima. Možda se ljubiteljima klasičnih jezika kosa
postrojava kad čuju za tako nešto, ali to _radi_, i kad se navikneš, ne
možeš bez toga.
Evo jednog primera programa koji nikad neće raditi (?) ni u jednom
jeziku osim foks proa. Radi denominaciju:
close all
set safe off
set head off
_decc='2'
do upiti with 'na koliko decimala','_decc' && proc. koja radi READ
fsp=curd()+'*.dbf'
fajl=sys(2000,fsp)
do while ''#fajl
use (fajl) alias radna excl && otvara redom .DBF
if recc()>0 .and. fajl#'DUM'
copy stru exte to dum
sele 0
use dum
count to t for field_len>7 .and. field_dec=2
if t>0
do pron with 'dum.prg' && radi set print to fajl itd
?? '*',(fajl)
list off '* '+field_name,field_len,field_dec ;
for field_type='N'
? 'sele radna'
? 'set talk on'
? ' ? dbf()'
? ' replace all'
scan for field_len>6 .and. field_dec=2
?? ';'
? trim(proper(field_name)) at 3,;
'with round('+trim(proper(field_name))+'/10,'+_decc+')'
ends
? 'set talk off'
? 'retu'
do proff && set print off itd
sele dum
use
clea prog
* poziva se editor da se ručno dotera generisani program
modify command dum
* pa kompajler da uradi svoje
compile dum
* i, pošto nema linkovanja, odmah se izvršava
do dum
else
sele dum
use
sele radna
endif
endif
fajl=sys(2000,fsp,1)
endd
clea all
erase dum.dbf
erase dum.prg
Ovde se baš nisam pretrgao od makro zamena, s tim da je (fajl) isto što
i &fajl, samo radi brže i ograničeno je na imena fajlova. Poenta je u
tome što je za mene nezamislivo da mi ovako nešto padne na pamet u nekom
od klasičnih jezika.
Bue_ Ndragan
clipper.933ndragan,
-> #886, gristic/ Jok. Bio im komplikovan korisnički interfejs. Nije hteo sam da radi,
A i operaterka imala neograničeno bolovanje...
/ *** pisa=na je u bazi podataka Dbase II i prevedena
Ovo tek koliko da se vidi koliko sam se '88 doznavao u razliku između
Dbašića i Klipera :). Dbejz nisam ni pogledao, a kliper sam usput učio.
/ Važi 'al neće me košta. Imam, hik, vezu u Jelen pivari. ;o)
A ti si ona ekipa što je pogodila poso za pet tona piva :).
/ maleeecko stakleno sa drškom ? ;o))
Onda ga ne vredi ni dizati sa stola. Pola kile pa naviše može 'a prođe.
/ Ovako sam se namučio u C-u da povežem Btrieve i Isam (ne pitaj zašto
/* oba* !!!) i da štampam ćirilična trebovanja. Sada ću im (pro)dati
Oderi ih onda i u moje ime. Zaslužili su :). Znaš da su otvorili
filijalu i ovde - onaj bos što ima iks oči je odavde, pa... malo biznisa
u starom kraju. Imaju i nekakvo stovarište, rade... pričaj im malo o
modemima, transferu podataka itd, može još dobro i da prođe. Pa kad
budeš instalirao ovde, svrati na tu kriglu.
/ novu verziju u FoxPlusu pod Xenixom (FoxPro za *NIX? Eh, pusti
/ snovi...).
O, neee. Naježim se kad čujem za zeniks samo zbog toga što na njemu
neće foks pro. Jes' da dobro radi i f+, al' ni nalik.
/ I gos'n MBP-cobol-guru jsalai ima(o je) iskustva sa njima (zadrugom).
/ ;)
Na kraju će se ispostaviti da se u onom golubarniku izređalo pola
Sezama.
Bue_ Ndragan
clipper.934ndragan,
-> #885, dpaun/ Najbolje je ovo kopiranje ugraditi u meni kao opciju, a procedura bi
... u foks prou 2.0 bila nepotrebna, jer postoji naredba PACK MEMO.
clipper.935ndragan,
-> #901, d.petrovic/ brojeve Ascii kodova i sve to izpreračunavam na digitrončetu mu da
Nisam mislio na digitron - čak, toliko daleko od toga, da sam morao da
proverim da li je ono gore baš moj tekst što si citirao, da ne
repliciraš možda nekom drugom.
Mislio sam na muljavine tipa " copy to radna for 'maca' $ upper(animal +
pet) .and. starost > 3 .and. between(rodjenje, š01.03.90ć, š31.03.90ć)",
pa vidiš da ti ne treba to, jer su zeznuli godinu, pa staviš " copy to
radna for 'maca' $ upper(animal + pet) .and. starost > 3 .and.
month(rodjenje) = 3 ", pa onda uvatiš radnu i daš 'calculate
avg(date()-rodjenje) to prosek' tek zato što te neko preko ramena
pitao kolko su stari oni mačići iz marta devedesete. Ili postepene
konverzije datoteka: prvo pretabaš jedno od sumnjivih polja, pa drugo i
tako redom, i svaki put otkucaš samo dva tri reda i pogledaš šta si
uradeo.
A digitron se ionako nalazi u sistemskom meniju.
clipper.936ndragan,
-> #903, ppekovic/ Da ti pomognem, clipper jednu lepu stvar koja se zove clipper
/ debuger.
Sećam ga se, i veoma je dobar (S87). Jel možeš da izmisliš novu
promenljivu dok singl stepuješ kroz program? Da prošetaš kroz baze
(brauz tek da vidimo šta se događa), da pratiš promene u kritičnim
promenljivim i da im menjaš vrednosti? Jel' vidiš i sors dok radi? Ne
sećam se šta je sve imao, pa zato pitam. Al' nikad neće imati komandnu
liniju (tj komandni prozor) za vreme trebljenja, a to me spaslo više
puta - zaboravim da inicijalizujem neku promenljivu, pa između dva
koraka to uradim. Ili zaboravim da otvorim neku bazu, ili da kreiram
indeks. To mogu da uradim čak i u sred rutine za obradu greške; lepo
sve sredim i gledam šta se dalje događa. Naravno, ako mi se isto desi i
drugi put, opsujem sebe i opet produžim na opisani način.
/ smisla. Valjalo bi ipak prvo da se raspitaš kakve su mogućnosti
To i radim, samo sam izabrao ovaj način, nadam se da nije previše
potpaljivački. Ja se 'nako malo frljam sa "šta sve ima foks", pa onda
neko napiše kako to izgleda u kliperu itd - nekako mi se više sviđa
od uporednog testa i sličnog.
Mislim, posle Telix vs Telemate, Windows vs Gem, St vs
PC, mogli bismo da odvalimo jedno FoxPro 2.00 vs Clipper 5.01...
clipper.937nbatocanin,
-> #912, janko> Pod pojmom bazični Kliper smatraš direktne pozive funkcija
> (tj. drugu stranu translejt direktiva)? Da li si negde
> pročitao garanciju Nantuketa da jezik ni na tom nivou neće
> da se promeni?
Ne samo "drugu stranu", jer se pretprocesiranje vrši iterativno, sve
dok postoje složene komande. Nisam pročitao garanciju Nantucketa, ali
sam više nego siguran da funkcije koje ne počinju sa __ neće biti
izmenjene: one se koriste i u normalnom radu i čak i minimalna
kompatibilnost podrazumeva netaknutost tih funkcija. Uostalom, tako
je bilo S87->5.0 (sa malim packama), pa ne vidim razloga da ne bude i
dalje. Ako ne bude, to je skoro samoubistvo. Funkcije koje počinju sa
__ možda neće ostati, ali to i nije važno, jer ih korisnik ne mora
koristiti. Ukratko, Clipper pretprocesor je sjajno sredstvo za
zadržavanje kompatibilnosti.
> Nisam razumeo narednu rečenicu. Kako se to 'ne dira stara
> funkcija nego označi kao zastarela?'
Pa, DBEDIT je stara funkcija koja je ostala samo zbog kompatibilnosti
- označena je kao "obsolete".
> Jednostavnost interaktivnosti je mnogo lepa stvar -- da li
> koristiš diBejz UZ Kliper? Kako 'sređuješ' stvari ručno,
> 'iz glave' kreiraš baze i tako to? Sve Kliperom ili...?
Imam neke svoje alatke, koristim samo DBU ponekad. Nekako mi se čini
da razvoj u interpeterskoj okolini imaju i nekih slabo uočljivih
mana. Na primer, kada je ciklus ispravka-proba-ispravka mnogo kratak,
korisnik se razmazi i *manje* razmišlja, po sistemu "valjda je ovako,
probaću", umesto da angažuje mozak, a tako se obično produžava
razvoj. Sećam se kad sam radio na veoma sporim računarima da sam
daleko pažljivije pisao programe nego na bržim. Ali, eto. Možda sam
staromodan ;)
> Koliko je virtuelna ta virtuelna memorija, usput?
Teorijski oko 64MB, a trpi dok imaš memorije na disku. Ja veoma
drsko kreiram velike nizove i stringove, ali mi 5.01 *nikad* nije
iskočio sa "Out of memory".
> ali kako se ponaša baš sa varijablama? Gde su kod njih
> granice? Da li je, generalno, njih manje bolno koristi
> umesto manjih datoteka?
Clipper ima poseban podsistem za rad sa velikim varijablama. Memorija
se alocira po potrebi, troši se EMS ili disk ako nestane prostora.
Poseban sistem skuplja neiskorišćen prostor i ponovo ga uvlači u
igru. Recikliranje se radi kad se obavlja neka od naredbi za čekanje
(InKey, ...). Po mom iskustvu, sve radi veoma lepo. Izgleda da 5.01
ima manje bagova od S87.
clipper.938nbatocanin,
-> #917, cikiTačno je da nedostaje neki metod za analizu picture stringa. Ali
mislim da se stvar može srediti. Ovako, od oka padaju mi na um dva
rešenja:
1) Ako ima "@!" u picture, očisti se od funkcijskih oznaka i dobije
nešto kao "XX!!XXAA". Sa oGet:pos se može dobiti pozicija otkucanog
simbola, onda se nađe odgovarajući u picture stringu i poveća ako je
tamo "!".
2) Pustiš Clipper da radi umesto tebe: YU slovo pre upisivanja u
bafer zameniš sa "a", pa posle upisa pročitaš šta je u baferu. Ako je
"A", znači da tekući simbol treba aperovati, pa vratiš kursor i to i
uradiš!
clipper.939coja,
Interesujeme da li je moguce vezivati polja u Clipper-u (pre svega
memo-poljaa) preko hyper-teksta ili hyper-regiona.
Pozdrav, Coja
clipper.940d.petrovic,
-> #935, ndragan:))))))))))))))))))))))))))))))))
Ă> A digitron se ionako nalazi u sistemskom meniju.
Citirano tek da se setiš da je na tvoju poruku :)
E, baš je zanimljivo s tobom o načinima i načinčićima. Pazi, tamo je bio
samo .EXE i aplikacija se startuje pod šifrom koja je šifrine šifre šifra, može
da se menja i drži se u polju u bazi. E, kad je neko izmenio i nije mogao da je
startuje, ja sam morao da pročitam to polje u bazi pa da odgonetnem šta treba
upisati pri startovanju programa. Svaćaš ?
Pozdrav, Dejan
clipper.941fric,
-> #911, neman> Ako ste zainteresovani, spremiću pregled sadržaja datoteka.
Može, naročito onih koje smatraš upotrebljivim & vrednim pažnje.
Mene zanimaju 50ngch.zip (kakav li je to sad ng fajl ?) i
cl_yusrt.zip
p.s. Sad sam se logovao na Rhinoceros i video da su uveli pretplatu
tako da nema ništa od downloada.
clipper.942ppekovic,
-> #936, ndragan>> Sećam ga se, i veoma je dobar (S87).
Govorim o CLD-u iz 5.01 verzije koja je u upotrebi već par
godina.
>> Mislim, posle Telix vs Telemate, Windows vs Gem, St vs
>> PC, mogli bismo da odvalimo jedno FoxPro 2.00 vs Clipper 5.01...
Pa to već traje x meseci, samo FOX-u nešto slabo ide ;))),
šalu na stranu,...
Da bi neko prešao sa jednog kompajlera koji koristi godinama,
ima veliku biblioteku svojih rutina za njega, o iskustvu da ne
govorimo, potrebno je da se pojavi proizvod koji je suštinski
bolji od njega. Sve što si do sada naveo o FOX-u je zaista
zanimljivo i ima zanimljivih rešenja, ali na žalost ničeg
revolucionarno novog, ničeg toliko dobrog zbog čega bi neko
ostavio clipper i sve ono što sam pomenuo na početku poruke.
I ne zaboravi nije stvar u clipper vs. FOX Pro, nego u
clipper+iskustvo+biblioteke+korisnici vs. FOX Pro+šta?
Paya
P.S. Ne koristim clipper već više od godinu dana, dakle celu stvar
posmatram dosta objektivno i ono što sam rekao nisu navijačke
parole nego podsećanje da kad se priča o nekom proizvodu onda ne
sme da se zaboravi i njegovo okruženje.
clipper.944janko,
-> #932, ndragan> / makro supstitucije se nikako nisu mogle koristiti onako
> divlje / kao u dBase programima.
>
> A upravo divlje makro supstitucije čine lepotu ovakvih
> jezika.
Ja nisam pisao ništa protiv njih, kada se koriste tamo gde im
je to 'prirodna' (ili neizbežna) okolina. Konkrteno, u dibejzu
(na foksu još nisam radio) mogu biti vrlo korisne. Sećam se
kako sam, svojevremeno, u vojsci, pisao 'generator POV
predavanja' ;> (po narudžbini oficira, naravno). Makroi su
radili pola posla. :) Druga polovina je bila popuniti baze
podacima, naslovima i međunaslovima, a onda izmišljati
tekstove. Rezultat: mogao sam da naštancujem odjednom ohoho
tekstova. :) Vuk kod Špiljka je za mene bio malo dete. ;)
> linkeru sve to postaju nekakve adrese i od onih blesavih
> imena koje smo nadenuli promenljivim u svom programu ne
> ostaje ništa. Da ne spominjem
E, to sa blesavim imenima... Da znaš da mi se ne sviđaju te
fore... Ako svi u firmi to radite, kako popravljate aplikacija
koje nista pisali sami? Ja, bogami, bih i svoju teško umeo da
popravim, posle onih zamena koje si opisao skoro...
clipper.945janko,
-> #937, nbatocanin> razvoj. Sećam se kad sam radio na veoma sporim računarima
> da sam daleko pažljivije pisao programe nego na bržim.
> Ali, eto. Možda sam staromodan ;)
Možda sam i ja. :) Slažem se sa tobom. A kada još napraviš
dovoljno programa, onda konačno ukapiraš da je koncept 'nemam
vremena da uradim kako treba, ali imam, da uradim još jednom
ispočetka ako primetim greške' isto tako nezgodan... Uz sve to,
ove poslovne aplikacije su nezahvalne za neka noramlna
planiranja, jer niko živ ne zna šta će mušteriji pasti na pamet
sutra (pa ni ona)... Tu je vrlo značajno da aplikacija koju
pišeš može lako da se menja... (to uglavnom zadovoljavaju ovi
dibejzlajk jezici) a ako još hoćeš da si siguran da nećeš
morati da dolaziš i sutra, kada oni i probaju da primene
program, da ti jezik u kome pišeš obezbedi i da si siguran da
je on već proverio sve što može da proveri -- to ovi jezici
slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa
okolinom) nema šanse da to ikad rade, po prirodi stvari... a
kandidat za tako nešto bio je Kliper, ali... Sad mi pade na
pamet, sa Klarionom nisam nikad radio, da li je on pravi
kompajler ili...?
>> Koliko je virtuelna ta virtuelna memorija, usput?
>
> Teorijski oko 64MB, a trpi dok imaš memorije na disku. Ja
> veoma drsko kreiram velike nizove i stringove, ali mi 5.01
> *nikad* nije iskočio sa "Out of memory".
>> ali kako se ponaša baš sa varijablama? Gde su kod njih
>> granice? Da li je, generalno, njih manje bolno koristi
>> umesto manjih datoteka?
>
> Clipper ima poseban podsistem za rad sa velikim
> varijablama. Memorija se alocira po potrebi, troši se EMS
> ili disk ako nestane prostora.
A kada mašina nema EMS (286 čegrtaljke)? Da li je i dalje bolje
od pravih datoteki? Mislim, da li ti se događalo da ti upadne u
'thrashing' (ono: ovo svapuje na disk, treba mu ono, a onda ono
svapuje na disk, treba mu ovo, pa skoro do sudnjeg dana...), u
koji ne bi upao da si 'sve držao pod kontrolom?'
Ovi BC++ 3.0 programi su, naprimer, pisani tako da imaju nešto
kao virtuelni kod (a podaci moraju da su u memoriji, ako sam
shvatio koncept, za razliku od ovog Klipera) pa se nekad
zaglupe i kad imaju na raspolaganju napr. 1.7MB. A takav
simptom zaglupljivanja opisuje i ZZ na MSC 7.0 i (valjda) 4MB,
u nekim slučajevima?
clipper.946pjankovic,
-> #913, kanda> Pa vidi DPaune, ako ti treba samo pregled datoteke, recimo
> pregled izvestaja pre stampanja, napravi TBrowse, i
> nabudzi mu GoTopBlock,
A šta ako su linije u tom tekstu duže od 80 karaktera? To može da
se desi ako se na papiru A4 štampa CONDENSED ili ako se koristi papir A3
(136 karaktera u liniji bez CONDENSED).
clipper.947bdm.,
-> #925, d.petrovic## (lakse mi ovde da pitam nego da caskom probam ;)))) ) jel se to bese
## eliminise sa PACK ?
Nisam probao ali po Spence NE. Zato on preporucuje umesto PACK
koriscenje COPY...
BDM.
clipper.948dusanp,
-> #932, ndragan=> Da ne spominjem da je nemoguće izmisliti novu promenljivu
=> u toku izvršavanja programa, predati _ime_ procedure kao
=> parametar drugoj proceduri... što sve može da se radi u
=> DB jezicima.
Zar u C-u ako mi zatreba nova promenjljiva ne mogu da je
alociram? Ili, zar se ne moze predati pointer na proceduru
kao parametar drugoj proceduri? Ispravi me ako gresim, ali
mislim da sve mogucosti koje si nabrojao postoje u C-u i
rade na sasvim legalne nacine...
clipper.949snemcev,
-> #920, nbatocanin>> Piše, i tako je. Ponekad je i korisno.
Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju volju ne
mogu da se setim ni jedne korisne primene ove mogućnosti.
clipper.950ciki,
-> #938, nbatocanin**>> Koliko muke, a kako prosta stvar.
**
** Ima još jedno rešenje, bez ijedne programske linije:
** da se napusti YU prostor ...
**
** dPaun
******************
Eh nije to zanimljivo. Fino je to uraditi u assembleru ali ja sam
"Clipper programer", pa kad su ljudi dali ceo
listing, rekoh daj da probam, nista nemam da izgubim.
P.S. Moze li tvoja metoda da digne nesto u fori "!9999X!!XX!"
Đ1231đŠžčćč,
znaci bez obzira kakav je PICTURE ?
P.P.S Smanjio sam listing,pa sada dodatak sve skupa iznosi
10 linija.
P.P.P.S. Tek sada procitah nbatocanin-ovo resenje. Koja
zadivljujuca slicnost.
Pozdrav Kikile!
Deo listinga---------
......................
..................
if (get:Picture == "č!" .or. SUBSTR(get:Picture,get:Pos,1) == "!")
if at(cKey,"žčćšđ") > 0
get:Overstrike(substr("čžĆŠĐ",at(cKey,"žčćšđ")),1)
else
get:Overstrike(cKey)
endif
.................................................
clipper.951d.petrovic,
-> #943, jankoĂ> l' znaš koliku sam ribu upecao pre neki dan? ;)
A, jel ovoliiiiiiiiiku ? ;)) To bre nisu hiperbole, to je iživljavanje. Pa
sad će me nateraš da nađem neku bazu od xx000 radnika pa da pušćim ovu 286/16
sa jaaaadnim diskom od 27 ms pa da ti šaljem testove :)
clipper.952broker,
-> #869, ndragan> / replace z->prez with yuupper(z->prez)
> =======
> Ukrasovcima skrećem pažnju na ovaj detalj. Pisano '88 u
> leto.
Da nije pisano u leto '88 optuzio bih te za kradju imena funkcije.:)))
clipper.953nbatocanin,
-> #924, d.petrovic> Ma ljudi bre, preterujete više sa tom sporošću klipera !!!
> Za šta se Kliper koristi nego za baze podataka i šta rade
> nego komuniciraju sa nekom prosečno obdarenom ženskom.
Nisam ni rekao da je spor u operacijama sa bazom podataka: spori su
pozivi funkcija, što u većini slučajeva ne smeta, ali kao pišeš neku
analizu dužeg stringa (konverzije, ...) ili nešto sl., to se mora
raditi na C-u ili asembleru.
clipper.954nbatocanin,
-> #925, d.petrovic> Ma to smo već zaključili ! Izgleda da si ti samo nešto
> preskočio.
Nismo se baš najbolje razumeli, ali dovoljno. Ipak, ona naredba ne
*dodaje* memo, zar im je bilo teško da provere da li nova vrednost
(uzgred, potpuno ista kao i stara) može da stane u stari prostor?
> E, sad (lakše mi ovde da pitam nego da časkom
> probam ;)))) ) jel se to beše eliminiše sa PACK ?
Jok!
clipper.955nbatocanin,
Evo programčića koji ja koristim za to. S obzirom na izgovor, pre je
čarapanska nego piroćanska varijanta ;)
ntoc.zipclipper.956kanda,
-> #946, pjankovic>> A šta ako su linije u tom tekstu duže od 80 karaktera? To može da
>> se desi ako se na papiru A4 štampa CONDENSED ili ako se koristi papir
>> A3 (136 karaktera u liniji bez CONDENSED).
Naravno, u praksi retko kad ceo izvestaj stane na ekran. Problem je resen
kao kod tekst-editora, strelicama levo i desno pomeras 'prozor'.
Kodni blok za tu (jedinu) kolonu ustvari izgleda ovako :
{|| PadR(SubStr(_ReadLn(), nPos), nWi)}
Gde je nWi sirina prozora, recimo 80. Kada pritisnes strelicu desno,
nPos se uveca za npr. 16, kad pritisnes strelicu levo umanji se za isto
toliko. Prilikom ovih horizontalnih pomeranja treba poslati i
RefreshAll() poruku.
clipper.957dpaun,
-> #930, dpaun>> 5) osećati se konačno kao YuEuroPPejac!
Braćo i sestre, #$%$%#%ž&*&&&pičkr!!!!!!!!!
x,y Get Niz PICT "č!" VALID Dig() //Radi
x,y Get Niz1 //Ne radi !!!!
READ
*
FUNC Dig
GetActive():varPut(YUpper(GetActive():buffer))
RETURN .T.
/***
* GetApplyKey()
*/ .
.
if "č!" $ get:picture //Ovo domentuto po savetu brata Nenada
cKey:=YUpper(cKey)
endif
.
.
A ovako psuje Clipper kada se pokuša ukuc u Niz1:
BASE/1109 Argument error: INSTR
GETAPPLYKE(268) //Ovde je izmena nBatocanina u GETSYS.PRG
GETREADER(130)
READMODAL(88)
Prema NG BASE/1109 se odnosi na $.
Predragi $ brate Nenade: uzmi ovaj GETSYS, pa s njim na kanal i doradi ga
da me sada pusti ljudski da čukam i MaliYu kad mi se ćefne. Al požuri dok
komšika Vilarija ima onakvo mišljenje o tebi. (Kad sam joj onomad pričao
kakav si ti Klipper majstor, tako su joj oči bljesnule da je Vita šumar
pomislio da se šuma upalila).
dPaun.$
clipper.958janko,
-> #951, d.petrovic> A, jel ovoliiiiiiiiiku ? ;)) To bre nisu hiperbole, to je
> iživljavanje. Pa sad će me nateraš da nađem neku bazu od
> xx000 radnika pa da pušćim ovu 286/16 sa jaaaadnim diskom
> od 27 ms pa da ti šaljem testove :)
Ma, svašta. Ja ne kažem da ne može brže od onoga što sam rekao,
čak, suprotno! Moja rečenica je bila 'jedan radi dva sata a
drugi za jedan minut na XT-u.' E, ako te zanima da vidiš taj
što radi dva sata, mogu da ti obezbedim taj program, pa da
vidiš koliko će tvoj AT da se muči (a onda sve podeli bar sa
šest, pa vidi koliko je na XT-u ;) Ne, nisam ga ja pisao. Ali
treba ga videti da bi se verovalo. ;)
clipper.959d.petrovic,
-> #958, jankoĂ> drugi za jedan minut na XT-u.' E, ako te zanima da vidiš taj
Ă> što radi dva sata, mogu da ti obezbedim taj program, pa da
Fala ti lepo, video sam već jedan takav. Davno je to bile ali je odprilike
:
select 1
use radn
select 2
use sta
go 1
select 1
zbir=0
mrdrpr=lastrec() ;>>>>> šta ako je zapis obrisan
for i = 1 to mrdrpr
select 1
go mrdrpr
x=NEKO_TAMO_POLJE
select 2
y=NEK_TAMO_POLjE
zbir=zbir+(x * y)
next
prosek=zbir/mrdrpr
....
Da ne kažeš da tvrdim da je Kliper brz, samo kažem da treba kritične
delove ljudski napisati.
Pozdrav, Dejan
clipper.960neman,
Evo konačno obećanog pregleda.
P.S.
50NGCH.ZIP je NORTON GUIDE za *.CH datoteke
spisak.arjclipper.961nbatocanin,
-> #945, janko> A kada mašina nema EMS (286 čegrtaljke)? Da li je i dalje
> bolje od pravih datoteki? Mislim, da li ti se događalo da
> ti upadne u 'thrashing' (ono: ovo svapuje na disk, treba
> mu ono, a onda ono svapuje na disk, treba mu ovo, pa skoro
> do sudnjeg dana...), u koji ne bi upao da si 'sve držao
> pod kontrolom?'
Dosta dugo sam radio na 286/12 sa 640K RAM-a i nije mi se to desilo.
Dešavalo se da neke operacije budu spore, ali nikakve mrtve petlje.
Doduše, nisam to nešto posebno testirao: samo sam, osim redovnih
problema, radio i ovako nešto:
FOR i := 1 TO 4000
a[i] := Space(40000)
NEXT
Drlja po disku, ali radi! Crkava kad nestane prostora za swap.
clipper.962nbatocanin,
-> #949, snemcev> Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju
> volju ne mogu da se setim ni jedne korisne primene ove
> mogućnosti.
Na primer, radiš parče programa koje radi nešto sa nizom. Svuda se na
niz referišeš sa NIZ[]. Onda ti se ukaže potreba da radiš sa nekim
drugim nizom. Tada jednostavno napišeš na početku bloka NIZ := NOVI
(pod nekim uslovom, verovatno). Pošto je ovo samo izmena pokazivača,
operacija je maksimalno brza. Ovo se mnogo često koristi koda rada sa
objektima, koji su veoma slični po strukturi. Verovatno bi se mogao
smisliti i "čistiji" primer.
clipper.963janko,
-> #961, nbatocanin> FOR i := 1 TO 4000
> aŠiĆ := Space(40000)
> NEXT
>
> Drlja po disku, ali radi! Crkava kad nestane prostora za
> swap.
Taj disk je bar 200 MB?
Inače, ovo me već fascinira, ako radi kako treba. Izuzetno
zgodna stvar!
clipper.964snemcev,
-> #920, nbatocanin>> Piše, i tako je. Ponekad je i korisno.
Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju volju ne
mogu da se setim ni jedne korisne primene ove mogućnosti.
clipper.965nbatocanin,
-> #956, kanda> {|| PadR(SubStr(_ReadLn(), nPos), nWi)}
Odlična ideja! Jesi li isprobao koliko ovo brzo radi? Ako DejanR ovo
ne objavi u Bajtovima, obavezno ide u Savetnik.
clipper.966nbatocanin,
-> #957, dpaun> Prema NG BASE/1109 se odnosi na $.
Prvo, nije ti potrebna funkcija Dig ako izmeniš GETSYS.PRG. Clipper
se buni ako je oGet:Picture NIL, pa se računa "@!" $ NIL, sto je
neispravno. Znači, treba izmeniti GETSYS.PRG ovako:
IF get:picture <> NIL .AND. "@!" $ get:picture
cKey := YUpper(cKey)
END IF
a kad koristiš:
@ x,y GET cVar PICTURE "@!"
Ovo naravno neće raditi za složenije picture stringove, kao što je
rečeno.
clipper.967ciki,
Ho!
Pisem ovo a ruka mi drhti od tuge i bola, barabo jedna ovakvog si
coveka nasao da falsifikujes,...
Eh sada, da li je tacno ili je greska u mome sorsu da LIB
SUBNTX(preuzeto sa sezama) radi samo 3-4 puta u toku izvrsavanja 1
programa?
P.S. Kako napreduje menjanje GETSYS-a bruder dpaun-e ? ;>>>
clipper.968bulaja,
-> #967, ciki│Eh sada, da li je tacno ili je greska u mome sorsu da LIB
│SUBNTX(preuzeto sa sezama) radi samo 3-4 puta u toku izvrsavanja 1
│programa?
└───
Skoro tacno. Mozes je koristiti samo 5 puta.
clipper.969dpaun,
-> #967, ciki>> P.S. Kako napreduje menjanje GETSYS-a bruder dpaun-e ? ;>>>
žini mi se da je stvar konačno rešena sa amandmanom brata nBatocanin-a.
Bar za PICTURE "č!" (vidi nove poruke vezane za ovaj problem).
dPaun
clipper.970dpaun,
-> #966, nbatocanin
>> treba izmeniti GETSYS.PRG ovako:
>>
>> IF get:picture <> NIL .AND. "č!" $ get:picture
>> cKey := YUpper(cKey)
>> END IF
>>
Pa kaže, konačno:
Za podizanje MalihYu u toku kucanja, dakle kad je PICT "č!",
valja uraditi sledeće:
1) iz poruke 5.894 skinuti yu.obj;
2) iz gornjeg primera videti kako izgleda kompletna izmena i prepravka
GETSYS.PRG-a; videti i poruku 5.919;
3) GETSYS clipperovati obavezno sa /m/n/w;
4) ulinkovati yu.obj i getsys.obj u aplikaciju;
5) nikakve druge kerefeke nisu potrebne (funkcije DigniGa i slično);
6) radi sigurno u slučajevima kad je get klot, i kad je pcture "č!";
7) za ostale slučajeve pitajte i vi malo, braćo. Ima valjda još koja
neznalica ovde, a?
dPaun.VelikiYu!
clipper.972ratman,
Na koji se nacin moze niz sacuvati u .MEM file?
Nizovi se, kako mi se cini, ne mogu direktno sa SAVE-ovati...
Pozdrav,
Dejan
clipper.973goxx,
-> #972, ratman■ Na koji se nacin moze niz sacuvati u .MEM file?
■ Nizovi se, kako mi se cini, ne mogu direktno sa SAVE-ovati...
Pogledaj malo funkcije FT_SAVEARR i FT_RESTARR u Nanfor biblioteci, ali
pazi da nemaš kodne blokove u nizu koji snimaš. Ime fajla u koji se
snima odredjuješ sam pa prema tome može se zvati i *.MEM.
Goran
clipper.974kanda,
-> #965, nbatocanin>> Odlična ideja! Jesi li isprobao koliko ovo brzo radi? Ako DejanR ovo
>> ne objavi u Bajtovima, obavezno ide u Savetnik.
Ne samo da sam isprobao, nego to koristim vec 6-7 meseci. Sto se brzine
tice, nalazim da je prihvatljiva; istini za volju, gotop, gobottom i skip
funkcije sam za svaki slucaj napisao u C-u.
clipper.975kanda,
Juce sam bio kod jednog kolege, i primetio da covek koristi neke
neverovatne egzibicije kako bi naterao RMAKE da prevede SVE datoteke.
Dovoljno je dodati prekidac /f. Usput, tek posle sam primetio da se
u NG prekidac /f i ne pominje; ipak, RMAKE /? ga pokaze.
clipper.976bulaja,
-> #975, kanda│Juce sam bio kod jednog kolege, i primetio da covek koristi neke
│neverovatne egzibicije kako bi naterao RMAKE da prevede SVE datoteke.
│Dovoljno je dodati prekidac /f.
└───
Dovoljno je i obrisati sve .OBJ :).
Inace koristim Borland-ov make, tamo je make -B (build).
clipper.977dpaun,
Imam jedno (dopunsko) pitanje, vezano za GETSYS.PRG.
Kada se izvrši BiloKojaIzmena u GETSYS.PRG - na šta inače vlasnici
Clp-a imaju poravo - da li je neophodno da se ceo GETSYS.PRG prevede i
linkuje, ili ima neki (kulturniji) način da se samo ta promenjena
funkcija uključi u MojProg, ili u neku od službenih biblioteka.
I kako.
dPaun
clipper.978ndragan,
-> #923, dejanr/ nadamo da će autor to čuti i "srediti", pa nam poslati ispravnu
/ verziju.
Bravo! Rutina je dosad odradila bar desetak hiljada puta i niko nije
primetio. Preneo sam autorima, rekli su 'jel? jeeeebo te bog, aj sredi
to ako stigneš'. Mislio sam danas, ali sam zaglavio u SORu... pa, ovih
dana.
Inače, prolaze i gore stvari. U ovdašnjem komunalnom štampaju obračun
vazdušarine na predštampanim obrascima, na kojima je otisnut i faksimil
onog četvorojezičnog pečata velikog kao šolja za kafu. E, taj pečat je
naopako - kao u ogledalu. Za nekoliko godina niko nije primetio.
clipper.979ndragan,
-> #937, nbatocanin/ korisnik se razmazi i *manje* razmišlja, po sistemu "valjda je ovako,
/ probaću", umesto da angažuje mozak, a tako se obično produžava
Pa baš i ne. Kritično parče lokalizujem u neku manju rutinu, pa je
isprobam u nekoliko ubrzanih ciklusa. Ako ne proradi iz prve, proradi
iz najviše pet-šest iteracija, što u principu znači da buljim u editor
minut-dva (mentalno debagiranje), parkiram 'set step on' na mesto gde
sam uočio da me rutina ne sluša, pokrenem aplikaciju (ili samu rutinu,
ako je nezavisna) i posmatram šta se događa od onog mesta. Tako uspevam
da rasturim i logički vrlo komplikovane situacije, i najveći bag koji
ostaje posle svega je što zaboravim da iz završne verzije obrišem onaj
'set step on'.
Dakle: 'valjda je ovako, da vidimo', ali na užim delovima, tamo gde ima
smisla, i gde je brže od ručne analize.
Bue_ Ndragan
clipper.980ndragan,
-> #945, janko/ je on već proverio sve što može da proveri -- to ovi jezici
/ slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa
U jezicima koji dozvoljavaju makro zamene za vreme izvođenja (dakle ne
za vreme kompajliranja!) uvek imaš mogućnost da iznenadiš interpreter;
jedina varijanta za kompletno testiranje je da _prođeš_ kroz sve
budžake ;(.
clipper.981ndragan,
-> #944, janko/ fore... Ako svi u firmi to radite, kako popravljate aplikacija
/ koje nista pisali sami? Ja, bogami, bih i svoju teško umeo da
Pa, ono što si video bi trebalo da ti da ideju - sve je u menijima,
unosima i izveštajima; problem unakrsnog održavanja je samo tamo gde
postoje (čak i van menija, iz opravdanih razloga) procedure koje melju
podatke - preračuni, obrade, kao što je u LD i u nekim varijantama
materijalnog: to ne diram. A postoje konvencije o tome šta se kako
zove; rutina koja obrađuje ceo dokument posle unosa svih stavki u
jednoj grupnoj masci ima tačno određeno ime; imena svih izveštaja su
dostupna iz generatora dokumentacije za meni itd. Sve je vrlo jasno, a
sama imena... pa jeb* ga, i programeri imaju dušu.
clipper.982ndragan,
-> #948, dusanp/ mislim da sve mogucosti koje si nabrojao postoje u C-u i
Hteo sam da kažem da u skroz kompajliranim jezicima ne možeš da kažeš
da se, recimo, izgeneriše slučajno ime promenljive... evo ovako:
x=rand()
x1='T'+strr(x) && neka funkcija STRR od broja izvadi prvih 6 cifara
&& i neka je sad x1='T457455'
&x1='nešto'
I posle ovoga u programu postoji string promenljiva T457455 koja ima
vrednost 'nešto'. Ako je to izvodljivo u Ceu, tim bolje. Od Cea znam
samo ono što sam pre 4 godine pročitao (K&R) i što tu i tamo pročitam
na Sezamu; u to vreme još nisam sasvim shvatao kakvo oružje su makro
zamene.
Vidi i ovaj primer:
sn=metod && polje iz baze; sadrži '0','1' ili '2'
do racun&sn && poziva se rutina racun1, racun2 ili racun0
Da bude još lepše, racun2.prg uopšte ne mora da postoji kad se pokrene
aplikacija; aplikacija može sama da ga napiše, a integraljena okolina
će ga kompajlirati u trku.
Dobro je ako je ovo takođe izvodljivo u Ceu (za ovo drugo sumnjam);
alatka je moćna, a u ruke Mandušića Vuka...
Bue_ Ndragan
P.S. Ovo mi je promaklo:
/ alociram? Ili, zar se ne moze predati pointer na proceduru
Pointer, ok. Ja predajem ime procedure u string promenljivoj ili u
izrazu; procedura to prima kao string parametar; negde u njoj se nalazi
makro koji raspakuje sadržinu tog stringa i to mu je ime procedure koju
će ova pozvati. Ovako:
prg='zzv'
...
do proc1 with 'bz'+prg
...
procedure proc1
para _what
...
do &_what && e sad negde treba da postoji procedura bzzzv
&& i ona će se izvršiti
clipper.983ndragan,
-> #940, d.petrovic/ startuje, ja sam morao da pročitam to polje u bazi pa da odgonetnem
/ šta treba upisati pri startovanju programa. Svaćaš ?
Kad mi život postane nedovoljno komplikovan, zvaću te :)
clipper.984ndragan,
-> #942, ppekovic/ revolucionarno novog, ničeg toliko dobrog zbog čega bi neko
/ ostavio clipper i sve ono što sam pomenuo na početku poruke.
Nije mi ni bila namera da preobraćujem. Uostalom, bivši kliperaši budu
loši foksovci, bivši foksovci loši kliperaši i obratno. Ovo je više
bilo "komšija, šta ima novo kod tebe? evo nama se omacila mačka".
/ clipper+iskustvo+biblioteke+korisnici vs. FOX Pro+šta?
To isto na drugom kraju, isto takođe. To što većina korisnika foksa
pokušava da radi bez biblioteka, jeste njihov problem. Biblioteka je
nužna i važna. Znam to, jer nas dvojica (manje više) održavamo našu
zvaničnu biblioteku u firmi, i veoma mi je poznata problematika tipa
'jel da pišem lokalnu verziju il da čačkam sistemsku, a da li to još
neko koristi pa da mu ne pokvarim...' i potreba za kompatibilnošću itd.
Na kraju ću ja znati sve što me zanimalo o kliperu (opet ne dovoljno) i
kliperaše o foksu, a može tu da kresne i koja idejica... nije na odmet.
clipper.985ndragan,
-> #959, d.petrovic/ for i = 1 to mrdrpr
/ select 1
/ go mrdrpr
Jel' ovaj hormonalan što je to pisao? N puta množi polje iz entog sloga
u jednoj bazi poljem iz jednog istog sloga u drugoj bazi, to sabira i
deli opet sa n? Ili nije korektno prekucano?
žak i da nije, ovo je stvarno bez veze.
clipper.986d.petrovic,
-> #985, ndraganĂ> / for i = 1 to mrdrpr
Ă> / select 1
Ă> / go mrdrpr
Ă>
Ă> Jel' ovaj hormonalan što je to pisao? N puta množi polje iz entog
Ă> sloga
Mrzi me da tražim, da vidim da li sam BAŠ TAžNO prekucao, BAŠ to
ili nešto BAŠ SLIžNO sam video svojim očima kad sam se posle pitaj
boga koliko vremena vratio i video da DBase (to je radilo u Dbase
III) još nije završio. To sam dao samo kao primer da ne treba suditi
o brzini po NEKIM programima koje vidiš.
Pozdrav, Dejan
clipper.987janko,
-> #980, ndragan> / je on već proverio sve što može da proveri -- to ovi jezici
> / slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa
> U jezicima koji dozvoljavaju makro zamene za vreme
> izvođenja (dakle ne
Nijedan _pravi_ jezik koji se kompajlira to ne dozvoljava. ;)
A interpreteri su interpreteri...
clipper.988bcetina,
Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i koji?
clipper.989d.petrovic,
-> #988, bcetinaĂ> Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i
Ă> koji?
Ja sve pešice kroz ceo program (ne svaki put isto, sve u
delovima u par funkcija), a možda bi trebalo sa .FMT datotekama. O
njima nemam pojma, u svemu što sam do sada radio (nije baš malo :)) )
išao sam pešice.
Pozdrav, Dejan
clipper.990dusanp,
-> #982, ndragan=> x=rand()
=> x1='T'+strr(x) && neka funkcija STRR od broja izvadi
=> prvih 6 cifara && i neka je sad x1='T457455'
=> &x1='nešto'
=>
=> I posle ovoga u programu postoji string promenljiva
=> T457455 koja ima vrednost 'nešto'.
Vidi, to jeste lepo i efektno, ali je još uvek
funkcionalno zamenljivo sa alociranjem promenljivih.
=> sn=metod && polje iz baze; sadrži '0','1' ili '2'
=> do racun&sn && poziva se rutina racun1, racun2 ili
&& racun0
Takođe, kada ovako nešto zatreba, jednostavno se unapravi
struktura koja sadrži adrese rutina za obradu, a onda se pozi-
va rutina broj sn, znači dosta slično ovome.
Ja razumem moć i lepotu makrozamene u toku rada programa,
ali jednostavno smatram da je usporenje rada programa (navodno
zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga
koliko sam radio sa kliperom.
Pa da, reći ćeš ti, tako mi i treba kad radim u kliperu.;))
clipper.991nbatocanin,
-> #974, kandaAko želiš da podeliš svoju ideju sa drugima, pošalji kratak opis i
listing. Znači, ne treba sve, nego samo osnovne stvari.
clipper.992djoskovski,
-> #909, snemcev-> PRIVATE bla_bla := tra_la_la := tandara_broc := sc
-> ...
Posle ovog dobijemo plus tri pointera koji pokazuju
na isto memorisko podrucje u kojem se nalazi JEDAN NIZ
->
-> i nizove popunjavam kasnije iz programa u stilu
->
-> ...
-> AADD( bla_bla, 'prvi niz' )
Bez razlike kojim pointerom pristupamo JEDNOM nizu
posle ovog LEN(bilo_koji_niz)=1 , odnosno niz dobija
svoj prvi element.
-> AADD( tra_la_la, 'drugi niz' )
Pristupamo ISTOM nizu preko drugog pointera
posle ovog LEN(bilo_koji_niz)=2
-> AADD( tandara_broc, 'treci niz' )
Pristupamo istom nizu preko treceg pointera
posle ovog LEN(bilo_koji_niz)=3
It is FEATURE
Za kopiranje niza u Clipper-u se koristi funkcija ACLONE
koja kreira kopiju kompletne strukture niza
Pozdrav, D.Joskovski
clipper.993djoskovski,
Clipper,Fox i video trake
Vec duze vremena pratim diskusije u okviru ove teme u stilu
FOX vs CLIPPER, dBASE vs CLIPPER ,kompajleri ili interpreteri i sl.
mislim da je to u redu, ali da se sa tim ne treba preterivati,
pa evo ukratko mojih stavova:
1. Verzija Clipper 5.0 (5.01) "pretstavljanjem" "kodnih blokova",
predefinisanih objekta, napustila je stari kurs Clippera 87 i pored
vertikalne kompatibilnosti.
2. Usvajanjem STATIC i LOCAL deklaracija ,switceva pri kompajliranju
/w/a/n ostvaren je KORAK prema jezicima koji se kompajliraju. (ko razume
shvatice ;) )
3. Usvajanjem mocnog preprocesora, ostvaruju se dva cilja
- lakse programiranje i citliv kod (lakse odrzavanje)
(vazno korisnicima CLIPPERA)
- lakse unapredjenje citavog sistema
(vazno NANTUCKET-u)
4. Fox-BASE , FOX-pro ,FOX-pro for LAN ( pa ti ljudi su i ime promasili
pa su posle morali da menjaju, dobro ostalo je ono FOX, lukavo zar,ne? )
Dobro, salu na stranu fox je pre 4-5 godina bio jedino resenje za
zaradu, ako korisnik vise korisnicke aplikacije nije hteo da plati LAN
hardver (Ko je pre 4-5 godina kupovao softver ? a i danas?), ali svatam
Fox-ovce, nemaju ljudi temu a bogami ni direktorijum, pa nam dolaze u
goste a kad dodjes u goste, zna se hvalis se.
toliko, interesuje me vase misljenje o prva tri stava, cetvrti je ..
(i programeri imaju dusu)
Pozdrav svima ( i gostima)
D. Joskovski
clipper.995dpaun,
-> #970, dpaun>> 7) za ostale slučajeve pitajte i vi malo, braćo. Ima valjda još
>> koja neznalica ovde, a?
Ova neznalica - čekajući da sine sunce pa da ode u šumu na drva -
igrala se sa picture ovih dana. Bilo je to pravo otkriće, jer nigde ne
piše da se picture može menjati do mile volje. A moja mila volja imala
je jedan ozbiljan razlog da to radi: u delu MojeAplikacije, koja
obrađuje bibliografske jedinice, reference autora standardizuju se
tako što se prezime unosi velikim slovima, a ime po šablonu "prvo
slovo veliko a ostala mala". Međutim, kod imena se javljaju razne
situacije (inicijali obični, pa inicijali tipa Lj.Nj., pa dvodelna
imena kao "Paun Es", pa Ana-Marija itd.). Koristeći već stečeno
iskustvo i rešenja obrazložena u ranijim porukama (vidi 5.970), stvar
sam rešio na sledeći način:
č .. GET prezime PICT "č!"
č .. GET ime PICT "č*" //ovo je MojaMaska
Niže je navedena dopuna listinga getsys.prg-a da bi ovo radilo.
/***
* GetApplyKey()
//ovo je originalni kod
if (get:type == "N" .and. (cKey == "." .or. cKey == ","))
get:ToDecPos()
else
// ovo je dopuna nBatocanina
if get:picture <> NIL .AND. "č!" $ get:picture
cKey:=YUpper(cKey) //YUpper() se nalazi u Yu.Obj
endif
// ovo je dopuna dPauna
if get:picture <> NIL .AND. "č*" $ get:picture
if get:pos == 1
cKey := DigniYu(cKey)
else
if get:pos>2.and.substr(get:buffer,get:pos-1,1)=="."
cKey := DigniYu(cKey)
elseif get:pos>1.and.;
(substr(get:buffer,get:pos-1,1)==" ".or.;
substr(get:buffer,get:pos-1,1)=="-")
cKey := DigniYu(cKey)
else
cKey := Lower(cKey)
endif
endif
endif
...
...
func DigniYu(cKey)
do case
case cKey == "đ"
cKey := "Đ"
case cKey == "ć"
cKey := "Ć"
case cKey == "š"
cKey := "Š"
case cKey == "ž"
cKey := "č"
case cKey == "č"
cKey := "ž"
otherwise
cKey:=UPPER(cKey)
endc
return (cKey)
dPaun.ProgramerNaturalista
clipper.996ndragan,
-> #987, janko/ Nijedan _pravi_ jezik koji se kompajlira to ne dozvoljava. ;)
Jako sam lepo zadovoljan lažnjakom dok radi bolje od pravog :).
clipper.997ndragan,
-> #988, bcetina/ Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i koji?
FMT iz dBašića pa onda naš generator čita te .FMT fajlove i još neke
naše .DBF fajlove i generiše sorsove za unos. Zvuči gadno, ali šljaka.
clipper.998andrejl,
-> #997, ndragan>│ FMT iz dBašića pa onda naš generator čita te .FMT fajlove
>│ i još neke naše .DBF fajlove i generiše sorsove za unos.
>│ Zvuči gadno, ali šljaka.
Meni zvuči lepše od glupog UI-a pa onda prođe kroz mene,
pa onda prođe kroz mene, pa onda ...
bye, andrejl
clipper.999fric,
-> #993, djoskovski> /w/a/n ostvaren je KORAK prema jezicima koji se kompajliraju.
> toliko, interesuje me vase misljenje o prva tri stava,
Sve je to krasno, ali džabe Nantucketu i vertikalna
kompatibilnost, i pretprocesor, blokovi, objekti
i ostalo, kad radi pomenute kompatibilnosti
nije uveo strogu tipiziranost promenljivih
i kontrolu istih pri kompajliranju.
Mislim da bez toga nema govora o ozbiljnijem
jeziku - u smislu lakoće i efikasnosti
programiranja i održavanja.
Menjam makroe za tipiziranost !
clipper.1000kanda,
-> #990, dusanp>> Ja razumem moć i lepotu makrozamene u toku rada programa,
>> ali jednostavno smatram da je usporenje rada programa (navodno
>> zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga
>> koliko sam radio sa kliperom.
To da li je opravdano, zaista zavisi od namene. Kliper je namenski
jezik i tamo gde se on koristi brzina obicno nije toliko bitna koliko
mogucnost da se odgovori na egzoticne zahteve korisnika, da se radi
sa bazama nepoznate strukture itd.
clipper.1001kanda,
-> #991, nbatocanin>> Ako želiš da podeliš svoju ideju sa drugima, pošalji kratak opis i
>> listing. Znači, ne treba sve, nego samo osnovne stvari.
Evo saljem listing funkcije VText(). Ovakva kakva jeste je vise
ilustracija tehnike, fali stosta da bi mogla da sluzi za pregled
izvestaja. Naime izvestaji obicno sadrze kontrolne sekvence za stampac,
markere pocetaka strana, itd itd, takve stvari se naravno ne prikazuju,
sto zahteva C ili asembler da ne bi bilo suvise sporo.
U TBrowse sistemu ima jedna falinka : pri iscrtavanju kolone, sistem
1) pozove metod koji mu vrati sadrzaj kolone koju treba ispisati
2) postavi kurzor na mesto ispisa, i 3) ispisuje. Da su autori zamenili
mesta koracima 1) i 2), bilo bi moguce da metod koji treba da vrati
sadrzaj kolone ujedno i ispise kolonu. Ovo bi moglo *mnogo* da ubrza
ispis ako bi metod bio napisan u C-u i pisao direktno u video memoriju.
vtext.zipclipper.1002nbatocanin,
-> #979, ndragan> Dakle: 'valjda je ovako, da vidimo', ali na užim delovima,
> tamo gde ima smisla, i gde je brže od ručne analize.
Mislim da se nismo razumeli: mislio sam na situacije kada treba
izračunati (pogoditi) granične vrednosti indeksa kod petlji i sl. Ko
će da razmišlja da li je a[i+2*j-3*k-4] ili nešto drugo - ako ciklus
izmene kratko traje probaću pa ću "nabosti" rezultat :)
clipper.1003nbatocanin,
-> #984, ndragan> To isto na drugom kraju, isto takođe.
Ipak bih rekao da za Clipper ima dosta više toga, bar po reklamama i
katalozima koje sam video. A to je zato između ostalog što je mnogo
jednostavnije napraviti novu funkciju za Clipper: napišeš na C-u,
ubaciš u lib i gotovo.
clipper.1004ciki,
-> #988, bcetinaProcitah malopre da oces nesto za pravljenje maskica.
Evo ti pokusaj sa ovim.Posto sam duze razmisljao o tome
ja sedoh i napravih nesto za cirka 45min.
Iako radim sa 5.01, ovo je radjeno sa S'87 jer je Tlink
nenadj*biv tj. nenadmasiv u brini.
Znaci kompajliraj, prevedi pa rokaj.
Inace program ce ti posle rada kreirati maska.txt datoteku,
koju ces posle obradjivati u nekom txt. editoru.
Evo malo help-a:
Strelice pomeraju tekuci kursor.
Sa Alt-a dobijas ascii tablu.
Sa O ili o crtas okvire ili linije.Posto nacrtas, a ti lepo
opali Enter, pa posle izaberi kojim ces box type-om iscrtati,
ili ces tu oblast obrisati.
Sa alt-t cini mi se dobijas tekuce koordinate kursora
Sa B ili b brises na mestu crsr-a.
Sa T ili t ispisujes text i to posto uneses broj karaktera,
pojavi ce ti se █████...██ gde ces ispisivati txt.
Sa alp-p menjas kursor.
Enter - stavlja kursor na tekucu koordinate crsr-a
Kraj rada Esc i stvara taj maska.txt
P.S. Zbog brzine, i listing je ugly, ali radi svoj posao.
Pozdrav Ciki!
maska.arjclipper.1008boris.,
Da li je neko naišao na ovaj problem sa funkcijom
int()?
?int(0.2*10) // 2
?in(1.2-1.0)*10) // 1
a=(1.2-1.0)*10
?a // 2.0
?int(a) // 1
BorisT
clipper.1009d.petrovic,
-> #1008, boris.Ă> Da li je neko naišao na ovaj problem sa funkcijom
Ă> int()?
Pređi na Kliper 5.01 i koristi Nanfor biblioteku, sve radi.
clipper.1010zdiv,
U datoteci subntx2.zip su dva fajla koja su zapakovana sa lozinkom
konkretno xtr_lib.exe i xtr_src.exe
da li je to neka greska ili sta?!
clipper.1011ndragan,
-> #990, dusanp/ Takođe, kada ovako nešto zatreba, jednostavno se unapravi
/ struktura koja sadrži adrese rutina za obradu, a onda se pozi-
Da, to bi bilo to, izuzev slučaja kad rutina za obradu još ne postoji -
dakle, kad forsiram grešku da bih pohvatao snimak stanja neposredno pre
poziva, ili me baš mrzi da pišem tu rutinu a hoću da propustim ostatak
programa posle poziva, ili aplikacija sama piše tu rutinu za vreme
rada. U tim slučajevima bi ta adresa bila nedefinisana. No, to nije
nikakvo 1:0 ili 6:5 za mene, nego samo razlika u metodu.
/ ali jednostavno smatram da je usporenje rada programa (navodno
/ zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga
Pa i nije, jer su obetri :) rutine koje se pozivaju na taj način već
učitane i pri ruci su; foks ima neki interni spisak već pozivanih
rutina i dosta ih brzo ponovo nalazi. Drugo, za makro zamene koje
daju imena (fajlova, a kod 2.00 bilo kakva imena) umesto &var piše se
(var), što radi desetak puta brže, jer dobar deo analize otpada -
rantajm zna da to nije opcija ili šta ti ja znam, već ime nečega što na
tom mestu može da dođe, te ga raspakuje iz odma'.
/ Pa da, reći ćeš ti, tako mi i treba kad radim u kliperu.;))
To si ti rekao :)
clipper.1012ndragan,
-> #993, djoskovski/ goste a kad dodjes u goste, zna se hvalis se.
1. ja napisah jednom aplikaciju na kliperu, što je dokumentovano u ovoj
temi
2. ja sam kod kuće na celoj teritoriji sezama sa pokrajinama osim amige,
koje i vama od sveg srca želim (od obatri, i 286 i 68000 i Z80)
3. da vas ne podbada neko sa strane, nikad ne bi isplivalo šta je to
zaista novo u 5.0; večito bismo čitali neke detalje a manje o suštini
4. i onda bi kroz nekoliko verzija došlo dotle da su programi na foksu i
kliperu uzajamno nečitljivi (to će se desiti), a takođe da više ne znamo
šta koji ima šta nema. I onda više ne bismo mogli da razgovaramo. A to
može da se izbegne.
clipper.1013ndragan,
-> #978, ndragan/ to ako stigneš'. Mislio sam danas, ali sam zaglavio u SORu... pa, ovih
/ dana.
Po datumu kad sam poslao poruku prošlo je samo tri dana, međutim pisana
je mnooogo ranije (negde od četvrtka nisam stigao da se okačim, ili sam
se kačio ali nisam imao egzek pri sebi...)
Elem, evo nove verzije SLOVIMA.PRG, ovog puta nije bilo druge nego da
je uzmem sam u ruke i doteram štogod. Testirao sam na nađene greške,
ali svi znamo koliko to vredi. Istestirajte me dobro, pa ako valja,
kažite, ako ne, opet kažite, i obratno.
Bue_ Ndragan
slovim2.arjclipper.1014bulaja,
-> #1010, zdiv│U datoteci subntx2.zip su dva fajla koja su zapakovana sa lozinkom
│konkretno xtr_lib.exe i xtr_src.exe. da li je to neka greska ili sta?!
└───
Nije greska, sifru dobijes posle registracije. Unutra se nalazi source
i potpuno funkcionalna biblioteka.
clipper.1015ndragan,
-> #1002, nbatocanin/ Mislim da se nismo razumeli: mislio sam na situacije kada treba
Jesmo, samo principski, a ne i u pojedinostima, ali to je već manje
bitno. To šacometrijsko programiranje mi zvuči kao ono dPaunovo
'programiranje na uvce'. Ima i toga, kad naiđem na situaciju koju nisam
imao - napišem ga odokativno, pa kad me iznenadi rezultatom, onda singl
step kroz sumnjivi deo. U principu opet traje kraće nego da se gnjavim
da iz glave pokušavam da predvidim sporedne efekte komandi i da sâm
sebi ručno (iz glave) teram neku rigoroznu kontrolu. Glavna kontrola je
da proteram program kroz očekivane situacije, i da prođe kroz njih zdrav
i čitav. Možda zvuči kao pomalo prljava tehnika, ali radi i na kraju se
dobija dosta čist tekst.
/ će da razmišlja da li je aŠi+2*j-3*k-4Ć ili nešto drugo - ako ciklus
/ izmene kratko traje probaću pa ću "nabosti" rezultat :)
Kalkulator je uvek pri ruci - ili on lajn dibager, te se sve to može
isprobati. Opet nemam potrebu da proračunavam unapred bilo šta. Za
primere kao što je taj tvoj opekli smo se svi bar po jednom, bez obzira
na jezik u kome radimo. Stvari kod kojih ima šanse da program zaglavi u
kombinatornom bumu ili da probije neke razumne granice (broj vrćenja
neke petlje, dužina niza, prostor koji treba na disku...) ipak dobro
proračunam ili bar ošacujem, i potom držim na oku.
S druge strane, postojanje bilo kakvih konstanti u programu je izvor
razloga za kasnije ispravke. žak ne volim da punim promenljive sa pet
ili šest blankova, znaš ono
Store ' ' to _sifra
č 4,4 get _sifra
...jer će sutra kod druge mušterije da se desi da ima malo obimniji
šif(t)arnik, i traži šifru sa dva mesta više, ili manje. To lako
izmenim, generator sprovodi izmenu kroz maske, ali van njih ostaju
slične pitalice kod štampi. Zato radije pišem
Store Space(Len(baza.sifra)) to _sifra
Takođe, jedine konstante koje dozvoljavam u programu su one koje ja
zadam (vrste dokumenata, prva cifra od šifre ili konta ako znači nešto),
inače nikakve zavarene stvari tipa 'ako je roba=234 .ili. 345 onda ovo
inače ono' ne stavljam. To je veoma kvarljiva stvar - prekosutra će doći
neka operaterka na zamenu dok ova bude na porođajnom, uputstva o
specijalnim šiframa se neće preneti i - cvrc, poziv u sred najgore
gužve. Radije ću ubaciti neki indikator u bazu ili izmisliti posebnu
vrstu dokumenta.
Ex, promenio sam temu, al' i ovaj drugi problem mi se čini vredan
rasprave, pa da čujem kako se drugi snalaze.
Bue_ Ndragan
clipper.1016ndragan,
-> #1003, nbatocanin/ jednostavnije napraviti novu funkciju za Clipper: napišeš na C-u,
/ ubaciš u lib i gotovo.
Foksu dugo nije trebalo tako nešto (mada je postojao mehanizam 'Load
... Call), a sada ima i to (*.plb fajlovi, biblioteke funkcija koje se
pozivaju kao bilo koje foksove funkcije, samo negde pre toga treba
ubaciti jedno 'Set Library to <ime>'). Foks je od početka bio
interpreter sa logikom da ima_sve (i ne treba Ce). Dobro, neke stvari
još nedostaju (index while :), ali kad instaliram foks odmah mogu da
radim i to sve što foks može, dakle ne treba ništa da nabavljam ('jel
ima neko biblioteku 'getsex.lib', baš me nešto svrbi da probam jednu
stvar' :), dok je Kliper išao logikom Cea: evo ti osnovni alat koji ima
samo to što mora da ima, a biblioteke ćeš pisati sam ili nabaviti.
Koncepcije su u startu različite, mada se aplikacije koje se na kraju
dobijaju malo razlikuju ;>.
E, da, pitanjce: je li istina da kliperaši imaju običaj da po startu
aplikacije pootvaraju sve baze i indekse koji će im trebati. If yes,
zašto? Mislim, ako je sve otvoreno, onda piči promaja.
clipper.1017ndragan,
-> #1004, ciki/ nenadj*biv tj. nenadmasiv u brini.
Znao sam da ima još jedna reč gde se ne može 'dj' zameniti sa 'đ', al
nisam mogao onomad da se setim.
clipper.1018ndragan,
-> #1008, boris./ ?in(1.2-1.0)*10) // 1
Ovako iz aviona, meni se čini da tu fali zagrada...
/ ?a // 2.0
/ ?int(a) // 1
Da si ispisao ? a-round(a,0) verovatno bi dobio +/- 0.00000nešto. Nije
stvar do jezika, nego do interne prezentacije brojeva; 0.2 ima prve
značajne cifre 2000... i eksponent -1; 1.2 ima značajne cifre 120000 i
eksponent 0 (ili .2000 e00 odnosno .12000 e01 što je češći slučaj); oni
imaju različite binarne prikaze u EIII (ili beše IEEE) formatu ili koji
već format koristi jezik/procesor. Pretpostavljam da je 0.2 iznutra
jednako 0.200000001 (recimo), a da se (1.2 - 1) iznutra prikazuje kao
0.19999999... . Ispiši na dovoljno mnogo decimala da ga vidiš, ili
zaokruži pre upotrebe na dve decimale više nego što sečeš.
clipper.1020aleksj,
Imao bih da nesto priupitam oko povezivanja C-a i Clippera.
Naime u knjigama je zapisano : " Napises funkciju u C-u i ulinkujes
je zajedno sa Clipper programom "( tako sam makar ja razumeo).
I to tako fino funkcionise dok se igram : ? "clipper" ... printf ... c
Ali kada sam probao nesto sa grafikom ( za C sam odskora poceo da se
interesujem), jednostavno mi javi prekoracenje stacka-a. Iskljucim mu
proveru, a "racunalo" mi se blokira. Pokusavao sam sve i svasta
ali bez uspeha.
P.S. Mozda je to zato sto sam koristio C++ 2.xx ?!
clipper.1021vcalic,
-> #1020, aleksj>> P.S. Mozda je to zato sto sam koristio C++ 2.xx ?!
Jeste. Uzmi MSC, verziju 5.1 ili 6.0.
clipper.1022nbatocanin,
-> #1015, ndragan> Ex, promenio sam temu, al' i ovaj drugi problem mi se čini
> vredan rasprave, pa da čujem kako se drugi snalaze.
Itekako. Problem bih nazvao "zavisnost podataka od programa". Ja ga
rešavam tako što smanjujem ovu zavisnost na najmanju moguću meru.
Pravim rečnik podataka, pa se trudim da u programu ne koristim
trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno
rešenje, sve više uviđam da je zadovoljavajuće.
clipper.1023aleksj,
-> #130, nbatocanin> 1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a
> program linkuje sa PLL opcijom, Clipper javlja da je los
> format datoteke. Kad se izbaci DOS=HIGH, sve savrseno
> radi.
Evo citam ove "zastarele" poruke, pa reko' da dam neko svoje zapazanje.
Isti efekti dogadjali su se i meni, ali kada smanjim kolicinu slobodne
memorije (612K) ucitavanjem nekog rezidentnog programa, NG na primer,
sve radi uobicajeno. Pa mislim da nije u pitanju DOS nego "visak" memorije.
P.S. Hvala ti na Milanovom (Nikolic) telefonu, nov sam na Sezamu pa se
polako prilagodjavam - nisam znao da postoji naredba USERS.
clipper.1024aleksj,
-> #130, nbatocanin> 1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a
> program linkuje sa PLL opcijom, Clipper javlja da je los
> format datoteke. Kad se izbaci DOS=HIGH, sve savrseno
> radi.
Evo citam ove "zastarele" poruke, pa reko' da dam neko svoje zapazanje.
Isti efekti dogadjali su se i meni, ali kada smanjim kolicinu slobodne
memorije (612K) ucitavanjem nekog rezidentnog programa, NG na primer,
sve radi uobicajeno. Pa mislim da nije u pitanju DOS nego "visak" memorije.
P.S. Hvala ti na Milanovom (Nikolic) telefonu, nov sam na Sezamu pa se
polako prilagodjavam - nisam znao da postoji naredba USERS.
clipper.1025kanda,
-> #1022, nbatocanin>> Itekako. Problem bih nazvao "zavisnost podataka od programa". Ja ga
>> rešavam tako što smanjujem ovu zavisnost na najmanju moguću meru.
>> Pravim rečnik podataka, pa se trudim da u programu ne koristim
>> trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno
>> rešenje, sve više uviđam da je zadovoljavajuće.
Vrlo zanimljiva tema! A sta sve drzis u recniku ?
clipper.1026ndragan,
-> #1022, nbatocanin/ Pravim rečnik podataka, pa se trudim da u programu ne koristim
/ trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno
Zvuči zanimljivo. Kako izgleda primer u sorsu? Mislim samo par redova.
clipper.1027snemcev,
-> #1013, ndragan>> ... Istestirajte me dobro, pa ako valja, kažite, ako ne, opet
>> kažite, i obratno.
Pa da kažem. Ovo (slovima.prg) nije Clipper. Jel ti ono beše
radiš u Fox-u? Problem sa DIMENSION imebr(9) sam lako rešio, ali
imam još jedan. Ajde, da te ne mrzi, reci mi šta radi funkcija
'betw'? Clipper se ubi tražeći je po bibliotekama, ali sve što
je uspeo da kaže je 'Undefined symbol after library search' ili
nešto u tom stilu.
clipper.1028nbatocanin,
-> #1025, kanda> Vrlo zanimljiva tema! A sta sve drzis u recniku ?
Malo je predugo za objašnjenje, ali ukratko, kompletnu strukturu baze
podataka: opis i definicije polja, komentare, indekse, itd. Na osnovu
ovih podataka vršim otvaranje datoteka, pridruživanje odgovarajućih
indeksa, itd. Na primer, datoteku otvaram sa:
Open ("Naziv")
a funkcija OPEN traži sve indekse u rečniku i otvara ih. Tako je
dodavanje novog indeksa potpuno bezbolno po program. Order menjam
preko simboličkog naziva, tako da promena indeksa ne utiče na
program. Na primer,
Order ("Prezime")
umesto
SET ORDER TO 2
jer ovo drugo propada kad se doda još jedan indeks na početak. Takođe
na osnovu rečnika automatski kreiram indekse po potrebi i vršim
povremeno brisanje podataka iz baze podataka. Pripremam neki prilog,
biće u jednim od narednih "Računara".
clipper.1029ndragan,
-> #1028, nbatocanin/ podataka: opis i definicije polja, komentare, indekse, itd. Na osnovu
Tako nešto ima i naš generator; ono što se razlikuje je što se na
osnovu programa koji pozivaju rutinu 'otvori' skupljaju postojeći
indeksi u upotrebi, analizira indeksni pojam i na osnovu toga generiše
program koji te indekse pravi.
/ Order ("Prezime")
Ovo me navodi da opet pitam: da li je (... ili) istina da je u kliperu
običaj da se po startu aplikacije pootvaraju sve baze i indeksi? Jer
ovako nešto praviti, za mene znači da su linije u kojima se baze
otvaraju malo daleko da bi se mogao pogledati redosled indeksa. Ja
nikad ne setujem redosled po imenu nego uvek po broju, jer na početku
rutine otvaram baze i na kraju ih zatvaram (rutina je retko kad duža od
8K, recimo (imam samo nekoliko koje su duže od 150 linija, a i to su
neke kombinovane višestruke štampe)), a to se onda lako kontroliše iz
bilo kog editora.
clipper.1030ndragan,
-> #1027, snemcev/ Pa da kažem. Ovo (slovima.prg) nije Clipper. Jel ti ono beše
/ radiš u Fox-u? Problem sa DIMENSION imebr(9) sam lako rešio, ali
Aha.
/ 'betw'? Clipper se ubi tražeći je po bibliotekama, ali sve što
Neće ni naći, to je foksova funkcija Between:
Between(a,b,c) je isto što i b<=a .and. a<=c
...samo što je sistemska, pisana najverovatnije u asembleru. Koristim
je već refleksno, pa mi nije palo na pamet da neće proći kroz kliper.
More, jel radi to čudo kako valja (posle ovog)?