clipper.1028bulaja,
-> #1019, mdrazic│idu, idu... (a i što ne bi kada index ne zna da li ti radiš trenutno sa
│set deleted on ili off).
└───
Zna (tj. mogao bi da sazna:), zavisno od stanja set deleted u trenutku
osvežavanja indeksa - kada se slog obriše RDD proveri da li su deleted
isključeni i ako jesu izbaci ključ iz baze.
clipper.1029dcolak,
-> #1021, mileusna│ Kao prvo nije mi jasno kakve veze SEEK ima sa CONTINUE. CONTINUE nastavlja
│ pretraživanje koje je započela komanda LOCATE, dok SEEK pretražuje
│ isključivo indeksiranu tabelu i to od početka. Ili sam te ja pogrešno
│ shvatio, ili si ti pogrešno objasnio.
Da, moja greška, mislio sam na LOCATE.
│ Ovo gore navedeno važi, kao što rekoh, samo ako je filter po polju za koji
│ postoji indeks. Ali šta raditi ako se radi o nečem složenijem, kao recimo
│ SET FILTER TO fnIsplata > 300 .AND. fnUplata > 1000. Jednom sam imao i taj
│ problem. Rešio sam ga tako što sam prvo vršio pretraživanje po bazi i
│ ukoliko bi slog zadovoljio uslov izvršio bi jedno AADD( aNađeni,RECNO() ).
Upravo je to slučaj. No, 4096 je mali broj pa ću po svemu sudeći
morati da pravim novi .DBF (što sam pokušao da izbegnem). Eh, kad
mi je bio postavljen uslov da reakcije na izbor opcija budu trenutne
:) Ipak će biti onoga "Please wait..." :)
Sledge DAMMIR!
clipper.1030ikordic,
-> #1013, nbatocaninRE: Shadow
=> Bolji štos je sa Transform i PICTURE kombinacijom:
=> Transform (cScreen, Replicate("X" + Chr(?), Len(cScreen)/2)
Pa baš i nije. Ovo tvoje je lepo ako je bitno da sors bude što kraći, ali se
zato radi bespotreban posao. Zašto bi se menjali atributi na delu ekrana
koji će ionako biti pokriven nekom maskom ili alert-om?
Treba da se izmenjaju atributi samo od
nBott + 1, nLeft + 1 do nBott + 1, nRight
i od
nTop + 1, nRight + 1 do nBott + 1, nRight + 1
Nisam merio koliko je brže ovako, ali znam da u CLD-u traje večnost ako se
prolazi kroz muscle varijantu. Ne znam kako ovo izgleda na 5.2x, tamo je
navodno dokumentovan neki low level pristup funkcijama za rad sa
stringovima?
clipper.1031ikordic,
-> #1011, dcolakRE: SET FILTER
=> │ Ne koristi SET FILTER :)
=>
=> Hm, al' kako onda da TBrowsujem kroz datoteku sa zadatim filterom ako
=> ne koristim SET FILTER... Opet kroz Skipper-a da pravim svoje rutine?
Da. Najpre odmah zaboravi na akrobacije sa SET FILTER, DELETE i sl., jer
možeš napraviti potpuno funkcionalne ekvivalente u čistom Clipper-u, koje su
po brzini i komforu daleko ispred pomenutih anahronizama. Cena koju plaćaš
je što jedared za svagda obradiš te situacije i ondak samo koristiš i
eventualno dopunjavaš napisano.
Što se tiče konkretnog, moraš napraviti svoje funkcije koje će obrađivati
ugrađene funkcije za mrdanje po bazi, dbSkip (), dbGoTop () i dbGoBottom ().
Njih preusmeravaš uz pomoć
oBrowse:goBottomBlock := { || MyGoBott () }
oBrowse:goTopBlock := { || MyGoTop () }
oBrowse:skipBlock := { | n | MySkip ( n ) }
Ondak u tim tvojim funkcijama obrađuješ npr. da skok na početak ne skoči na
prvi slog, nego na onaj koji je definisan kao gornja granica. Analogno tome,
kada TBrowse kaže "daj sledeći", tvoja funkcija potraži sledeći slog koji
zadovoljava uslov itd. Naravno, prethodno je drastično brže ako se radi o
indeksiranim poljima :)
=> Hm, recimo "Damir" .like. "amir" == .T. ;)
Pa, imaš "amir" $ "Damir == .T.? Ili Soundex ()?
clipper.1032ikordic,
-> #1007, bulajaRE: Clipper News
=> │Clipper News│
Umoljavamo za nastavak ove prakse :) Uzgred, ko/šta je izvor?
clipper.1034mileusna,
-> #1029, dcolak>> mi je bio postavljen uslov da reakcije na izbor opcija budu trenutne
>> :) Ipak će biti onoga "Please wait..." :)
Bilo bi mnogo bolje da se umesto "Please wait..." na vrhu ekrana nalazi BOX
sa informacijama o uspešnosti pretraživanja, kao na primer :
┌────────────────────────────────────────┐
│ Pretraženo 50% 1500/3000 │
│ % █████████████████ % │
│ Nađeno : 467 │
└────────────────────────────────────────┘
Ispod ovoga, stalno bi se ispisivao sadržaj nađenih slogova, pa ako korisnik
ugleda ono što mu treba, može pre vremena da prekine pretraživanje sa recimo
<SPACE>. Zatim malo "browsuje", pa ako zaključi da se prevario nastavi
pretraživanje od onog mesta na kome se zaustavio. Funkcije za sve ovo nije
teško napraviti, a priznaćeš mogu da deluju vrlo efektno.
clipper.1035mileusna,
-> #1031, ikordic>> oBrowse:goBottomBlock := š đđ MyGoBott () ć
>> oBrowse:goTopBlock := š đđ MyGoTop () ć
>> oBrowse:skipBlock := š đ n đ MySkip ( n ) ć
>> Ondak u tim tvojim funkcijama obrađuješ npr. da skok na početak ne skoči na
>> prvi slog, nego na onaj koji je definisan kao gornja granica. Analogno tome,
>> kada TBrowse kaže "daj sledeći", tvoja funkcija potraži sledeći slog koji
>> zadovoljava uslov itd. Naravno, prethodno je drastično brže ako se radi o
>> indeksiranim poljima :)
Ukoliko se radi o indeksiranim poljima, ovo je OK ( to sam i ja napisao
dcolak-u ). Ali šta ako nema indeksa? Gore kažeš "tvoja funkcija potraži
sledeći slog koji zadovoljava uslov". Pa zar nije to upravo ono što radi
komanda SET FILTER TO (a upravo to pokušavamo da izbegnemo) ?
Doduše, možda se sa promenom goBottomBlock, i goTopBlock (zapamti se koji je
prvi a koji zadnji) i može postići ubrzanje u odnosu na SET FILTER, ali će
skipBlock uvek morati da radi isto što i SET FILTER (IF "usna" $ fcPseudo itd.)
clipper.1036aquarius,
NLabSGetReader V2.35 - 20.11.94
- umesto funkcije NLabSChgReader(), omoguceno da za svaki
GET, komandom NLABS_READER _ON/_OFF bude odredjeno da li
ce biti upotrebljen NLabSGetReader().
- novi fajl NLabSGrd.CH
- uradjene manje izmene koda.
Normalno, moze u DIR, ako se bulaja slaze O:)
aquarius
nlgrd235.zipclipper.1037aquarius,
-> #954, neman<> Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i da li
<> neko ima iskustva sa takovm kombinacijom ?
FUNCky II + SIX2 v2.01.02 + Blinker 3.01 = :)
FUNCky II + SIX2 v2.01.02 + ExoSpace 1.0f = :)
aquarius
clipper.1038mdrazic,
-> #1023, neman>> Bolje ti je da ubacis u redovne indekse (tagove) 'for
>> .not.deleted()', a ako zelis reciklazu (i samo za to i za
>
> Da, samo sto na mrezi brisanje sloga koji ima indekse sa uslovom
> FOR !DELETED() ( NSX 1.5 ) usporava rad svih onih koji pristupaju
> podacima, pa za bazu sa cestim brisanjen ne preporucujem to resenje.
E, negde mora da se plati. Ako hoćeš da ti brisani slogovi ne smetaju
pri čitanjima (i da ne koristiš set deleted on) onda moraš nekako da
izbaciš zapise iz indeksa pri ažuriranju. Nego kaži, koliko se to
usporava rad? Prilikom brisanja se osim taga u tabeli ažuriraju i
svi indeksi ali to ne bi trebalo mnogo da traje, otprilike kao i
dodavanje novog zapisa. Međutim u aplikacijama (barem mojim) je
mnogo češće dodavanje novih i ažuriranje postojećih zapisa nego
brisanje, pa ne vidim da ovo može predstavljati problem.
Milan
P.S. Da li je to usporen pristup baš podacima koje si ti obrisao ili
nekom drugim (kojim) ?
clipper.1039d.petrovic,
-> #1002, goxx> Pre nekog vremena sam nesto ovde pisao na ovu temu. Ja imam 286
> na 12 MHZ i sistem rada sa prebrojavanjem slogova ladno prolazi
> na njemu čak i sa
Verovaću kad probam ;)
clipper.1040d.petrovic,
-> #1035, mileusna> Ukoliko se radi o indeksiranim poljima, ovo je OK ( to sam i ja
> napisao
Pa nećemo valjda opet o LOCATE ? ;(((
clipper.1041d.petrovic,
-> #1034, mileusna> Bilo bi mnogo bolje da se umesto "Please wait..." na vrhu
> ekrana nalazi BOX sa informacijama o uspešnosti pretraživanja,
> kao na primer :
> ┌────────────────────────────────────────┐
> │ Pretraženo 50% 1500/3000 │
> │ % █████████████████ % │
> │ Nađeno : 467 │
> └────────────────────────────────────────┘
Ovako nešto koristim za indeksiranje i rezultat je poražavajući.
Kada piše procente i crta trakicu indeksiranje traje oko 6 puta duže.
Isprobano valjda na 386 ili 486.
clipper.1042d.petrovic,
Do koje dubine može da ide rekurzija ?
Da budem precizniji ?
Koliko puta može da pozove sebe, a da se ne prepuni stek i program pukne ?
clipper.1043ikordic,
-> #1024, dvesicRE: SIx & RTLink
=> Nema razloga da ne radi. Ako linkujes sa Rtlink-om, Six ce ti
=> (naravno, ako iskljucis DBFNTX koji se linkuje po default-u)
=> povecati Load Size za 20 - 30 Kb. Ako linkujes sa Blinkerom
Nisam u toku: zar nije rečeno da se SIx praktično ne može linkovati
RTLinkom zbog obima?
clipper.1044bulaja,
-> #1029, dcolak│Upravo je to slučaj. No, 4096 je mali broj pa ću po svemu sudeći
│morati da pravim novi .DBF (što sam pokušao da izbegnem).
└───
Pa onda pravi DBF, ali ne za kopiranje kompletnih slogova koji
zadovoljavaju uslov, već za istu stvar za koju bi ti služio niz -
smeštanje pointera na slogove.
clipper.1045bulaja,
-> #1032, ikordic│Umoljavamo za nastavak ove prakse :) Uzgred, ko/šta je izvor?
└───
Clipper Advisor :).
clipper.1046cnenad,
-> #1041, d.petrovicŁŁŁ Ovako nešto koristim za indeksiranje i rezultat je poražavajući.
ŁŁŁ Kada piše procente i crta trakicu indeksiranje traje oko 6 puta duže.
Šta si stavio kao vrednost posle EVERY ? Zvekni mu 500 pa neće biti baš tako
sporo. Jeste da je onda efekat manji ali... ne može se i jare i pare :)
clipper.1047dcolak,
-> #1030, ikordic│ Nisam merio koliko je brže ovako, ali znam da u CLD-u traje večnost ako se
│ prolazi kroz muscle varijantu. Ne znam kako ovo izgleda na 5.2x, tamo je
Značajno brže. Kada se menja ceo ekran ispod maske primeti se pauza.
Ovako "po ivicama" se ič ne primeti ;)
Sledge DAMMIR!
clipper.1048dcolak,
-> #1034, mileusna│ Ispod ovoga, stalno bi se ispisivao sadržaj nađenih slogova, pa ako
│ korisnik ugleda ono što mu treba, može pre vremena da prekine pretraživanje
│< sa recimo SPACE>. Zatim malo "browsuje", pa ako zaključi da se prevario
│ nastavi pretraživanje od onog mesta na kome se zaustavio. Funkcije za sve
│ ovo nije teško napraviti, a priznaćeš mogu da deluju vrlo efektno.
Definitivno efektno :) Sva sreća te se sve ovo može "dopisati" na
već postojeći program. Da i ja malo ličim na Microsoft ;>
Verzija 2.0 User Friendly, needs extra 2Mb ;)
BTW, radim sa Clipper 5.01. Postoji li nešto zbog čega bih _morao_
preći na 5.2?
Sledge DAMMIR!
clipper.1049bulaja,
-> #1036, aquarius│NLabSGetReader V2.35
└───
Prebačeno u CLIPPER dir :).
clipper.1050bulaja,
-> #1041, d.petrovic│Ovako nešto koristim za indeksiranje i rezultat je poražavajući.
│Kada piše procente i crta trakicu indeksiranje traje oko 6 puta duže.
└───
A ti optimizuj malo funkciju za refresh trakice - npr. piši direktno na
ekran a ne preko SAY, osvežavaj prikaz tek svakih nekoliko (ili nekoliko
stotina:) slogova, koristi EVERY opciju kod SIx-a,... Sigurno neće biti
6 puta sporije :).
Mislim da je od brzine samog indeksiranja mnogo važnije da user ima neki
feedback da se nešto dešava, pa sam zato spreman na prilične žrtve u
performansama indeksiranja (npr. čak i duplo sporije:) ali da user ne
bleji u ekran u čekanju da se rebuild indeksa završi.
clipper.1051bulaja,
-> #1048, dcolak│ BTW, radim sa Clipper 5.01. Postoji li nešto zbog čega bih _morao_
│ preći na 5.2?
└───
Da - Computer Associates :). Ako ti nije dovoljno to što je od kada su
kupili Nantucket (ili samo Clipper kao proizvod - ne znam, a i nije
bitno:) podrška korisnicima neuporedivo bolja i budućnost Clipper-a
izvesnija, onda imaš novitete kao što su RDD-ovi (ja bih se sada jako
teško odvikao SIx-ovih predosti:), zatim mogućnost pravljenja protected
mode aplikacija, /es1 switch kod kompajliranja (moj omiljeni:),... Ako
ništa bar imaš nekoliko godina stariji i stabilniji program (i pored
toga što stalno otkrivaju bug-ove:). I ne zauzima mnogo više mesta na
disku nego verzija 5.01.
clipper.1052dvesic,
-> #1043, ikordic>> Nisam u toku: zar nije receno da se SIx prakticno ne moze
>> linkovati RTLinkom zbog obima?
Zavisi od velicine aplikacije. Ako aplikacija sa Blinkerom i
CL520MIN.LNK fajlom trazi X Kb, ista ta aplikacija ce sa RTLinkom
traziti maksimalno X+30 Kb. E sad, sve zavisi koliko je tvoja aplikacija
stvarno gladna memorije :)))
clipper.1053neman,
-> #1038, mdrazic> izbacis zapise iz indeksa pri azuriranju. Nego kazi,
> koliko se to usporava rad? Prilikom brisanja se osim taga
> u tabeli azuriraju i
Novell 3.11, radne stanice 3 do 4 286/1MB/20MHz, 2 x 386SX/2MB/40MHz/,
1x386DX/4MB, server 386 8MB, baza oko 20 MB, oko 50,000 zapisa, 5 tagova
duzine 15-20 znakova, NSX dugacak ( napamet ) 2-3 MB. Blokiranje, preciznije
receno usporavanje jer se ne javlja poruka o zauzetosti baza, traje
2 - 3 sekunde kada se brise slog. Usporava se pristup i ostalim radnim
stanicama koje koriste tu datoteku ( a koriste je sve :). Interesantno je
da se usporava i rad stanica koje ne koriste u datom trenutku tu datoteku.
Slican slucaj sam vec pomenuo sa SET SCOPE komandom, kada dolazi do drrra-
sticnog usporenja rada dok se kreces po "skopiranoj" datoteci koja se upravo
azurira na vise drugih stanica.
Onaj SET DIRTYREAD izgleda nije bezveze postavljen :(
Naravno, radi se o NSX 1.5 i MS DOS 6.20 na svim radnim stanicama. Nadam
se da cu stici ovih dana da testiram odgovarajuce delove programa sa
NSX v 2.01.02.
clipper.1054neman,
-> #1042, d.petrovic> Do koje dubine moze da ide rekurzija ?
>
> Da budem precizniji ?
> Koliko puta moze da pozove sebe, a da se ne prepuni stek i
> program pukne ?
Probaj ;)
clipper.1055mdrazic,
-> #1028, bulaja> Zna (tj. mogao bi da sazna:), zavisno od stanja set deleted u trenutku
> osvežavanja indeksa - kada se slog obriše RDD proveri da li su deleted
> isključeni i ako jesu izbaci ključ iz baze.
Razmisli i videćeš da nije logično. Zamisli situaciju da istu tabelu
gledaju dva programa (mreža) i to jedan sa set deleted on a drugi sa off.
Milan
clipper.1056mdrazic,
-> #1031, ikordic> => Hm, recimo "Damir" .like. "amir" == .T. ;)
>
> Pa, imaš "amir" $ "Damir == .T.? Ili Soundex ()?
A da li treba i da je "Mira" .like. "Amir" ili ne ?
clipper.1057mileusna,
-> #1041, d.petrovic>> Kada piše procente i crta trakicu indeksiranje traje oko 6 puta duže.
>> Isprobano valjda na 386 ili 486.
Ovo se događa verovatno zato što se tvoja funkcija za "trakicu" poziva
posle svakog sloga. Ako bi je recimo pozivao posle svakog 50 sloga, ili još
bolje izračunao koliko iznosi 10% tabele, pa je pozivao samo onda (10 puta), ne
verujem da bi bilo baš tako.
Uostalom, u poruci je bilo reči o pretraživanju, a ne o indeksiranju, pa je
"trakica" nešto više od estetskog dodatka.( prikazuje se broj nađenih,
pretraženih itd. )
clipper.1058nbatocanin,
-> #1030, ikordic> RE: Shadow
>
> => Bolji štos je sa Transform i PICTURE kombinacijom:
>
> Pa baš i nije.
> Treba da se izmenjaju atributi samo od
>
> nBott + 1, nLeft + 1 do nBott + 1, nRight
Hm, ne verujem da se dobija neka značajna razlika. Ja sam ovaj sistem
dugo koristio kao osnovu za funkciju ColorWin koja zadati prozor na
ekranu postavlja u određenu farbu i nisam imao primjedbi na njenu
brzinu. Uostalom, isti ovaj štos se može primeniti i za te parčiće
koje pominješ. Suština je da se ovako izbegava spora FOR petlja.
clipper.1059mileusna,
-> #1050, bulaja>> Mislim da je od brzine samog indeksiranja mnogo važnije da user ima neki
>> feedback da se nešto dešava, pa sam zato spreman na prilične žrtve u
>> performansama indeksiranja (npr. čak i duplo sporije:) ali da user ne
>> bleji u ekran u čekanju da se rebuild indeksa završi.
Pa naravno. Trebalo bi da svi budemo srećni što je ovo moguće ubaciti u
programe, a ne da kukamo zbog brzine. Zamisli samo CLIPPER program za XXI vek
sa potpuno crnim ekranom na čijem vrhu piše "Sačekaj, reindeks baza u toku", a
korisnik upravo izašao iz slikovitog šarenila Windowsa...
clipper.1060st.pol,
Konkurs za programera, jos uvek traje....
Detalji na mail st.pol
clipper.1061ikordic,
-> #1035, mileusnaRE: Dizajn
=> Ukoliko se radi o indeksiranim poljima, ovo je OK ( to sam i ja
=> napisao dcolak-u ). Ali šta ako nema indeksa? Gore kažeš "tvoja
=> funkcija potraži
Akcenat cele bajke je i bio na postojanju indeksa za taj uslov. Za razliku
od Fox-a, dBase-a i sličnih paketa koji te prosto vuku na zbrda-zdola
"programiranje" ;) u Clipper-u najpre moraš (ne moraš, al' bi trebao) sesti
i u glavi/na papiru isprojektovati celu bazu, sve potrebne datoteke,
indekse, veze i sl. Posledica celog koncepta jeste da je onda sasvim lako
imati i pomenute funkcije koje ti značajno ubrazavaju program, ne koristeći
pomenute anahronizme. Naravno, stvar je sasvim drugačija ako uzmeš da
prepravljaš postojeći program, tvoj ili tuđi. Tada se primenjuje sistem
"seci uši, krpi dupe" i dolazi do nekih krhkih konstrukcija, koje će kad-tad
vetar oduvati.
=> Doduše, možda se sa promenom goBottomBlock, i goTopBlock (zapamti se
=> koji je prvi a koji zadnji) i može postići ubrzanje u odnosu na SET
=> FILTER, ali će skipBlock uvek morati da radi isto što i SET FILTER
=> (IF "usna" $ fcPseudo itd.)
Ovakve situacije se daju izbeći projektovanjem baze unapred, tako da uopšte
i ne dolaziš u situaciju da posežeš za ovakvim mehanizmima.
clipper.1062ikordic,
-> #1051, bulajaRE: 5.01 -> 5.2
=> │ BTW, radim sa Clipper 5.01. Postoji li nešto zbog čega bih _morao_
=> │ preći na 5.2?
=> └───
=> Da - Computer Associates :). Ako ti nije dovoljno to što je od kada
=> Clipper-a izvesnija, onda imaš novitete kao što su RDD-ovi (ja bih se
=> sada jako teško odvikao SIx-ovih predosti:), zatim mogućnost
=> pravljenja protected mode aplikacija, /es1 switch kod kompajliranja
Elem:
* To što radnju vozi nova firma nema nikakve veze sa upotrebljivošću
softvera, čak štaviše. Ima veze za ljude koji imaju original &
registrovan softver, što većinu ovde ne tangira.
* Izmenljivi RDD-i postoje samo u 5.2, ali je njihova upotrebljivost
krajnje diskutabilna. Jedini normalan RDD, SIx, se bez problema može
koristiti u 5.01a Clipper-u (doduše, to je već CA :))
* Protected mode aplikacije se rade Blinker-om, koji opet, sasvim
normalno radi sa 5.01.
* Za sve ovo vreme nisam našao NI NA JEDAN JEDINI nedokumentovan bug u
5.01 koji bi pravio neke ozbiljne probleme, da ne govorimo o VMIF
greškama koji su mi potpuna nepoznanica ;) Postoje bubice, kao i
svugde, ali se one uglavnom svode na neke sitnije propuste, i NIJEDNA
od njih ti ne može srušiti aplikaciju, što ovi što koriste 5.2 mrtvi
'ladni prihvataju.
* Ne daju ti omenu.prg uz njega - definitivan minus ;)
clipper.1063pyramid,
Povodom clanka Zivotica u Racunarima 101 "Povezi me nezno":
...deo programa (clipperovog) se prebaci na server... :<
Zvuci jednostavno, ali:
Zna li neko kako se na serveru NOVEL NETWARE-a moze izvrsiti
CLIPPER program?
Mnogo mi treba.
Hvala, Pyramid.
clipper.1064bulaja,
CA-Clipper 5.3 beta - First Look
Glavna novost u odnosu na verziju 5.2 je Windows razvojno okruženje,
nalik na ono u CA-Visual Objects. Naravno i dalje postoji standardni
command-line kompajler i može se raditi na uobičajeni način (što ćemo
verovatno i nastaviti:).
CA-Clipper Workbench je dakle repositary-based okolina, odnosno sve
aplikacije i njihovi delovi se čuvaju u jednom skladištu (repositary) i
pristupa im se hijerarhijski - prvo se odabere aplikacija sa kojom se
radi, zatim neki njen modul (odnosno .PRG datoteka), i na kraju neki od
entiteta (entiteti mogu biti standardne procedure, funkcije, objekti..).
Moduli su ekvivalent PRG datoteka, a na nivou aplikacije postoji i
poseban "Binary Objects" modul koji je dostupan jedino iz Windows
okruženja, nisam našao način da ga prebacim u neki razumljivi fajl :).
CA-Clipper WB sam održava ekvivalente make i link datoteka, opcije za
kompaljiranje i linkovanje se lako podešavaju preko radio buttons-a :).
Od alata, CA-Clipper Workbench poseduje editore menija (korisna stvar),
ekranskih maski (takodje korisno), DataBase Server editor i field
properties editor. Ove poslednje dve stvari (DB Server i Field
properties) su jedna built-in implementacija rečnika podataka.
Razvojna okolina je očigledno direktno iščupana iz VO, čak i neke
datoteke imaju ekstenziju .VO :). Ovo znači i da su hardverski zahtevi
za korišćenje CA-Clipper WorkBench-a slični - 8 Mb RAM je apsolutni
minimum (sa 4 Mb se može startovati i plakati:), a za ozbiljniji rad
potrebno je 16 Mb RAM. Naravno ovo samo znači da nećete koristiti WB,
pošto se sasvim lepo može sve raditi kao i do sada iz DOS-a :). Na disku
zauzima nešto manje od 15 Mb, od čeka na WB otpada celih 10 (u konačnoj
verziji na ovo će biti potrebno dodati prostor koji će zauzeti on-line
dokumentacija).
DB Server nažalost izgleda nije ono što je uvedeno u VO, a to je
kompletna klasa za rad sa bazom umesto starog načina preko aliasa. On
novih klasa pronašao sam samo TopBar i PopUp klase za kreiranje pull
down sistema menija. GET sistem je proširen nedostajućim zezalicama -
push i radio buttons-ima, combo i list box-ovima i slično (to je
zbudženo preko nekih nizova, ali radi:).
Medju novim include datotekama postoji i memosys.ch (unutra je samo
nekoliko konstanti, ništa spektakularno:) što može značiti da konačno
postoji (ili je spremaju) MemoSys zamena za MemoEdit().
Teško je bez dokumentacije provaliti šta je sve dodato, ali nekako sam
iskopao da je sada konačno i ugradjena podrška za miša, i to u GET
sistem (jako lepo:), TBrowse i menije.
ExoSpace je JEDINI linker u ovoj beta verziji, dakle nema ni RTlink-a ni
nečeg sličnog. Ako ovako ostane, to će značiti problem u kompatiblnosti
sa starim bibliotekama koje ne rade u protected modu, ali sa druge
strane će naterati sve proizvodjače ovih biblioteka da porade na PM
verzijama.
Ova beta verzija CA-Clipper-a 5.3 nema nikakvu on-line dokumentaciju i
neupotrebljiva je za krajnji razvoj, pošto pre i posle startovanja
svakog kreiranog EXE-a ispiše da je beta verzija i da nije za širu
upotrebu :). Od RDD-ova ovde su dostupni samo DBFNTX i DBFNDX, nisam
još probao kako se snalazi sa bibliotekama za Clipper 5.2 (odnosno sa
SIx-om).
Dakle ukratko - ništa spektakularno osim Windows razvojne okoline, ali
ništa manje od onoga što su već ranije najavili da će biti noviteti u
verziji 5.3 (sem što nisam nigde video klase za prozore, za koje mi se
čini da su bile spominjane) Značajni noviteti su proširenja GET sistema,
klase za menije, mouse support, integrisani ExoSpace - sasvim dovoljno
za upgrade onda kad izađe konačna verzija.
Ovo su samo prvi utisci (bazirani na nekoliko sati rada:), pogledaću još
malo šta ima (ako nadjem vremena:) i preneću svoja zapažanja ovde :).
(Bulaja)
clipper.1065bulaja,
-> #1062, ikordic│Jedini normalan RDD, SIx, se bez problema može koristiti u 5.01a
│Clipper-u (doduše, to je već CA :))
└───
SIx2\DOC\ReadMe.1st:
>> NOTE: SIx 2.0 is for use with Clipper 5.2x ONLY. It will not work
>> with Clipper 5.01a at all.
clipper.1066nbatocanin,
-> #1052, dvesic>>> Nisam u toku: zar nije receno da se SIx prakticno ne
>>> moze linkovati RTLinkom zbog obima?
>
> Zavisi od velicine aplikacije. Ako aplikacija sa Blinkerom
> i CL520MIN.LNK fajlom trazi X Kb, ista ta aplikacija ce sa
> RTLinkom traziti maksimalno X+30 Kb. E sad, sve zavisi
> koliko je tvoja aplikacija stvarno gladna memorije :)))
Koliko se ja sećam, nije bilo baš tako. Meni je _bez_ DBFNTX drajvera
SIX 1.1 tražio oko 100K više sa RTLinkom. A i logično je: RTLink ne
može da smesti u overleje ASM i C module, za razliku od Blinkera, pa
ako se u overleje stavljaju delovi od CLIPPER.LIB i EXTEND.LIB, onda
sve ide u root. U suštini zavisi od raspodele koda po overlejima:
razlika između CL52MAX i CL52MIN može biti ogromna.
clipper.1067mdrazic,
-> #1053, neman> receno usporavanje jer se ne javlja poruka o zauzetosti baza, traje
> 2 - 3 sekunde kada se brise slog. Usporava se pristup i ostalim radnim
> stanicama koje koriste tu datoteku ( a koriste je sve :). Interesantno je
> da se usporava i rad stanica koje ne koriste u datom trenutku tu
> datoteku.
Ovo poslednje znači da server ne može da opsluži dovoljno brzo zahteve.
Za navedeno vreme (do 3 sekunde) su se upisivali podaci u par velikih
tabela i još 5-10 pratećih, naravno sve sa .NTX indeksima u jednoj
aplikaciji za osiguranje koju smo radili i gde je 4-5 korisnika
popunjavalo dva ekrana podataka i posle se to upisivalo u navedene
tabele za 2-3 sekunde.
Probaj, možda može Novell da se bolje podesi, jer server koji smo
mi koristili nije bio bolji od tvog.
> Slican slucaj sam vec pomenuo sa SET SCOPE komandom, kada dolazi do
> drrra- sticnog usporenja rada dok se kreces po "skopiranoj" datoteci koja
> se upravo azurira na vise drugih stanica.
>
> Onaj SET DIRTYREAD izgleda nije bezveze postavljen :(
To je verovatno zato što kada god se radi skip, ispita se heder indeksnog
fajla da li je izmenjen (bilo upisa u međuvremenu). U slučaju izmene se
ponovo čitaju tabele i indeksi u tvojoj memoriji radi ažurnosti.
Dirtyread se verovatno na ovaj heder ne obazire već tera po starom što je
brže.
Možda treba razmisliti da u cilju dobitka u brzini zaključaš fajl dok
(brzo) iščitaš podatke o traženim zapisima, pa onda otključaš da u toku
tvog čitanja grupe zapisa niko ne smeta sa izmenama hedera indeksnih
fajlova.
Milan
clipper.1068mdrazic,
-> #1042, d.petrovic> Do koje dubine može da ide rekurzija ?
>
> Da budem precizniji ?
> Koliko puta može da pozove sebe, a da se ne prepuni stek i program pukne
Kada recimo zaboravim skip u petlji (recimo) pa program zaglavi, ovo
rekurzivno pozivanje me spasava resetovanja. Pozoveš neki kalkulator
desetak-petnaestak puta pa te lepo vrati u DOS.
Inače se može napisati funkcija koja će ispitati i kontrolisati koliko
puta je modul iz koga je pozvana pozivan rekurzivno. Dozvolite do
3 kalkulatora i do 4 kalendara recimo, i ne dozvoljavate više. Poziv
ove funkcije je tipično na vrhu modula koji odrađuje neki set key.
Milan
clipper.1069mileusna,
-> #1062, ikordic>> Ima veze za ljude koji imaju original & registrovan softver,
"Registrovan softver" <-- Jel ovo neka strana reč ;) Tražio sam u rečniku i
nisam našao. ;)
clipper.1070spantic,
-> #1063, pyramid> Zna li neko kako se na serveru NOVEL NETWARE-a moze izvrsiti
> CLIPPER program?
Koliko je meni poznato, nikako. Potrebno je imati moduo za Novell da bi
mogao da se izvršava na serveru, a to ne može Clipper. Možeš to da uradiš
iz C-a. Najlakše iz Watcom C 10 prevodioca.
clipper.1071dejanr,
-> #1063, pyramid>> Zna li neko kako se na serveru NOVEL NETWARE-a moze izvrsiti
>> CLIPPER program?
Nikako. Na Novell 3.1x+ serverima mogu da se izvršavaju samo NLM-ovi,
a to su posebno pisani i linkovani programi. Da li negde na tržištu
postoji nešto što bi clipper program prevelo i povezalo kao NLM ne znam
sigurno, ali veoma sumnjam.
clipper.1072dejanr,
-> #1069, mileusna>> > Ima veze za ljude koji imaju original & registrovan softver,
>>
>> "Registrovan softver" <-- Jel ovo neka strana reč ;) Tražio sam u rečniku
>> i nisam našao. ;)
Verovatno je mislio na softver koji kupiš, popuniš registracionu karticu i
pošalješ proizvođaču. Posle ti (osim ako si u Jugoslaviji) pružaju razne
vrste podrške, manje ili više vredne.
clipper.1073d.petrovic,
-> #1046, cnenad> Šta si stavio kao vrednost posle EVERY ? Zvekni mu 500 pa neće
> biti baš tako sporo. Jeste da je onda efekat manji ali... ne
> može se i jare i pare :)
Mislim da nisam shvatio:
Funkcija piše procente i crta trakicu.
clipper.1074d.petrovic,
-> #1054, neman>> Do koje dubine moze da ide rekurzija ?
> Probaj ;)
Hoću ;)
clipper.1075ikordic,
-> #1064, bulajaRE: Clipper 5.3
=> Ovo su samo prvi utisci (bazirani na nekoliko sati rada:), pogledaću
=> još malo šta ima (ako nadjem vremena:) i preneću svoja zapažanja ovde
Hvala na opisu, obavezno nađi vremena :) i molim te poradi na NAJBITNIJOJ
stavki - novim i starim bagovima :(
Inače, šteta za IDE ... po onom tekstu, ja sam pomislio da je posredi DOS
IDE, kad ono ... :(
clipper.1076d.petrovic,
-> #1050, bulaja> A ti optimizuj malo funkciju za refresh trakice - npr. piši
> direktno na ekran a ne preko SAY, osvežavaj prikaz tek svakih
> nekoliko (ili nekoliko stotina:) slogova, koristi EVERY opciju
> kod SIx-a,... Sigurno neće biti 6 puta sporije :).
Ma to sam i hteo, ali nije lepo kod manjih baza, mada... sad sam se setio
da bi mogao prvo RecCount()...
> Mislim da je od brzine samog indeksiranja mnogo važnije da user
> ima neki feedback da se nešto dešava, pa sam zato spreman na
> prilične žrtve u performansama indeksiranja (npr. čak i duplo
> sporije:) ali da user ne bleji u ekran u čekanju da se rebuild
> indeksa završi.
Ehhh..., treba da bude lepo i nije strašno kod bržih mašina, mada će sada
da probam gore navedeno :)
clipper.1077d.petrovic,
-> #1057, mileusna> bolje izračunao koliko iznosi 10% tabele, pa je pozivao samo
> onda (10 puta), ne verujem da bi bilo baš tako.
Ma biće 100 puta (za 100 % i 50 polja trake)
clipper.1078d.petrovic,
-> #1051, bulaja> /es1 switch kod kompajliranja (moj omiljeni:),
==== jel ovo nešto slato ? :)
clipper.1079d.petrovic,
-> #1068, mdrazic> Kada recimo zaboravim skip u petlji (recimo) pa program
> zaglavi, ovo rekurzivno pozivanje me spasava resetovanja.
> Pozoveš neki kalkulator desetak-petnaestak puta pa te lepo
> vrati u DOS.
Taj ti kalkulator ništa ne valja ;))))
Isključi njegov set key na početku i uključi ga ponovo na kraju.
Inače to kod mene nebi radilo da nemam nInkey() u svakoj petlji
I nemoj da zaboravljaš Skip, meni se to nikad ne dešava, ja obično
zaboravim .AND. ! Eof() O:))
clipper.1080dcolak,
-> #1056, mdrazic│> Pa, imaš "amir" $ "Damir == .T.? Ili Soundex ()?
│
│ A da li treba i da je "Mira" .like. "Amir" ili ne ?
Ne, naravno. ;)
Sledge DAMMIR!
clipper.1081brus,
-> #1079, d.petrovic> Inace to kod mene nebi radilo da nemam nInkey() u svakoj petlji
Postoji lepa funkcija u CA-Tools biblioteci InkeyTrap(nDelay) koja
poziva uvek rezidentnu rutinu a isto radi sto i inkey().
clipper.1082brus,
Treba mi resenje kako da ulinkujem DBFNTX+DBFCDX(moze i SIXCDX)+DBFNSX
drajvere u isti exe. Koristeci uputstvo iz ng-a, sa bilo koja dva nema
problema.
Kada sam pokusao sa sva tri drajvera sa rtlink-om, nije prolazilo zbog
toga sto je javljao duplicate definition sx_... za bilo koji slucaj.
Nacas sam se obradovao sa blinker-om : Izveo je exe bez greske, rddlist()
je pokazao sve drajvere u listi, rddsetdefault("DBF???") je radio, ali...
Prilikom promene tekuceg drajvera sa otvaranjem nije bilo problema
dok se nije upotrebila komanda INDEX ON ...
Desila se blago receno simulacija benignog virusa. Ili bi se racunar iz cista
mira resetovao, ili bi doslo do totalne blokade ili pojave Internal error-a
raznih vrsta (kako kad) itd.
Evo kako izgleda sablon rada :
MYPROG.PRG :
REQUEST DBFCDX
REQUEST DBFNTX
...
#include <dbfnsx.ch>
...
RDDSETDEFAULT("DBFCDX")
USE TEST
INDEX ON SIFRA TAG SIFRA && ----> BOOM
MAIN.LNK
FILE MYPROG
FILE NSX_CDX // Ovo zbog CDX-a (ng)
čDBFNSX.LNK
BEGINAREA
SECTION INTO ...
FILE ...
ENDAREA
...
LIBRARY DBFCDX.LIB
LIBRARY DBFNTX.LIB
Izvinjavam se zbog opsirnosti.
clipper.1083brus,
-> #1019, mdrazic> stavi i indeks (tag) po deleted() kljucu ili jos bolje po
> glavnom kljucu ali 'for deleted()'.
Mora da se pazi u slucaju da se brisu redom slogovi u petlji.
Npr:
WHILE TEST->POLJE=="VREDNOST" .AND. TEST->(!EOF())
TEST->(DBDELETE())
TEST->(DBSKIP(1)) // Problematicna linija //
END
Naime, cim se obrise odgovarajuci slog, menja se i recno() na sledeci.
Ako se ovakav nacin indeksiranja uvodi u neki stariji program, obavezno
se mora izbrisati DBSKIP(1) da se ne bi obrisao svaki drugi slog.
Verovatno se u navedenom slucaju uklanja i kljuc iz indeksne datoteke.
clipper.1084cnenad,
-> #1076, d.petrovicŁŁŁ da bi mogao prvo RecCount()...
Koliko videh, za ovo preporučuju da se ne koristi.
BTW, ranije je bilo nekih problema sa LastRec() ali sada (5.2d) koliko vidim
radi kako treba, dakle uvek vraća tačan broj slogova.
clipper.1085dvesic,
-> #1066, nbatocanin>> Koliko se ja secam, nije bilo bas tako.
Koliko sam ja probao, bas je tako :)
>> Meni je _bez_ DBFNTX drajvera SIX 1.1 trazio oko 100K vise sa RTLinkom.
Radi se o Six 2.01.02; Aplikacija u pitanju je dosta velika
(magacin/fakture/profakture tj. robno), i situacija je :
332 Kb Blinker 3.01 + CL520MIN ili 367 Kb Rtlink.
>> A i logicno je: RTLink ne ..
Ih, logicno ! :)
clipper.1086vision,
HI. Svi CLIPPER-asi, ajde pogledajte ovaj MOJ meni sistem, mislim da
je bolji od BUMENU-a (bez vredjanja). Evo stvarcice kojih ima u njemu
pa da Vam olaksam download : Potpuna podska mouse-a, definisanje boja,
automatsko postavljanje pulldown-a, ...
Verujem da Vam nisam otracio koji minut download-a.
vmenu.zipclipper.1087dvesic,
-> #1083, brus>> Naime, cim se obrise odgovarajuci slog, menja se i recno() na
>> sledeci. Ako se ovakav nacin indeksiranja uvodi u neki stariji
>> program, obavezno
Nije tacno. Eksplicitno se kaze da se sve promene vezane za
brisanje sloga desavaju PO pomeranju pokazivaca, sto znaci
da DELETE ne menja RecNo().
clipper.1088mdrazic,
-> #1063, pyramid> ...deo programa (clipperovog) se prebaci na server... :<
>
> Zvuci jednostavno, ali:
>
> Zna li neko kako se na serveru NOVEL NETWARE-a moze izvrsiti
> CLIPPER program?
>
> Mnogo mi treba.
Koliko sam ja razumeo, termin server se samo odnosi na drugu (neku
centralnu) mrežu gde se na jednoj stanici sa modemom vrti Clipper
program i normalno radi ili sam ili sa nekim file-serverom na toj
mreži. Drugim rečima klijent je mašina sa ove strane telefonske žice
a server mašina sa one strane žice (sporog kanala). Da li je to
stvarno file server nije bitno za efekat ubrzanja posla.
Na serveru se mogu vrteti NLM moduli, i za njihov razvoj sam čuo
za neki Watcom C razvojni alat koji ih može praviti. Muka je što
moraš imati jednu mrežu za igru koja će stalno padati i zaglavljivati
se u procesu proba-greška pri pravljenju NLM.
Milan
clipper.1089neman,
-> #1067, mdrazic>> stanicama koje koriste tu datoteku ( a koriste je sve :).
>> Interesantno je da se usporava i rad stanica koje ne
>> koriste u datom trenutku tu datoteku.
>
> Ovo poslednje znaci da server ne moze da opsluzi dovoljno
> brzo zahteve. Za navedeno vreme (do 3 sekunde) su se
> upisivali podaci u par velikih tabela i jos 5-10 pratecih,
> naravno sve sa .NTX indeksima u jednoj
Napomena je bila vezana za *BRISANJE* sloga koji ima indeks sa 5 tagova
i svi imaju uslov FOR !DELETED(), inace sve radi prilicno brzo :)
clipper.1090bulaja,
-> #1078, d.petrovic││/es1 switch kod kompajliranja (moj omiljeni:),
│└───
│ ==== jel ovo nešto slato ? :)
└────
Gde slato :) ? ES (Exit Severity level) je prekidač koji je Clipper.exe
dobio u verziji 5.2 i označava koji errorlevel (koji dalje obrađuje make
file) će se vratiti u slučaju da kompajler prijavi neke warninge, greške
i slično. /ES1 (nešto poput DefConOne :) znači da vraća grešku odnosno
prekida make čim nadje na bilo koji warning, što je jako korisno ukoliko
ste prekinuli sa S87 načinom pisanja programa i koristite /w prekidač
(enable warnings) :).
clipper.1091d.petrovic,
-> #1084, cnenad> RecCount()
> Koliko videh, za ovo preporučuju da se ne koristi.
Ja ne videh, jel to i za 5.01 ?
clipper.1092d.petrovic,
-> #1081, brus> Postoji lepa funkcija u CA-Tools biblioteci InkeyTrap(nDelay)
> koja poziva uvek rezidentnu rutinu a isto radi sto i inkey().
Ja koristim (doduše izmenjenu) nenadovu funkciju nInkey() kroz koju ide i
nSetKey() koja je umesto Set Key To.
Tačnije Set Key To kod mene ne postoji.
clipper.1093brus,
-> #1087, dvesic> Nije tacno. Eksplicitno se kaze da se sve promene vezane za
U pravu si. žak je i kljuc dalje uključen u indeksnu datoteku.
Medjutim, naredba DBSKIP(1) se ne ponaša kao u slucaju sa SET DELETED ON.
U slučaju brisanja sloga i prelaska na naredni slog, ne prelazi se na naredni
slog vec se odlazi na EOF(). čalim zbog nepreciznosti. :(
Evo testa :
TEST.PRG:
#DEFINE TEST1 // SLUCAJ FILTRIRANOG INDEKSA !DELETED()
DBARR:=šš'POLJE','N',1,0ćć
DBCREATE('TEST.DBF',DBARR)
USE TEST
FOR I:=1 TO 10
DBAPPEND()
_FIELD->POLJE:=IF(I>5,2,1) // Prvih pet, polje:=1,ostalo polje:=2
NEXT
#IFDEF TEST1
INDEX ON POLJE TO TEST_1 FOR .NOT. DELETED()
#ELSE
INDEX ON POLJE TO TEST_2
SET DELETED ON
#ENDIF
// ======================
DBGOTO(1) // : TEST1 : TEST2 :
DBDELETE() // :==========:=========:
? POLJE,RECNO() // : 1,1 : 1,1 :
DBSKIP(1) // : : :
? POLJE,RECNO(),EOF() // : 0,11,.T. : 1,2,.F. :
// ======================
clipper.1094mdrazic,
-> #1079, d.petrovic> Taj ti kalkulator ništa ne valja ;))))
> Isključi njegov set key na početku i uključi ga ponovo na kraju.
Jok more. Ako već hoćeš tako nešto da radiš (a ja neću za kalkulator
namerno, volim dva jedan pored drugog:) radiš ili
1) sprešiš rekurziju modula (informacije iz program steka) ili
2) maskiraš sve hot-key kombinacije osim potrebnih za taj posao na
ulazu u modul i vratiš na izlazu. To radi jedna tvoja funkcija
opšte namene i maskira sve nepotrebne kombinacije (a ne znaš ni
koje su jer ti se modul poziva sa raznih mesta).
Milan
clipper.1095mdrazic,
-> #1080, dcolak>│ A da li treba i da je "Mira" .like. "Amir" ili ne ?
>
> Ne, naravno. ;)
Pitanje je bilo ozbiljno, ali je izgleda shvaćeno kao zezanje.
Kako da 'uhvatiš' recimo permutacije slova što je česta greška
pri unosu? Gornji primer je malo karikiran ali sam mislio na te
probleme.
Milan
clipper.1096dcolak,
-> #1086, vision│ HI. Svi CLIPPER-asi, ajde pogledajte ovaj MOJ meni sistem, mislim da
│ je bolji od BUMENU-a (bez vredjanja). Evo stvarcice kojih ima u njemu
│ pa da Vam olaksam download : Potpuna podska mouse-a, definisanje boja,
│ automatsko postavljanje pulldown-a, ...
Ah, da, daj bRe verziju za 5.0x :) Hitno! ;))
Sledge DAMMIR!
clipper.1097bulaja,
-> #1084, cnenad│BTW, ranije je bilo nekih problema sa LastRec() ali sada (5.2d) koliko
│vidim radi kako treba, dakle uvek vraća tačan broj slogova.
└───
Kada je to bilo problema? Podaci o broju slogova se upisuju u samo
zaglavlje .DBF datoteke, tako da nema šanse da se promaši :).
clipper.1098bulaja,
-> #1086, vision│HI. Svi CLIPPER-asi, ajde pogledajte ovaj MOJ meni sistem, mislim da
│je bolji od BUMENU-a (bez vredjanja).
└───
Zašto bi se vređali? :) Pogledaćemo, pa ako vredi ide u dir :).
clipper.1099bulaja,
-> #1094, mdrazic│1) sprešiš rekurziju modula (informacije iz program steka)
└───
Ili još lakše preko jednog STATIC-a, npr. ovako:
#define MAX_REKURZIJA 4
**** -------------------------------- ****
FUNC Kalendar (<parametri>)
...
STATIC nDubina := 0
IF nDubina >= MAX_REKURZIJA
// neće moći :)
RETURN (.F.)
ELSE
nDubina++
ENDIF
...
nDubina--
RETURN (.T.)
Naravno ako se želi sprečiti rekurzija, dovoljno je definisati da
MAX_REKURZIJA bude 1.
clipper.1100cnenad,
-> #1091, d.petrovicŁŁŁ Ja ne videh, jel to i za 5.01 ?
Ne znam za 5.01. U NG-u od 5.2d odlikovan je zvezdicom ;)
clipper.1101cnenad,
-> #1097, bulajaŁŁŁ│ BTW, ranije je bilo nekih problema sa LastRec() ali sada (5.2d) koliko
ŁŁŁ Kada je to bilo problema? Podaci o broju slogova se upisuju u samo
ŁŁŁ zaglavlje .DBF datoteke, tako da nema šanse da se promaši :).
R098 / feb. '94 / Str.66./ BLP za 1993 Godinu
'Da li ste već čuli... da Clipper funkcija LASTREC() vraća 1 ako u bazi nema
slogova ili ima samo jedan slog...'
Sada, korektno vraća 0 ako nema slogova.
clipper.1102.ken.,
-> #1082, brus> Treba mi resenje kako da ulinkujem DBFNTX+DBFCDX(moze i
> SIXCDX)+DBFNSX drajvere u isti exe. Koristeci uputstvo iz ng-a,
> sa bilo koja dva nema problema.
Probaj sa novim SIX-om (2.0x.xx ili ko zna dokle dodje :-) )
U Ng-u za Six (1.5) citao sam da ne treba mesati SIXCDX i SIXNSX
za verziju 1.5
Posto su u Six 2.0x.xx objedinili tri RDD u jedan lib njihovo
zajednicko koriscenje ne bi trebalo da predstavlja problem.
U novom Six-u imas tri RDD i to SIXCDX,SIXNSX i SIXNTX - gotovo
sve sto je potrebno.
P.S. - Pokusaj da izbegavas DBFCDX jer se niko koliko znam nije usrecio
sa ovim RDD-om
clipper.1103dvesic,
-> #1093, brus>> U slucaju brisanja sloga i prelaska na naredni slog, ne
>> prelazi se na naredni slog vec se odlazi na EOF(). Zalim zbog
>> nepreciznosti. :( Evo testa :
Nisam stigao da pogledam, kasnije cu, ali evo, ovako on-line :
Izuzetno je dobra (cak preporucljiva praksa) da se pre izmene polja
koje ulazi u tekuci indeks/for uslov indeksa/brisanje sloga stavi
jedno SET ORDER TO 0 tj. bez tekuceg indeksa.
clipper.1107rccomp,
Poklon za nastupajuce novembarske praznike
look_ex.zipclipper.1108vision,
-> #1098, bulaja Jakako, ajde bre baci to u dir, i ako bacis u dir, dobices na poklon
source :).
clipper.1109vision,
-> #1096, dcolak>> Ah, da, daj bRe verziju za 5.0x :) Hitno! ;))
Uz moje zaprepascenje, izkompajliralo se samo :) bez i jedne greske. Evo ti
obj kompajliran sa verzijom 5.2, sorry nemam druge, verujem da ce raditi sa
drugim verzijama, a ako ipak ne radi, moram se negde namuciti pa da nadjem
neki malo stariji kompajler. Drugi fajlovi ostaju isti.
vmenu52.zipclipper.1110mdrazic,
-> #1089, neman> Napomena je bila vezana za *BRISANJE* sloga koji ima indeks sa 5 tagova
> i svi imaju uslov FOR !DELETED(), inace sve radi prilicno brzo :)
Kod brisanja sa ovakvim tagovima se menjaju svi indeksni fajlovi (tagovi)
i tabela takođe (flag na zapis). U odnosu na novi zapis nema samo
produžetka dužine tabele (jedan od ukupno 2 fajla od kojih se drugi
ažurira na 5 tagova - slično kao 5 indeksa). Po obimu posla je skoro
isto. Nisam imao ovakve tagove pa za brisanje ne znam tačnu brzinu.
Milan
clipper.1111mdrazic,
-> #1099, bulaja>│ 1) sprešiš rekurziju modula (informacije iz program steka)
> └───
> Ili još lakše preko jednog STATIC-a, npr. ovako:
>
>
> # define MAX_REKURZIJA 4
Ali tada treba mnogo pažnje da se smanji brojač pre svakog return-a
iz modula. Zar nije lakče (a i bez promenljivih) jedno
NO RECURSION ŠOVER nMaxLevelĆ ŠRETURN xExprĆ
na početku modula koji pretprocesor prevede u poziv odgovarajuće
funkcije, a kasnije nemaš nikakvih promena u modulu.
Milan
clipper.1112mdrazic,
-> #1103, dvesic> Izuzetno je dobra (cak preporucljiva praksa) da se pre izmene polja
> koje ulazi u tekuci indeks/for uslov indeksa/brisanje sloga stavi
> jedno SET ORDER TO 0 tj. bez tekuceg indeksa.
A posle da se uključi, ili šta? Šta se time dobija ako ga isključiš,
pa ti odmah zatim zatreba, pa ga uključiš?
Milan
clipper.1113dvesic,
-> #1112, mdrazic>> A posle da se ukljuci, ili sta? Sta se time dobija ako ga
>> iskljucis, pa ti odmah zatim zatreba, pa ga ukljucis?
Dobijam sigurnost da će biti izmenjeni upravo oni slogovi koje želim.
Da li si ikada probao da menjaš polje koje ulazi u tekući indeks ?
Tačnije, da li si menjao VIŠE slogova po polju nad kojim je aktivni
indeks ? Kakvi su rezultati ? :))
clipper.1114szeman,
-> #1086, vision>> Verujem da Vam nisam otracio koji minut download-a.
Vrlo interesantno, samo što se u nepredvidivim vremenskim intervalima
"zaglavi" na kratko (sa/bez miša, svejedno). Ajde probaj ovo da rešiš. Inače
veoma interesantno rešenje, pre svega zbog podrške rada sa pacovom.
Srećno...
clipper.1115bulaja,
-> #1111, mdrazic│Ali tada treba mnogo pažnje da se smanji brojač pre svakog return-a
│iz modula.
└───
I ovako moraš pre return-a da vratiš stanje sistemskih parametara
(funkcije gde ti uopšte trebaju rekurzivni pozivi su obično opše
zezalice tipa kalkulatora, kalendara i slično, a pošto nikad neznaš
odakle ćeš ih pozvati moraš jako da paziš da sve svratiš na staro
stanje), tako da je jedno umanjivanje brojača najmanji problem.
Obično se i vraćanje starog stanja strpa i neki translate, tako da se
problem svodi samo na dodavanje dekrementacije brojača u taj translate.
clipper.1116mdrazic,
-> #1115, bulaja> Obično se i vraćanje starog stanja strpa i neki translate, tako da se
> problem svodi samo na dodavanje dekrementacije brojača u taj translate.
Ali ti onda taj translate nije univerzalan i za module bez kontrole
rekurzije.
Milan
clipper.1117mdrazic,
-> #1113, dvesic> Dobijam sigurnost da će biti izmenjeni upravo oni slogovi koje želim.
> Da li si ikada probao da menjaš polje koje ulazi u tekući indeks ?
> Tačnije, da li si menjao VIŠE slogova po polju nad kojim je aktivni
> indeks ? Kakvi su rezultati ? :))
Ako misliš na nešto tipa:
dbseek('kljuc123')
replace TABELA->Sifra with 'kljuc567' ;
while TABELA->Sifra=='kljuc123'
znam za jadac, ali ne vidim šta tu pomaže set order to 0.
Kako pristupaš grupi zapisa: jedan po jedan skipujući ili
si prešao na SQL? Šta zajedničko imaju slogovi koje menjaš?
Kod više slogova za promenu možeš:
1) da prvo u listu (niz) zapamtiš recno() istih pa posle da menjaš
2) primeniš zamenu tipa
do while dbseek('kljuc123')
replace TABELA->Sifra with 'kljuc567'
enddo
Kako bi ova zamena šifre išla sa set order to 0 ?
Milan
clipper.1118vision,
-> #1114, szeman>> Vrlo interesantno, samo sto se u nepredvidivim vremenskim intervalima
>> "zaglavi" na kratko (sa/bez misa, svejedno).
Kako mislis 'zaglavi', ajde poobjasni to, ovamo kod mene se to ne desave??
clipper.1119dvesic,
-> #1117, mdrazic Naravno, preko indeksa nad nekim od polja.
>> si prešao na SQL? Šta zajedničko imaju slogovi koje menjaš?
Indeksni ključ.
>> Kod više slogova za promenu možeš:
>> 1) da prvo u listu (niz) zapamtiš recno() istih pa posle da
>> menjaš
Ovo je generalno pravilo kod slučajeva kada menjam polje koje ulazi
u aktivni indeks i kada brišem slog a postoji indeks nad Deleted()
funkcijom.
2) primeniš zamenu tipa
>> do while dbseek('kljuc123')
>> replace TABELA->Sifra with 'kljuc567'
>> enddo
>>
>> Kako bi ova zamena šifre išla sa set order to 0 ?
Kao što rekoh, u prvom prolazu pokupim Recno() u niz, u drugom
skačem direktno na slog; pre toga dođe jedno Set Order To 0.
clipper.1120szeman,
-> #1118, vision>> Kako mislis 'zaglavi', ajde poobjasni to, ovamo kod mene se to ne
>> desave??
Ma nema tu šta da se objašnjava, instaliraj miša, aktiviraj menu Files i
pritiskaj strelicu desno nekoliko puta i VOILA :) program se malo "zamisli" ;)
šta da uradi sledeće (cca 2-3 sec, ako je bitno 286/16MHz) i onda nastavi sa
radom, 3-4 puta pritisni strelicu desno, opet se "zamisli".... ;) Bez aktivnog
mouse drajvera, ovo je malo teže pronaći ali se ipak dešava.
P.S. Kompajlirano je na s'87.
clipper.1121dpredovic,
Bug u SIX 2.01.02.
Možda nekome pomogne, a mene je bogami izludelo...
Imamo u bazi polje X tipa N3.0, i index po tom polju (ne str(X),
čisto X, zbog Mach6-a).
Postavimo filter na npr. X>=100.AND.X<=120, i cvrc! rezultat je
0 slogova, bez obzira što bi trebalo da ih bude oko 400.
Filter postavimo na X>99.AND.X<121, i sve je kako treba???
Pouka? Ne veruj Sixu ni kada patcheve donosi...
BTW. Jel nema neki 2.01.03. ;)
clipper.1122dpredovic,
-> #1102, .ken.> Probaj sa novim SIX-om (2.0x.xx ili ko zna dokle dodje :-) )
> U Ng-u za Six (1.5) citao sam da ne treba mesati SIXCDX i
> SIXNSX za verziju 1.5
U verziji 1.5, uz NSX drajver dobijala se i blblioteka sixlink.lib, ili
tako nekako, koja sadrži zajedničke delove cdx i nsx biblioteke.
Funkcioniše, ali je ipak bolje da pređeš na 2.0, pošto pravi mnogo
manji exe.
clipper.1123dr.grba,
-> #1072, dejanr>> Verovatno je mislio na softver koji kupiš, popuniš registracionu karticu i
>> pošalješ proizvođaču. Posle ti (osim ako si u Jugoslaviji) pružaju razne
>> vrste podrške, manje ili više vredne.
Sad si me podsetio na tri registracione kartice koje se ne usuđujem da
pošaljem na adresu koju mi proizvođač sugeriše, a predmetna je u Nemačkoj. ):
clipper.1124mdrazic,
-> #1119, dvesic>>> Kako bi ova zamena šifre išla sa set order to 0 ?
>
> Kao što rekoh, u prvom prolazu pokupim Recno() u niz, u drugom
> skačem direktno na slog; pre toga dođe jedno Set Order To 0.
Znači, samo je brzina u pitanju, a ne i sigurnost što ti je bio
glavni motiv za set order to 0 u prvoj poruci.
Milan
clipper.1125dvesic,
-> #1121, dpredovic>> Postavimo filter na npr. X>=100.AND.X<=120, i cvrc! rezultat
>> je 0 slogova, bez obzira što bi trebalo da ih bude oko 400.
Set ScopeTop 100 :)))
Set ScopeBottom 120 :)))
Go Top :)))
clipper.1126nbatocanin,
-> #1121, dpredovic> Bug u SIX 2.01.02.
Uh :(( Idemo iz početka...
clipper.1127bulaja,
-> #1116, mdrazic│Ali ti onda taj translate nije univerzalan i za module bez kontrole
│rekurzije.
└───
E DJ :)... Ma baš me briga za translate, ako mi treba kontrola dubine
rekurzije neće mi predstavljati problem da dodam tu dekrementaciju
brojača pre svakog RETURN i gotovo :). Jednostavno mislim da je STATIC
bolje (čistije) rešenje od blejanja po call stack-u (o tome smo pričali,
remember?:) - end of story :).
clipper.1128stosic,
Jos jedna interesantna stvar vezana za Clipper 5.3 je podrska za matematicki
koprocesor. Kliper je u ovoj verziji kompajliran sa Microsoft C 8.0
kompajlerom i emulatorskom (umesto alternativnom) bibliotekom za rad sa
realnim brojevima. Ova biblioteka radi nesto sporije (i ima duzi kod) od
alternativne, u slucaju da nemate koprocesor.
Evo rezultata jednog obicnog testa (486/33):
----------------------------
proc test()
local start := seconds()
koren()
? seconds() - start
proc koren()
local i
local d := 1
for i := 1 to 100000
sqrt(d)
d += 1
next
----------------------------
1. Clipper 5.3 beta : 9.55
2. Clipper 5.2d + Exospace: 13.73
3. Clipper 5.2d + Blinker : 17.08
I nesto za diskusiju: Clipper 5.2d : 12.96 (brzi u real modu).
PS.
Povezivanje sa MSC 8.0 mi nije uspelo:(
clipper.1130vision,
-> #1120, szeman Sorry, stvarni nije mi jasno, program je radjen na dx2 66, a i u 286/16 radi
super, probaj mozda driver za misa, ja koristim >>gmouse.com<<.
clipper.1131bceklic,
Da li neko ima predstavu o tome kako bi trebao da izgleda optimalni
izgled jednog sistema menija u clipper programu?
Interesuje me koji se tip menija najbolje pokazao u praksi, da li
je neophodno obezbediti upotrebu misa, hot-key-eva i ostale sitnice...
Pozdrav!
clipper.1132dcolak,
Imam programče u C-u (ono sa cMKDIR, cRMDIR, cCHDIR iz Jedrenjaka).
Imam svoje programče u Kliperu.
So, kako da ih spojim? Please korak po korak.
Inače imam MSC 6.0.
P.S.
Zar je moguće da kliper nema komandu kao što je MKDIR?!
Sledge DAMMIR!