clipper.1ppekovic,
Clipper je napravio veliki korak ka jednostavnijem pisanju programa čia je
žiža u bazama podataka, s druge strane doneo je i gomilu pitanja, nedoumica,
bug-ova, nedokumentovanih mogućnosti itd. itd. Ovo je mesto za diskusiju o
svemu tome.
Paya
clipper.2duduk,
Ima li neko, ili zna li bar gde je opisan format Clipper-ovog NTX ?
ia
clipper.3ppekovic,
-> #2, duduk>>Ima li neko, ili zna li bar gde je opisan format Clipper-ovog NTX ?
Nisam siguran, ali zar onaj C source u jednom od dir-ova, ne radi i sa
NTX-ovima??? Koliko se sećam, trebao bi da radi.
Paya
clipper.4nradeta,
Ima li neko rutinu za ispisianje broja slovima (za racune)
1903 slovima : hiljadu devesto tri dinara
hvala !
nradeta
clipper.5ndragan,
-> #4, nradetaOvim se rutina SLOVIMA.PRG izrađena u DP "Mihajlo Petrović Alas" iz
Zrenjanina, 023-60-020, proglašava za PD (direktor je sedeo pored mene dok
smo čitali SOR) - spomenite nas negde u dokumentaciji ako je ubacite u nešto
svoje.
Rutina ima i nešto istorije: pre dve godine na Sajmu u Bg dođe neki čiča na
naš štand da nam ponudi takvu rutinu, dve hiljade linija kobola, njegov
tromesečni rad. Naš čovek koji je dežurao nije ga baš najbolje razumeo, i
rekao mu da naša rutina ima skoro dve strane teksta i da smo je radili skoro
dva dana... posle nam bilo žao čoveka.
Bue_ NDragan
slovima.zipclipper.6ivantod,
-> #4, nradetaEvo, pokušaj sa ovim programom. On će na osnovu broja da ti da slovni oblik.
U stvari je pisan za dBASE pa možda neće baš iz prve da proradi na Clipperu,
ali nekih većih problema ne bi trebalo biti. Uputstva su u programu.
broj.prgclipper.7dejanr,
-> #6, ivantodHvala ndragan-u i ivantod! Pravi prilozi za Sezam. Biće i u "Bajtovima
lične prirode".
clipper.8dejanr,
-> #5, ndraganProgram se kod mene nije hteo kompajlirati na clipper 87. Ispravio sam par
sitnica i dodao pred-program za testiranje i još preveo na standard
"Računari"... I evo ga!
slovima.prgclipper.9ndragan,
-> #8, dejanr* Program se kod mene nije hteo kompajlirati na clipper 87. Ispravio sam par
kao što je poznato - mi ložimo foks. btw, moja je samo seckalica za
izdvajanje para ('xx/100'), ostalo su napisali drugari pre par godina.
Bue_ NDragan
clipper.10ppekovic,
Jedan mali bug debuger-a u clipper-u 5.01. Recimo da hoćete da debugirate
program koji se nalazi u prog dir-u. A neka se sve baze nalaze u prog/files
dir-u. E sad vi lepo uđete u prog dir i kažete CLD program i sve lepo počne,
međutim, pošto se baze nalaze u files dir-u, u programu imam komandu !cd files.
Posle te komande, na ekranu će se izgubiti source iako će i dalje sve raditi
kako treba. Naravno, štos je verovatno što je dir promenjen pa debuger nbemože
da pronađe source.
Zato, kada debugirate (isleđujete ;) ) program koji se šete po dir-ovima,
obavezno stavite punu stazu do programa, npr.:
CLD d:\prog\program
Paya
clipper.11vkrstonosic,
-> #10, ppekovic
Kad smo vec kod Debuger-a za Cliper 5.01, da li neko zna, da li
postoji neko ogranicenje oko duzine source fajla. Probam program koji
je podeljen u pet delova i svi rade osim jednog koji je dugacak oko
80K.
clipper.12vcalic,
-> #10, ppekovic Kad se već pominje Clipper i debuggiranje, da li je moguće kod
Clippera raditi "isleđivanje" ;) na source nivou uz pomoć, recimo, Turbo
Debugger-a, kao što je to moguće sa Force-om ???
WR
clipper.13ppekovic,
-> #12, vcalic>> Kad se već pominje Clipper i debuggiranje, da li je moguće kod
>>Clippera raditi "isleđivanje" ;) na source nivou uz pomoć, recimo, Turbo
>>Debugger-a, kao što je to moguće sa Force-om ???
A što, kad je Clipper debuger odličan? Nisam probao.
Paya
clipper.14lazo,
Koristim Clipper Summer 87 i nisam pojma imao da su izlazile još neke
verzije kao naprimjer 5.01 koja se tako često spominje ovdje na Seza-
mu. Interesuje me u čemu su poboljšanja. Meni su za pravljenje uglav-
nom knjigovodstvenih aplikacija dovoljne i ove naredbe, međutim jedina
zamjerka je zasad u tome što pri obradi velikih datoteka pri filteru
se dugo čeka da se ode recimo na prvi slog u filteru ili ako je dato-
teka prazna (pri filteru) on prođe kroz cijelu datoteku da bi nakraju
ustanovio da nema podataka.
Mene u stvari interesuje da li taj Clipper 5.01 brže pristupa datote-
ci tj, podacima u njoj ili su poboljšanja samo u naredbama kao što su
npr. DBEDIT,MENU i sl.
clipper.15ppekovic,
-> #14, lazo>>Mene u stvari interesuje da li taj Clipper 5.01 brže pristupa datote-
>>ci tj, podacima u njoj ili su poboljšanja samo u naredbama kao što su
>>npr. DBEDIT,MENU i sl.
Pa i ja sam se ponadao da će novi clipper doneti poboljšanja na tom planu,
pogotovu da će ispraviti veliku sporost sa filterom (kako si i sam pomenuo).
Ali, na žalost, on i dalje sporo radi, iako malo drugačije nego '87 verzija.
Naime, prilikom startovanja dbedit-a čeka se mnogo više nego na staroj verziji,
ali je onda kretanje kroz bazu brže. Naravno, sve ovo u slučaju kada je
uključen filter i kada je baza velika (recimo 10'000 slogova). Probao sam na
prvom slogu po filteru da stisnem strelicu na gore i sve je jako brzo radilo.
Taman sam se bio obradovao kad ono kada sam otišao na dno baze i pritisnuo
strelicu na dole, to je radilo, radilo, radilo i radilo užas, pravi užas.
Inače, što se tiče poboljšanja u clipper-u 5.01 kratlko da ti kažem da je
novi clipper sada mnogo bliži načinu razmišljanja u C-u, iako je skoro 100%
kompatibilan sa '87. verzijom, tj. možeš da koristiš nove mogućnosti, ali i ne
moraš. Da ne tupim više, pogledaj članak N. Batoćanina u "Računarima". Ima puno
toga novog i zanimljivog.
Paya
.s
clipper.17beki,
Zdravo svima u PC.PROG. Ja sam nov na Sezamu i nadam se da cemo se lepo
druziti.
Hteo sam da pitam dali ima neko da je eksperimentisao sa bibliotekom
DBFNTX.LIB iz Clipper-a 5 ? Imam ideju da se umesto Clipper-ovog sporog i
nepouzdanog dbf/ntx interfejsa stavi nesto bolje, kao na primer Btrieve
koji lepo prianja na Novell NetWare.
Jos nesto. Dali neko ima iskustva sa CL Tools 3.0 i CL Text 3.0 firme
Dr.Huggle&Partner? Ja sam nabavio CL Report 3.0 i veoma sam zadovoljan.
Beki
clipper.18beki,
Upomoc !!!
Kako da uradim parcijalni index u Clipper-u 5 ?
Naime, potrebno mi je nesto sto Fox vec odavno ima:
INDEX ON <cexp> FOR <lexp> TO <ntxfile>
Dosla mi je ideja o jednom mogucem resenju:
INDEX ON <cexp1> TO <ntxfile> UNIQUE
gde je:
cexp1=IIF(lexp,cexp,"NEKI KLJUC")
Na ovaj nacin cu postici to da svi slogovi koji ne treba da udju u index dobiju
vrednost kljuca "NEKI KLJUC", sto ce u Clipper5-ovom NTX fajlu rezultirati u
samo jednom slogu u indexnom fajlu. Medjutim, resenje ne odgovara kada <cexp>
ne daje UNIQUE kljuceve, sto je najcesci slucaj kod indexa za razne izvestaje.
Beki.
clipper.19ndragan,
-> #18, beki* Upomoc !!!
* Kako da uradim parcijalni index u Clipper-u 5 ?
pređi na foks c(;)E (ovo sam ja sa šeširom i bradom)
* cexp1=IIF(lexp,cexp,"NEKI KLJUC")
a šta misliš o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC"); dobio bi
istina jedan slog indeksiran sa 'neki kljutz', ali ostale bi dobio, a taj
jedan nek sadrži chr(255) pa znaš kad si gotov, a?
Bue_ NDragan
clipper.20ppekovic,
Ovo pitanje je mnogo puta pokretano, ali nikada nisam
video celovit odgovor. Radi se o velikim bazama i selekcijama
(prostim ili višestrukim, svejedno).
U čemu je problem?
Ako imam bazu od 10.000 slogova, pa čak i više, što
uopšte nije redak slučaj, i želim da izvšim selekciju svih
onih čije ime počinje na slova od A do C, i koji su rođeni od
1960-1970 (samo primer, može bilo šta), na koji način to
uradii a da bude brzo.
Naime, upotreba komande SET FILTER definitivno otpada.
Zašto? pa, na bazi od 10.000 slogova sa bilo kakvim filterom,
običan SKIP na zadnjem slogu po filteru radi xxx sekundi, tj.
previše sporo.
Postoji rešenje korišćenja index-a po polju ke se
traži, ali onda otpada upotreba dbedit funkcije, tj. morao bi
da se pravi sopstveni dbedit.
Podela na više baza je problematična, tj. kako baze
podeliti.
Dakle, kakva su iskustva? Jel ima neko ideja???
Paya
clipper.21djorzor,
-> #20, ppekovic> Podela na više baza je problematična, tj. kako baze
> podeliti.
>
> Dakle, kakva su iskustva? Jel ima neko ideja???
Evo nešto malo iskustva na sličnu temu. Kolega zelkop i ja smo komercijalno
radili na sličnim bazama (živeli smo jedno godinu dana od toga). Baze su
imale oko 15000 slogova i oko 2 MB. Iz takvih baza smo radili izveštaje.
Baza je trebala da radi u jednoj prijateljskoj zemlji, ali za potrebe
naše firme. Jedina mašina koju su naši uspeli da uvezu je bio jedan PS/2-50
(u prevodu AT 286/12 bez koprocesora), koji je imao HDD od 20MB. Na takvoj
mašini smo razvili dosta lepu aplikaciju, koja se i danas koristi.
Korišćen je dBASE IV i na kraju, posle jedno 6 meseci razvoja, najsporiji
deo sistema je bilo štampanje, koje je u nekim slučajevima trajalo i
više od 2 sata za izveštaj od više stotina strana. Sama priprema izveštaja
je trajala najviše oko 20 minuta.
U varijantama kada bi nam trebalo da koristimo EDIT i BROWSE naredbe
to bi rešavali tako što bi bazu kopirali sa DOS copy naredbom, ulazili
u tako kopiranu bazu, brisali naredbom DELETE nepotrebne slogove i
na kraju pakovali. Sve to je radilo vrlo brzo. Posle toga u takvu bazu
uđemo sa EDIT i sve radi.
Fazon sa kopiranjem smo koristili i za pripremanje izveštaja i bili
smo vrlo zadovoljni.
Kao mala napomena može da ide i da smo probali da koristimo SQL iz
dBase-a i bili smo užasnuti sporošću.
Ako Te još nešto interesuje, biće nam zadovoljstvo da Ti to prikažemo.
Pozdrav, Zoran
clipper.22vkrstonosic,
-> #21, djorzor> U varijantama kada bi nam trebalo da koristimo EDIT i BROWSE naredbe
> to bi resavali tako sto bi bazu kopirali sa DOS copy naredbom,
> ulazili u tako kopiranu bazu, brisali naredbom DELETE nepotrebne
> slogove i na kraju pakovali. Sve to je radilo vrlo brzo. Posle toga
> u takvu bazu udemo sa EDIT i sve radi.
Mozda bi se ovo moglo izvesti i bez copiranja baze, jer to ipak
zahteva mesta na disku za bar jos jednu bazu. Obrisati sa delete one
koji nisu potrebni, naravno bez pack, pa onda vratiti status na
undelete kasnije. Problem je jedino koliko dugo radi naredba delete
for <uslov> u jednoj bazi od oko 5M.
Zanima me sta bi se moglo postici razbijanjem baze na vise baza,
sa uvodjenjem nekih internih pokazivaca i slicno ???
Ja imam problem sa bazom od 4M sa oko 20.000 slogova, koja je
naravno nestrucno napravljena, odnosno, formirao neko dbu-om bazu sa
10 polja i posle punio neko ko zna jos manje.
Da li neko zna kako da resi problem skip-a na poslednjem slogu po
filteru ?
clipper.23vkrstonosic,
Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je
odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama.
Postoji i funkcija koja iscitava koji se drajver trenutno koristi, ili
postavlja neki drugi. Kakve su sanse da se tu uradi nesto pametno,
odnosno, preradi postojeci, napravi ili nabavi neki drugi drajver ???
clipper.24beki,
-> #20, ppekovic> Postoji resenje koriscenja index-a po polju ke se
> trazi, ali onda otpada upotreba dbedit funkcije, tj. morao bi
> da se pravi sopstveni dbedit.
Ne moras praviti sopstveni dbedit. Predji na Clipper 5, tamo imas ***ODLICNI***
browse sistem. Ukoliko postoji interes, poslacu ovde jedan program koji koris-
ti TBROWSE class Clippera 5 i koji je prilicno univerzalan.
Naime, Clipper 5-ov TBROWSE omogucava:
-sve ono sto omogucava dbedit
-umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM
-i jos mnogo toga...
Pozdrav, Beki
clipper.25beki,
-> #22, vkrstonosic> zahteva mesta na disku za bar jos jednu bazu. Obrisati sa delete one
> koji nisu potrebni, naravno bez pack, pa onda vratiti status na
> undelete kasnije. Problem je jedino koliko dugo radi naredba delete
Ovde imas dva problema u jednom.
Sta ako u bazi vec postoje zapisi DELETED ?
Zatim, koliko je brz skip u bazi u kojoj je recimo 90% slogova izbrisan ?
Moje je misljenje da bi se dobio isti rezultat (ako ne isti, onda istog reda
velicine).
> Da li neko zna kako da resi problem skip-a na poslednjem slogu po
> filteru ?
Koristi Clipper 5-ov tbrowse sistem.
Pozdrav, Beki
clipper.26beki,
-> #23, vkrstonosic> Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je
> odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama.
> Postoji i funkcija koja iscitava koji se drajver trenutno koristi, ili
> postavlja neki drugi. Kakve su sanse da se tu uradi nesto pametno,
> odnosno, preradi postojeci, napravi ili nabavi neki drugi drajver ???
Isto pitanje !!!!! Pitao sam po mnogim BBS-ovima i nigde nista...
Beki
clipper.27djorzor,
-> #22, vkrstonosic> Mozda bi se ovo moglo izvesti i bez copiranja baze, jer to
> ipak zahteva mesta na disku za bar jos jednu bazu.
> Obrisati sa delete one koji nisu potrebni, naravno bez
> pack, pa onda vratiti status na undelete kasnije. Problem
> je jedino koliko dugo radi naredba delete for <uslov> u
> jednoj bazi od oko 5M.
Ako Ti treba EDIT, brisanje bez pakovanja ne ubrzava stvar. Velika
je verovatnoća da će biti isto tako sporo kao kod SET FILTER. Uz to,
koliko se sećam, SET DELETED OFF/ON ne isključuje obrisane slogove
kod EDIT komande.
Brzina rada za DELETE for <uslov> zavisi od <uslov>, ali neko moje
iskustvo je da je to jedna od bržih varijanti.
Što se tiče mesta na disku, rad sa bazom od 5M u principu je
preporučljiv samo sa dosta mesta na disku.
>
> Zanima me sta bi se moglo postici razbijanjem baze na vise
> baza, sa uvodjenjem nekih internih pokazivaca i slicno ???
Nisam siguran, ali to može da koristi pre svega ako već imaš ideju
kakvi će da budu zahtevi za izveštaje. Na primer, ako Ti vrlo
često trebaju korisnici čije ime počinje nekim slovom, onda ima
svrhe razbiti bazu u 30 podbaza u kojima će se nalaziti podaci
za korisnike kojima ime počinje sa A, B ... Ako takvih zahteva
nema mnogo, nego su uslovi dosta složeniji, mislim da to neće
mnogo pomoći.
Kao međuvarijanta, ako se update base ne radi mnogo često, možda bi
bilo pametno da izvršiš kopiranje baze tako da su slogovi složeni po
azbučnom redu korisnika. Ne znam tačno kako se komanda zove, mislim
da se može naći u HELP-u.
>
> Ja imam problem sa bazom od 4M sa oko 20.000 slogova, koja
> je naravno nestrucno napravljena, odnosno, formirao neko
> dbu-om bazu sa 10 polja i posle punio neko ko zna jos
> manje.
Ako je problem u loše zamišljenoj bazi, mislim da bi trebalo formirati
neku bolju strukturu i onda napisati jednostavan program koji bi podatke
prepisao iz stare u novu bazu.
>
> Da li neko zna kako da resi problem skip-a na poslednjem
> slogu po filteru ?
Nije mi baš jasno šta me pitaš.
clipper.28ppekovic,
-> #24, beki>>Ne moras praviti sopstveni dbedit. Predji na Clipper 5, tamo imas
***ODLICNI***
>>browse sistem. Ukoliko postoji interes, poslacu ovde jedan program koji
koris-
>>ti TBROWSE class Clippera 5 i koji je prilicno univerzalan.
>>
>>Naime, Clipper 5-ov TBROWSE omogucava:
>>
>> -sve ono sto omogucava dbedit
>> -umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM
>> -i jos mnogo toga...
Ja i koristim clipper 5.01 ;))) istina tek od skoro
(verovatno jer se skoro i pojavio ;) ).
Kažeš da nema problema sa tbrowse-om i slučajem kada
se na zadnjem slogu po filteru pritisne strelica na dole. Ja
sam probao tbrowse na bazi od 10.000 slogova i jednim
jednostavnim uslovom postavljenim kao filter i na jednom 21 ms
disku sa 2 MB keša je pritisak na strelicu dole na zadnjem
slogu po filteru radio dobrih 20-ak sekundi.
Ako postoji rešenje za ovo upotrebom objekata za
tbrwose ili na neki drugi način, ako ti nije teško, voleo bi
da napišeš par redova o tome.
Za mene bi najbolje rešenje bilo kada bi nekako moglo
da tbrowse pre ispisa svakog sloga, skače na moju funkciju
koja postavlja file pokazivač na slog koji ja želim da se
sledeći prikaže, pa se onda kontrola vrati tbrowse-u i on
ispiše slog koji sam ja u mojoj funkciji izabrao.
Zašto? pa zato jer bi onda u mojoj funkciji mogao da
koristim index po polju koje pretražujem pa sa find i
uzastopnim skip-ovim dok se ne prekrđi uslov da veoma brzo
filtriram bazu po tom uslovu.
Paya
clipper.29ppekovic,
-> #27, djorzor>>> Da li neko zna kako da resi problem skip-a na poslednjem
>>> slogu po filteru ?
>>
>> Nije mi baš jasno šta me pitaš.
Uzmi bazu od 10.000 slogova. Postavi filter, bilo kakav. Uđi u
dbedit ili tbrowse. Idi na dno baze sa ctrl-pgdn (ovo će potrajati). E
sad stisni strelicu na dole i oduševi se kolko je "brz" ;(((
Paya
clipper.30vkrstonosic,
-> #25, beki> Sta ako u bazi vec postoje zapisi DELETED ?
>
> Zatim, koliko je brz skip u bazi u kojoj je recimo 90% slogova
> izbrisan ?
Slazem se, ali ja samo razradjujem tudje ideje ;)
Probao sam nocas, na bazi od 400K i oko 1600 slogova, delete for
<jednostavan uslov>, radi oko 30 sec, prema tome, po meni ovo otpada.
clipper.31vkrstonosic,
-> #27, djorzor> Ako je problem u lose zamisljenoj bazi, mislim da bi trebalo
> formirati neku bolju strukturu i onda napisati jednostavan program
> koji bi podatke prepisao iz stare u novu bazu.
To znam i to nije problem, samo me zanima da li neko ima ideje
kako rasturiti bazu, da bi rad posle toga bio najbrzi. Da li podeliti
po slogovima, ili odvojiti polja po raznim bazama. Cilj mi je samo da
dobijem sto brzu selekciju.
clipper.32vkrstonosic,
-> #24, beki> Naime, Clipper 5-ov TBROWSE omogucava:
>
> -sve ono sto omogucava dbedit
> -umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM
> -i jos mnogo toga...
Mislim da problem ne moze biti resen pomocu bilo kakvog dbedita,
jer problem lezi u samom clipperovom radu sa filterom. On jednostavno
ucini nevidljivim slogove koji ne ispunjavaju uslov, ali i dalje kad
nesto radi, radi i sa njima. Jedino sto je brzo je naredba seek, pa bi
trebalo videti sta se moze uraditi sa njom. Mada i to ne resava
problem jer seek trazi samo na pocetku indeksiranog sloga, pa ne
dolaze u obzir razni "tezi" uslovi.
Clipperov TBROWSE sam probao, cak i doradio za svoje potrebe, ali
ipak nisam odusevljen rezultatima. Lepo je sto je moguce zamrznuti
kolonu, ili se igrati bojama i nekim oznakama, ali to ipak ne resava
probleme.
clipper.33vkrstonosic,
-> #26, beki>> Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je
>> odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama.
>> Postoji i funkcija koja iscitava koji se drajver trenutno koristi,
>> ili postavlja neki drugi. Kakve su sanse da se tu uradi nesto
>> pametno, odnosno, preradi postojeci, napravi ili nabavi neki drugi
> drajver ???
>
> Isto pitanje !!!!! Pitao sam po mnogim BBS-ovima i nigde nista...
Eh, a mislim da bi tu trebalo da lezi resenje problema brzine
clipperovog rada sa bazama. Ima li dobrovoljaca da malo prodzaraju po
dbfntx.lib ;))
clipper.34beki,
-> #28, ppekovic> Za mene bi najbolje resenje bilo kada bi nekako moglo
> da tbrowse pre ispisa svakog sloga, skace na moju funkciju
> koja postavlja file pokazivac na slog koji ja zelim da se
> sledeci prikaze, pa se onda kontrola vrati tbrowse-u i on
> ispise slog koji sam ja u mojoj funkciji izabrao.
Ideja TBROWSE sistema je upravo u tome. TBROWSE sistem je neka vrsta prethod-
nice objektno orijentisanog Clipper-a. Postupak za rad je sledeci:
1. Kreiraju se tbcolumn objekti koji sadrze definiciju kolona
2. Kreira se tbrowse objekat od svih tbcolumn objekata
3. Ulazi se u petlju koja skenira tastaturu i u zavisnosti od
toga sta treba da se uradi poziva odgovarajuce metode tbrowse
objekta.
Odlicna strana tbrowse-a je sto ne skace on u tebe (kao dbedit), vec ti skaces
u njega i drzis sve njegove konce (moguce je i on-line dodavanje i brisanje
kolona).
Da bi opisao stvar, dacu ovde jedan kratak primer upotrebe tbrowse sistema na
bazu ABC.DBF sa samo dva polja: IME (C[15]) i PREZIME (C[15]).
*******************
LOCAL kolona[2],br,kraj,dugme
CLEAR
USE abc
kolona[1]=tbcolumnnew("Ime", {|| ime}) && Kreiramo objekte u kojima
kolona[2]=tbcolumnnew("Prezime", {|| prezime}) && smestamo kolone
br=tbrowsedb(3,20,22,60) && Kreiramo tbrowse objekt u datom prozoru. Ono
&& ...db kaze da browse-ujemo iz baze i olaksava
&& inicijalizaciju.
br:addcolumn(kolona[1]) && Vezujemo kolone sa tbrowse objektom
br:addcolumn(kolona[2])
kraj=.F.
DO WHILE .not. kraj
DO WHILE !br:stabilize() && Prozor se popunjuje slogovima. Svaki poziv na
ENDDO && br:stabilize dodaje jedan slog u prozoru.
dugme=inkey(0)
DO CASE
CASE dugme=K_DOWN
br:down() && Pozivamo metod za prelaz na sledeci slog
CASE dugme=K_UP
br:up() && Pozivamo metod za prelaz na prethodni slog
CASE dugme=K_ESC
kraj=.T.
ENDCASE
ENDDO
CLOSE
*******************
Objekti u Clipper-u 5 (na zalost, nisu moguci user-defined objekti) imaju svo-
je metode i instance-varijable. Metodi se pozivaju sa:
objekt:metod(parametri) ---> rezultat
Instance-varijable se citaju sa:
objekt:varijabla ---> rezultat
a postavljaju sa:
objekt:varijabla=izraz
Da ne bi ovde mnogo duzio o svim metodima i instance-varijabla (ima ih
podosta),
saljem uz ovaj tekst jedan PRG fajl koji sam uspesno koristio kao genericki
filterirani browse u nekoliko aplikacija.
Inace, Clipperov tbrowse sistem je veoma mocan - moguce je imati istovremeno
nekoliko tbrowse objekata aktivnih i u njima prikazivati sadrzaje nekoliko
povezanih baza, ili mozda jedne baze. Uostalom, sve ovo veoma podseca na sve
okoline za programiranje sa prozorima (message driven okoline), kao
Macintoshov,
Windows itd.
Svakome koga interesuje Clipper 5 toplo bi preporucio knjigu:
Clipper programming guide 2nd edition, Rick Spence, Microtrend.
(^^^^^^^^^^ co-developer of Clipper)
u kome ima mnogo sistematiziranog znanja i umeca sa Clipper-om.
Beki
mybrowse.zipclipper.35lazo,
-> #20, ppekovic-> Podela na više baza je problematična, tj. kako baze
-> podeliti.
E ovako. Ja sam taj problem rješio na slijedeći način. Naime, iskori-
stio sam brzinu SEEK naredbe. Naime, indeksirao sam bazu po ključevima
koji mi mogu zatrebati u toku obrade baze. Princip je slijedeći. Recimo
da imamo bazu u kojoj ima nekoliko stotina kupaca i intersuju vas podaci
za jednog kupca. Indeksirao sam datoteku po polju za šifru kupca i zatim
kada se unese odgovarajuča šifra, sa SEEK, koji je veoma brz pozicionira
se na prvi slog koji je vezan za tog kupca. Zatim se naredbom COPY TO dat
WHILE šifrakupca=VARIJABLA dobija nova datoteke sa puno manje slogova.
Rad sa tako kratkom datotekom oduzima mnogo manje vremena, nego sa onom
od preko 10000 slogova. Zatim se pri izlasku iz tog dijela programa
izbriše ta pomoćna datoteka. To je naravno korisno kod izlistavanja raz-
nih kartica i štampe kartica. Na ovaj način sam postigao da se posao koji
je rađen od 8 sati (vjerujte mi na rječ), uradi za 40 minuta. Problem se
naravno javlja ako treba nešto fizički mjenjati u datoteci. Kako ono što
je mjenjano u pomoćnoj da se izmjeni i u glavnoj. Ako bi se svi ti podaci
izbrisali pa zatim dodali iz pomoćne opet bi se dobila sporost rada. Zato
fizičke izmjene radim u glavnoj, a izvještaje pomoću tzv. pomoćnih dato-
teka koje nakon upotrebe brišem, jer nema potrebe da zauzima prostor na
disku kad se ti isti podaci nalaze u glavnoj.
Problem je kad se zada filter pa se čeka dok se pozicionira na prvi
slog u glavnoj filtriranoj bazi, kao i neki nedostaci DBEDIT-a.
Inače, gore opisani način obrade podataka u velikim datotekama je jedan
od načina da se poveća brzina obrade podataka i za mene najbolji. Volio
bih, ako neko zna bolji tj. brži način obrade podataka u DBF datotekama
da ga opiše.
Nadam se da sam bar malo pomogao u tome kako izdjeliti datoteku na više
manjih i da se poveća brzina obrade.
Pozdrav Mickey.
clipper.36ppekovic,
-> #34, beki>> Inace, Clipperov tbrowse sistem je veoma mocan - moguce je imati istovremeno
>> nekoliko tbrowse objekata aktivnih i u njima prikazivati sadrzaje nekoliko
>> povezanih baza, ili mozda jedne baze. Uostalom, sve ovo veoma podseca na sve
>> okoline za programiranje sa prozorima (message driven okoline), kao
>> Macintoshov,
>> Windows itd.
Beki, svaka čast na odgovoru i tebi i Lazi, siguran sam da će ovo
još mnogima koristiti.
Paya
clipper.37ndragan,
-> #35, lazoljudi, al ga komplikujete. pređite na foks i rešite stvar prostim INDEX FOR.
da se razumemo, i kod mene kartica radi na
seek _kupac
copy to radna while kupac=_kupac
sele promet
use radna alias promet && svuda u kartici piše promet->polje...
i posle obrišem radnu; naravno, ni radna se ne zove baš radna, nego &tmp, gde
je tmp=sys(3), zbog toga da se u mreži ne bi sudarila dvojica koji bi da
prave istu radnu u isto vreme... to radim kad je jedan kupac ili neka manja
količina; ako teram preko cele baze, onda index for. a ima i baza od
par mega, i ne traje dugo. ali filter - nikad više (ko zapali filter,
shvatiće).
i ne vidim čemu tolika galama.
Bue_ NDragan
clipper.38lazo,
Evo djelimičnog rješenja da ne dođe do prelaska prvog, odnosno zadnjeg sloga
u DBEDIT-u i onog dosadnog čekanja do pojave pozicionog markera. Na vrh se
dolazi tipkama CTRL+PGUP, a na kraj CTRL+PGDW. Dakle, ako niste sigurni da
li će kraj ili početak vi pritisnite jednu od ovih kombinacija i zatim kreni-
te u suprotnom smjeru. Napominjem da je rješenje djelimično, ali može pomoći
da ne dođe do 'zaglupljivanja', kad je baza pod filterom i naravno velika.
Vjerovatno ovo znate, ali ... (nije zgoreg spomenuti).
Pozdrav Mickey.
clipper.39lazo,
-> #36, ppekovic-> Beki, svaka čast na odgovoru i tebi i Lazi, siguran sam da će ovo
-> još mnogima koristiti.
Eto, odah svoju tajnu.:))))))Sad više moji programi neće biti najbrži.:)))))))
Pozdravljam sve kliperše.
Mickey.
clipper.41ppekovic,
-> #37, ndragan>> ljudi, al ga komplikujete. pređite na foks i rešite stvar prostim INDEX FOR.
>>
>> da se razumemo, i kod mene kartica radi na
>>
>> seek _kupac
>> copy to radna while kupac=_kupac
>> sele promet
>> use radna alias promet && svuda u kartici piše promet->polje...
"Digao sam galamu" ;)) zbog sledećeg:
Imaš bazu od 10.000 slogova i ako udariš filter i na zadnjem slogu
stisneš strelicu na dole, program radi ihaaaaj koliko. No, na svu
sreću tu je Beki i Clipper 5.01 pa smo taj problem rešili.
A što se tiče INDEX FOR ta ideja je dobra sve dok ne dođeš do
slučaja kada ti trebaju višestruki uslovi i to da te višestruke uslove
prepustiš da zadaje korisnik. Primer:
Nađi mi u bazi sve čije ime počinje sa "P"
Od tih mi suzi selekciju na sve koji imaju 18 godina
E sad dodaj mi u tu bazu i sve čije ime počinje i na "M"
U vezi COPY TO komande. Ona na žalost radi isuviše sporo za veliki
broj izabranih slogova, a ako se program pusti da korisnik zadaje
uslove, onda će se sigurno vrlo brzo desiti ovakav slučaj. S druge
strane, COPY TO je skoro neupotrebljiv tamo gde se jako često koristi
selekcija, "deselekcija", a to je u gore pomenutom slučaju.
Paya
P.S. Hvala za preporuku FOX-a ali znaš kako smo svi mi konzervativni.
S druge strane potrebno je izvesno vreme da bi se navikao na nove
komande i funkcije, zatim fox-ove prednosti, ali i bug-ove. A na
kraju, kada nisam 100% siguran oko izbora, idem po sistemu, kud svi
turci ... A svi (većina) odoše put clipper-a, što nikako ne znači da
je ovaj bolji, ali zar svi ne koristimo INTEL-ove procesore a
MOTOROLIni su bolji.
clipper.42bulaja,
Hey Clipperasi,
evo jednog lepog iznenadjenja u prikacenoj datoteci (subntx2.zip):
Í───
║ Subntx() is a C function called from a Clipper program to quickly
║ extract index elements from an existing index file, and create a
║ "subset" index matching some key.
║
║ Typical uses for SubNtx() include implementing a 'WHILE' clause for
║ dbedit, replacing or deleting groups of records, or reporting for a
║ certain condition. Any of these processes can be made to perform
║ significantly faster with SubNtx().
Ë───
Dakle izgleda bas ono sto nam je trebalo za resavanje nekoliko
prethodno spomenutih problema. Ovo je shareware verzija i ogranicenje
je sto se funkcija moze pozvati samo 5 puta prilikom jednog
izvrsavanja programa. Uz registraciju se dobija i C source f-je.
Sad jos kad bi smo znali strukturi NTX datoteke, mislim da ne bi bio
neki problem da i sami ovako nesto napravimo. Prekopacu posle po
Clipper dokumentaciji da vidim ima li mozda opisan NTX ili struktura
alternativnog NTX engine.
JžB
clipper.44beki,
-> #41, ppekovic> A sto se tice INDEX FOR ta ideja je dobra sve dok ne dodes do
> slucaja kada ti trebaju visestruki uslovi i to da te visestruke uslove
> prepustis da zadaje korisnik. Primer:
>
> Nadi mi u bazi sve cije ime pocinje sa "P"
> Od tih mi suzi selekciju na sve koji imaju 18 godina
> E sad dodaj mi u tu bazu i sve cije ime pocinje i na "M"
Takav slucaj ne mozes da obuhvatis indexom. To je inace i razlog zasto je
SQL spor - indexe kreiras u data definition i to na vrlo niskom nivou, a
zatim radis upite uopste ne vodeci racuna na indexe. Kad tad, mora se po-
vesti racuna (cak i na VAX6600). Zato u velikim relacionim bazama postoje
profajleri koji ce reci koliko vremena je izgubljeno na kakve stvari i
predloziti indexe. Ideja je u tome da SQL sam optimizuje upit koristeci
indexe.
To bi mozda moglo nekako da se uradi u Clipper-u (pomocu potprograma napi-
sanog u C). Trebalo bi cuvati jedan data-dictionary, u kojem bi bili opisani
svi DBF i NTX fajlovi. Zatim bi se, kad se da upit, odredilo koji index ko-
ristiti itd.....
Ima li neko da ovo uradi ?
Beki
clipper.45beki,
-> #42, bulaja> Sad jos kad bi smo znali strukturi NTX datoteke, mislim da ne bi bio
> neki problem da i sami ovako nesto napravimo. Prekopacu posle po
> Clipper dokumentaciji da vidim ima li mozda opisan NTX ili struktura
> alternativnog NTX engine.
Imam strukturu Clipper-ove NTX datoteke. Samo problem je u tome sto treba
dodati network support i slicne stvarcice. Posto sam radio diplomski rad
oko paralelnog pristupa B-stablima, znam da je to cupav problem.
Poslacu za neki dan opis NTX strukture, jer sad nemam vremena.
> je sto se funkcija moze pozvati samo 5 puta prilikom jednog
Mozda neko provali zastitu !
...Beki
clipper.46zkehler,
-> #42, bulajaŔ (...) Sad jos kad bi smo znali strukturi NTX datoteke, mislim da
Ŕ ne bi bio neki problem da i sami ovako nesto napravimo (...)
Clipper-ov sistem za indeksiranje koristi modifikovano B-stablo.
Prvi page je header, ostali koriste ključeve i pointere neophodne
za održavanje stabla.
Struktura pagea za header je sledeća:
#define MAX_KEY 256
typedef struct š
unsigned sign;
unsigned version;
long root;
long next_page;
unsigned item_size;
unsigned key_size;
unsigned key_dec;
unsigned max_item;
unsigned half_page;
char key_expr ŠMAX_KEYĆ;
Boolean unique;
ć NTX_HEADER;
Značenja polja:
sign - dužina 2 bajta, vrednost 03; identifikuje bazu
kao dBase/Clipper
version - polje koje Clipper koristi da bi odredio verziju
indeksnog sistema
root - offset prve indeksne stranice
next_page - offset prve u listi nekorišćenih indeksnih
strana. Prva 4 bajta nekorišćene strane ukazuju na
sledeću takvu stranu. Lista se završava vrednošću nula.
item_size - veličina ključa, plus dužina 2 long broja. Ovo je
razmak između ključnih zapisa
key_size - dužina ključa po kome se indeksira
key_dec - broj decimalnih mesta u ključu, ako je NUMERIC
max_item - najveći broj ključeva, koji zajedno sa pointerima
mogu stati na jednu stranu
half_page - najveći broj ključeva na strani, podeljen sa 2
(važno za B-stabla)
key_expr - izraz po kome je indeksirana baza, najveće dužine
256, NIL na kraju
unique - boolean koji pokazuje vrednost unique flega kada
je indeks kreiran
Offseti polja u NTX datoteci:
00 unsigned sign
02 unsigned version
04 long root
08 long next_page
0C unsigned item_size
0E unsigned key_size
10 unsigned key_dec
12 unsigned max_item
14 unsigned half_page
16 char key_expr ŠMAX_KEYĆ
272 Boolean unique
Imam C programčiće za dump NTX headera i listanje indeksa. Ako
nekome trebaju, javite.
ZK
P.S. "Clipper Programming Guide", 2nd Ed., Rick Spence
clipper.47ndragan,
-> #41, ppekovic* Imaš bazu od 10.000 slogova i ako udariš filter i na zadnjem slogu stisneš
* strelicu na dole, program radi ihaaaaj koliko. No, na svu
filter? ne hvala, ako ima duvana, zavijam sam ;). stvarno, baš smo
poslednje nedelje proterali poslednju FILTER naredbu iz svojih rutina. BTW -
jel zna neko da li igde ima da se kupi duvana za zavijanje, i to hercegovačke
škije (našao sam konferenciju gde ću da se oglasim, alal mi vera...).
ranije su to držale politikine trafike, ali evo već godinu ipo dana...
pošto se taj duvan reže u Zadru. U Zadru inače (pre deset godina) niko
nije imao pojma da se to tamo proizvodi.
* Nađi mi u bazi sve čije ime počinje sa "P" Od tih mi suzi selekciju na sve
koji imaju 18 godina E sad dodaj mi u tu bazu i sve čije ime počinje i na "M"
index on <izraz> for (ime='P' .and. godina=18).or. ime='M' to idxfile
just like that. ili ako korisnik zadaje uslov, umesto 'P', 18 i 'M'
ufuraš neke promenljive koje je on zadao; kod mene se često pojavljuje
uslov=iif(odgovor=1,'baza->pera=baza2->mika','baza->laza=baza2->milka')
index for &uslov on &dex to (tmp)
itd; to radi. danas sam na jednoj 20MHz/150/286 indeksirao ovako:
index on skl+kupci.posbroj+kupac+pakdatum ;
for between(posbroj,pbr1,pbr2).and. konto=_konto to (tmp)
naravno, i uslov i indeksni pojam su makroi koje dobijam posle jedne
serije od tri - četiri pitalice. iz baze od oko 96000 slogova po 100
bajta (tu negde) iščupao mi je oko 65000 za 20 minuta; makina je
neposvećeni poslužilac ( :) non-dedicated server) u RPTI mreži (mada
niko drugi nije radio na tom disku); baza je imala oko 10M i nešto.
Obrati pažnju da se u indeksnom pojmu nalazi i jedno polje iz druge
baze koja je u relaciji; kad to uspem da izbegnem stvar šljaka nekih 4
puta brže.
* strane, COPY TO je skoro neupotrebljiv tamo gde se jako često koristi*
selekcija, "deselekcija", a to je u gore pomenutom slučaju.
to i kažem - COPY ni ne koristim; radim samo COPY WHILE ako znam da nema
nešto mnogo da se kopira.
Bue_ NDragan
clipper.48beki,
-> #46, zkehlerBas bi hteo da vidim tog koji bi **samo** iz ovoga uradio novi NTX sistem,
koji ce biti isti sa starim, posebno u multiuser (=network) okruzenju.
Uraditi B-stablo sa konkurentim pristupom je gorak zalogaj (moj diplomski
rad je bio na tu temu), a uraditi to kompatibilno sa Clipper-ovim NTX-om
jos teze.
OVO KAZEM DRUGI PUT: CLIPPER+BTRIEVE=SUPER. ZNA LI NEKO KAKO ZAMENITI
ORIGINALNI DBFNTX.LIB ??????????????????????????
Beki
clipper.49beki,
Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa
nekim drugim linkerom kao LINK ili TLINK ?
Beki
clipper.50beki,
-> #47, ndraganSve je to lepo. Ali izgleda da niko od nas nije dobro razumeo Payu: on je tra-
zio metod za selekciju zapisa iz baze po uslovu koji zadaje korisnik on-line.
Resenje sa INDEX FOR ****nije dobro**** jer u svakom slucaju mora se preci pre-
ko svih 96.000 slogova u bazi !!! U teoriji relacionih baza postoje metodi za
optimizaciju upita za upotrebu postojecih indexa. Nazalost ovi algoritmi se ne
mogu implementirati u Clipper-u jer zahtevaju nizi nivo pristupa indexnim faj-
lovima, a i nesto drugaciju indexnu strukturu.
U jednom clanku sam nasao algoritam i strukturu podataka koji omogucavaju da
kad se odrede n polja po kojima ce se vrsiti upiti, kreira index koji ce omogu-
citi bilo kakve upite po opsezima tih polja. Na primer, ako treba da radimo
upit po poljima: pol, ime i starost, mozemo postaviti upit kao:
pol="M" .and. 18<=starost .and. starost<=20 .and.
ime>="M" .and. ime<="O"
Kada imamo potrebu za takvu slobodu upita i kada imamo tako veliku bazu (to se
dobro placa, zar ne), mozda se isplati implementirati neki ovakav subsystem.
Mozda se najvise isplati uzeti jedan microVax i Rdb i svi su problemi reseni.
Beki
clipper.51beki,
Dali neko ima ideju kako ugraditi sledece u Clipper-u (5) ?
Treba mi to da su DBF fajlovi zasticeni od citanja u dBase III ili od
drugog Clipper programa. Teoriju vec znam, dali neko ima praksu ???
Beki
P.S.: Previse usera se ohrabrilo da u dBase mogu uraditi sve sa svojom
evidencijom !!!!!!!!!!!!
clipper.52ppekovic,
-> #47, ndragan>> uslov=iif(odgovor=1,'baza->pera=baza2->mika','baza->laza=baza2->milka')
>> index for &uslov on &dex to (tmp)
Eh, tako sam i ja probao, ali mi se ubrzo pojavio problem. Naime,
ako korisnik zada malko više uslova tj. kada string postane povelik,
dešavalo se da mi clipper prijavi greščicu u stilu "e, da nisi malo
preterao" ;))). Samo mi nikad nije bilo jasno po kojoj logici to
prijavljuje. Nema fiksne dužine posle koje to prijavljuje jer se to
nekad dešavalo se kraćim a nije sa dužim stringovima. S druge strane,
ni broj uslova nije baš navodio na neki logičan zaključak. Moguće je
da funkcija po kojoj clipper određuje pojavu ove greške zavisi od više
parametara.
Neznam kako sa ovim stoji FOX. Ako ti nije teško, probaj, unesi
xxx uslova pa vidi dal će da pukne.
Paya
clipper.53ppekovic,
-> #49, beki>> Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa
>> nekim drugim linkerom kao LINK ili TLINK ?
Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0.
Paya
clipper.54ppekovic,
-> #51, beki>> Dali neko ima ideju kako ugraditi sledece u Clipper-u (5) ?
>>
>> Treba mi to da su DBF fajlovi zasticeni od citanja u dBase III ili od
>> drugog Clipper programa. Teoriju vec znam, dali neko ima praksu ???
;) Uze mi ideju iz glave.
Za sve prikaze u programima, osim u slučaju dbedit-a, rešenje za
ovo je prilično trivijalno. Napišeš svoje funkcije za code i decode
(dal ćeš koristiti xor ili neki drugi sistem codiranja nije ni bitno)
i jednostavno kodiraš celu bazu. Zatim, recimo pre READ/GET-a uradiš
jedno decode tekućeg sloga, uradiš šta treba, posle uradiš jedno code
i gotovo.
E, sa dbedit-om je malko drugačija stvar. Potrebna je funkcija
koje će pre ispisivanja svakog reda dekodirati taj red pa ga tek onda
dati na dalju "obradu" dbedit-u. To u clipper-u '87 nije bilo moguće,
ali u 5.01 jeste, pošto dbedit iz 5.01 dozvoljava da redefinišeš svaki
deo dbedit-a.
Međutim, ima i tu problema. U isto vreme, svi oni koji su trenutno
prikazani u dbedit prozoru treba da su decodirani a svi ostali
kodirani. Zato treba preuzeti kontrolu i nad svim funkcijama za
kretanje kroz bazu u dbedit-u, pa čim jedan ili više slogova izađu iz
prozora, treba ih kodirati, a nove dekodirati.
Probaću ovih dana to da sprovedem u delo pa ću javiti o
rezultatima.
Paya
clipper.55bulaja,
-> #54, ppekovic│ E, sa dbedit-om je malko drugacija stvar. Potrebna je funkcija
│koje ce pre ispisivanja svakog reda dekodirati taj red pa ga tek onda
│dati na dalju "obradu" dbedit-u. To u clipper-u '87 nije bilo moguce,
│ali u 5.01 jeste, posto dbedit iz 5.01 dozvoljava da redefinises svaki
│deo dbedit-a.
└───
Bilo je moguce (i ja sam to vrlo cesto koristio) i u Clipperu S87, i
to preko definisanja niza za formatiranje ispisa. Stavis npr.
afld[1]="polje1"
afld[2]="polje2"
(...)
apic[1]="decode(polje1)"
apic[2]="decode(polje2)"
(...)
dbedit(y1, x1, y2, x2, afld, , apic)
i jos definises DECODE funkciju i that's all.
Ideja sa kodiranjem / dekodiranjem (po meni) nije neko resenje, sem
naravno za vrlo poverljive podatke koje i ovako treba sifrovati, a po
njima ne treba vrsiti nikakva pretrazivanja. Kodiranjem svih polja bi
suvise usporio rad kod npr. indeksa, dok bi se kod pretrazivanja jos
nekako i prezivelo ukoliko bi se uslovi pretrazivanja takodje
konvertovali u kodirani oblik. Ali ovo moze dovesti i do prilicno
velikih problema jer ce "glupi" korisnici ulaziti svejedno u bazu i po
onako kodiranoj brljati i samo nesto pokvariti posto tek sad nece
znati sta rade.
Ma kako trivijalno izgledalo jedno resenje koje ja koristim radi.
Pokusajte samo da preimenujete npr BAZA.DBF u BAZA.DAT (ili neku drugu
ekstenziju). Vecina od onih sto su naucili da ulete u dBase u daju
"use baza" ce se tu predati. Provereno.
Drugo resenje koje smatram vrlo dobrim i na kome cu mozda proraditi
ovih dana ako budem imao vremena (mada i nije nikakav tezak posao) je
jednostavno malo sludjivanje zaglavlja .DBF datoteke. Npr. na izlasku
iz programa stavite proceduru koja ce npr. prebrisati prvih nekoliko
bajtova u hederu .DBF datoteke nekim proizvoljnim sadrzajem. Na
pocetku programa naravno stavite da se header povrati u staro stanje
vracanjem na pravu vrednost tih nekoliko bajtova. Nema sanse da
procita onda bazu iz dBasea, pa ste sa te strane mirni. Posto u toku
rada vaseg programa baza stoji na disku u pravom obliku, korisniku
ipak moze pasti na pamet (a malo ih je tako pametnih) da program moze
prekinuti i onda pogledati sta je u bazi. Alt-C ste naravno
iskljucili, a mozete ugraditi u proceduru koja detektuje reset
racunara u toku rada ubaciti gomilu raznih upozorenja npr. stavite da
program pravi nege gluposti, npr. neku nevaznu tmp bazu i nek brlja po
disku koji minut (a u stvari samo treba reindekirati baze ;). Posle
toga tesko da ce se iko usuditi sledeci put da izaziva sudbinu.
Bulaja
clipper.56dejanr,
-> #53, ppekovic>> > Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa
>> > nekim drugim linkerom kao LINK ili TLINK ?
>>
>> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0.
A jel tada malo brže od ono puža zvanog RTLINK?
clipper.57dejanr,
-> #54, ppekovic>> Napišeš svoje funkcije za code i decode (dal ćeš koristiti xor ili neki
>> drugi sistem codiranja nije ni bitno) i jednostavno kodiraš celu bazu.
>> Zatim, recimo pre READ/GET-a uradiš jedno decode tekućeg sloga, uradiš
>> šta treba, posle uradiš jedno code i gotovo.
Ideja je dobra, ali bih dodao jednu stvar. Ako planirate nešto slično,
zaboravite ideju da to kodiranje obavite u clipper-u. Jedna obična
petlja for i=1 to len(polje) će toliko unazaditi performanse programa
da će isti postati neupotrebljiv. Ukratko, jedan modulčić na asembleru!
clipper.58dejanr,
-> #55, bulaja>> Kodiranjem svih polja bi suvise usporio rad kod npr. indeksa,
Ne bi! Umesto seek(vrednost) koristilo bi se seek(code(vrednost)) i
brzina bi bila ista, ako se zanemari početno izračunavanje code(vrednost).
clipper.59beki,
-> #57, dejanr> da ce isti postati neupotrebljiv. Ukratko, jedan modulcic na asembleru!
Dejan ima pravo ! Jedan programcic u assembleru ili c-u koji ce biti linkovan
u aplikaciju i koji ce uraditi stvar. Ali stosevi kao:
SEEK code(...)
mime=decode(ime)
...
REPLACE ime WITH code(mime)
su prema meni neprihvatljivi - propada pouzdanost i citljivost aplikacije !
Opet se vracam na DBFNTX.LIB. Mesto za programcic u asembleru je DBFNTX.LIB !
U reklami za Clipper5 je pisalo da "it is possible to replace the low level
database/index interface". Kako ? Je li potreban jos neki Nantucketov
produkt ???
Pomagajte.
Pozdrav, Beki
clipper.60ppekovic,
-> #56, dejanr>>>> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0.
>>
>> A jel tada malo brže od ono puža zvanog RTLINK?
Dosta je brže, mislim duplo ako ne i više. A kad smo već kod ovog
da iznesem još jedno iskustvo. Danas sam napravio batch fajl koji mi
iskopira clipper 5.01 compiler i potrebne biblioteke na ram disk.
Zatim sam napravio batch koji kompajlira i linkuje program u ram
disku. Kompajliranje je išlo nešto malo brže, ali linkovanje ništa.
Linkujem upravo sa MSC linker-om.
Jedino ubrzanje koje je moguće postići je to da onaj temp fajl
koji kreira MSC link date da kreira u ram disku.
Paya
clipper.61ppekovic,
-> #57, dejanr>> Ideja je dobra, ali bih dodao jednu stvar. Ako planirate nešto slično,
>> zaboravite ideju da to kodiranje obavite u clipper-u. Jedna obična
>> petlja for i=1 to len(polje) će toliko unazaditi performanse programa
>> da će isti postati neupotrebljiv. Ukratko, jedan modulčić na asembleru!
Može i u C-u. Naime, programi na C-u koji ne uključuju STDIO i
GRAPH i još neke manje korišćene header-e, mogu se bez problema
ulinkovati u clipper.
Paya
clipper.62dejanr,
-> #61, ppekovic>> Može i u C-u.
Naravno! Dodao bih da bi C bio daleko pogodniji ako treba implementirati
neki iole složeniji algoritam za šifrovanje, na asembleru bi bilo dosta
mučno. Ima li neki dobrovoljac da to uradi pa da posle, recimo, napiše
tekst na tu temu za "Računare"?
clipper.63bulaja,
-> #58, dejanr││Kodiranjem svih polja bi suvise usporio rad kod npr. indeksa,
│└───
│Ne bi! Umesto seek(vrednost) koristilo bi se seek(code(vrednost)) i brzina
│bi bila ista, ako se zanemari pocetno izracunavanje code(vrednost).
└───
Mislio sam na usporenje prilikom kreiranja indeksa. Indeksiranje po
polju koje je kodirano nema nikakvig smisla (sem ako se kao encode
funkcija ne stavi not, kad bi to moglo da se resi descending indexom),
pa je potrebno dati indeksiranje po UDF funkciji (decode), sto ce vec
dosta usporiti rad cak i ukoliko je funkcija radjena u C-u ili ASM,
dok bi Clipper funkcija vec donela katastrofalno usporenje. E sad ne
mogu da se setim kako ide osvezavanje indeksa - vajlda kad se da
replace na key field onda ide i reindeksiranje po UDF funkciji, ali
posto se radi samo za trenutno polje usporenje bi trebalo da je
neprimetno.
Pao mi je napamet drugi veliki problem prilikom kodiranja baze - ja
imam obicaj da u GET maske stavljam direktno ucitavanje ili
prikazivanje (sa CLEAR GETS) polja iz baze. Naravno da nije moguce
GET decode(polje), eventualno bi se dalo simulirati preko VALID, ali
tu vec idemo u takve komplikacije da je jedino primenljivo resenje
smestanje polja u privremeni niz i kasnije snimanje u bazu, cime opet
gubim sve prednosti direktnog GET-a polja iz DBF.
A sad da se zapitamo cemu ovoliko kodiranje i skrivanje podataka. Ako
su vrlo poverljivi onda Ok, makar bilo i 10 puta sporije. Medjutim za
sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje
bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i
jednostavno (aj' potrudicu se mozda da i uradim to ovih dana), i sto
je najvaznije ne zahteve nikakve dodatne akrobacije prilikom rada sa
bazama u programu.
Bulaja
clipper.64bulaja,
-> #59, beki│Opet se vracam na DBFNTX.LIB. Mesto za programcic u asembleru je DBFNTX.LIB !
│U reklami za Clipper5 je pisalo da "it is possible to replace the low level
│database/index interface". Kako ? Je li potreban jos neki Nantucketov produkt?
└───
Nantucket ocito ne zeli da se previse upustimo u analiziranje DBFNTX
biblioteke. U kompletnoj dokumentaciji se jedva i pominje DBFNTX.LIB i
to samo se spomene da postoje tri bibiloteke (CLIPPER, EXTEND i
DBFNTX), a u NG-ovima ni pomena. Jednom recju nista.
Malo sam gledao po tom LIB-u, ima oko 40 raznih funkcija. Kretensko
resenje je da sad vadimo svaki OBJ iz LIB-a, pa malo SOURCER-a, pa
menjamo pa vracamo u LIB etc. Ovo je samo teorijsko resenje, em je
zaludan posao, em se ja i da imam vremena ne bi snasao u tome ;), a ko
zna i dal' bi proradilo. Ostaje nam da cekamo da se ameri sete da to
uradi, il' bar da imamo nesto dokumetvoano da krenemo od toga. Crno
nam se pise ;).
clipper.65dejanr,
-> #63, bulaja>> jedino primenljivo resenje smestanje polja u privremeni niz i kasnije
>> snimanje u bazu, cime opet gubim sve prednosti direktnog GET-a polja
>> iz DBF.
Ja i tako uvek sve prepisujem u privremena polja. Iz razloga što moram
da omogućim korisniku da eventualno usled unosa odustane (sa Esc) od
SVEGA što je do tada na tom ekranu promenio. A za to izgleda nema drugi
način.
>> Indeksiranje po polju koje je kodirano nema nikakvig smisla (sem ako
>> se kao encode funkcija ne stavi not, kad bi to moglo da se resi
>> descending indexom), pa je potrebno dati indeksiranje po UDF funkciji
>> (decode), sto ce vec dosta usporiti rad cak i ukoliko je funkcija radjena
>> u C-u ili ASM, dok bi Clipper funkcija vec donela katastrofalno usporenje.
Pa dobro, indeksira se relativno retko, nije strašno ako malo i potraje.
Ne verujem da bi usporenje bilo baš toliko veliko, vredi probati.Mada
priznajem da mi ovo nije palo na pamet, zato što indekse uglavnom
koristim za pretraživanje a ne za sortiranje.
clipper.66ppekovic,
-> #64, bulaja>>Nantucket ocito ne zeli da se previse upustimo u analiziranje DBFNTX
>>biblioteke. U kompletnoj dokumentaciji se jedva i pominje DBFNTX.LIB i
>>to samo se spomene da postoje tri bibiloteke (CLIPPER, EXTEND i
>>DBFNTX), a u NG-ovima ni pomena. Jednom recju nista.
Pogledao sam na BIX-u u clipper conf. ali ni tamo ni reči. Ostavio sam
poruku sa pitanjem u vezi ovog liba na mom tarzan engleskom ;))) pa ako
budu razumeli, valjda će neko znati nešto.
Paya
clipper.67spantic,
-> #56, dejanr>>> > Jeli moguce koristiti Clipper5-ove overlaye bez
>>> > RTLINK-a, odnosno sa nekim drugim linkerom kao LINK
>>> ili TLINK ?
>>>
>>> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0.
>
> A jel tada malo brže od ono puža zvanog RTLINK?
Ne da je brže nego rastura. Pre nego što sam počeo da koristim MS C 6.0
sa Clipperom sa koristio TLINK ali sa novim MS linkerom stvar se poboljšala.
clipper.68ndragan,
-> #52, ppekovic>* Neznam kako sa ovim stoji FOX. Ako ti nije teško, probaj,
>* unesi xxx uslova pa vidi dal će da pukne.
kod foksproa je ograničenje da kompajlirana linija ne sme da
pređe 1K; nikad nisam imao problema te vrste. ono jes da
ponekad radi sporo, ako se u indeksnom pojmu spominje polje iz
druge (i treće!) baze u relaciji, ali to mi uvek radi.
Bue_ NDragan
clipper.69lola,
-> #42, bulajaBio sam na putu, pa sa zakasnjenjem citam diskusiju o delimicnim
indeksima. To jeste veliki problem i ja sam se dovijao na razne
nacine.
U svojoj dokumentaciji imam stariju verziju SUBNTX() koja je takodje
demo i pokriva S87.
Ako nekog zanima mogu da je okacim ovde.
(SUBNTX.LZH 32326 27.12.89)
clipper.70beki,
-> #69, lola> indeksima. To jeste veliki problem i ja sam se dovijao na razne
Da, jeste veliki problem. Sada, kada sam ovo citao dobio sam jednu ideju
koju jos nisam probao, al bi trebalo da radi. Kada dodajemo novi record
u bazi, iskljucimo one indexe koji ne treba da sadrze taj record. Ovo re-
senje je nezgodno s obzirom na REPLACE i REINDEX. REPLACE u slucaju promene
polja koje ulazi u neki indexni izraz bi trebalo implemenitrati tako sto ce
se obrisati record sa DELETE, pri cemu su otvoreni indexi u koje taj zapis
ulazi, a zatim ponovo APPEND-ovati. REINDEX bi se morao implementirati
kopiranjem baze, record po record, pri cemu ce se za svaki, ukljucivati
odgovarajuci indexi. Malo je nezgrapno, al bi trebalo da radi. Treba probati
da nije previse sporo otvaranje i zatvaranje indexa.
Pozdrav, Beki
P.S.: Nakon sto sam ovo napisao u SOR-u, probao sam gornji metod u dBase
i sve je radilo kako treba. Trebalo bi i u Clipper-u !
P.P.S.: Sve ovo bi se elegantno uklopilo u Clipper5-ovu mogucnost defini-
sanja komandi.
clipper.71ppekovic,
Pitao sam na BIX-u u vezi DBFNTX.LIB-a i evo odgovora:
==========================
clipper/tech.questions #2353, from irae, 317 chars, Mon Nov 4
17:48:46 1991
This is a comment to message 2352.
--------------------------
For that I'd guess you'll need the RDD spec which Nantucket has been
promising to release for the last year or so. The only person outside
of Nantucket that seems to know it is the folks at Successware 90 who
wrote the Babblefish driver for Paradox and have hinted that it uses
the unpublished RDD interface.
Ira
Paya
clipper.72ndragan,
-> #63, bulaja* sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje
* bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i
a jedna igra tipa 'isprekrštavaj sve pre nego što izađeš i odseci mu heder'?
jeste da je opasno, jer ne garantuje da će sve ostati čitavo kad nestane
struje, ali bi moglo da igra, a? ili, recimo, da se negde u hederu neki od
neiskorišćenih bajtova upotrebi za oznaku da li je heder sluđen, pa ako
jeste, pozovi rutinu koja ga unormaljuje, inače jok (pri otvaranju) i rutina
za zatvaranje koja opet pravi pičvajz po hederu. to čak ne bi moralo naročito
ni da bude komplikovano. mislim da ideja nije ni bila da se podaci bog zna
kako zaštite od nepozvanih, nego da se nedoučeni korisnik spreči da čačka po
dbfu i ubacuje nemoguće kombinacije (a tako smo se mučili oko kontrole u
aplikaciji...). pade mi sad na um još jedna stvar: arhiver sa šifrom
koji se poziva iz aplikacije da raspakuje (naravno sa -m opcijom) sve
dbfove pre upotrebe, i spakuje ih posle... što će naravno značiti da je
640 K neka vrsta berlinskog zida i da mora jednom pasti. izeš intel.
Bue_ NDragan
clipper.73ndragan,
-> #70, beki* u bazi, iskljucimo one indexe koji ne treba da sadrze taj record. Ovo
kako misliš da isključiš indekse? set inde to, pa append, pa set inde to
inde1,ind2 - tu si ladno jedno tri-četr puta zvao što dos što bios da ti
pravi promaju (otvara/zatvara datoteke). sve i da ih držiš u ram disku, ne
verujem da je rešenje dovoljno brzo. ako staviš set order to 0, indeksi se i
dalje održavaju. a seti se ovoga:
** cexp1=IIF(lexp,cexp,"NEKI KLJUC")
*a šta misliš o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC")
to bi trebalo da radi, jesi li probao? ja nisam, meni ne treba.
i dalje mi je pomalo čudna cela diskusija, jer kao foksovac stvarno nemam te
probleme (imam neke druge...). primedba da indeks for čita celu bazu je na
mestu (naš prvi komentar je bio 'a što nema index while'), ali ako je za
brauz, možda treba razmišljati o stalnom delimičnom indeksu, ili o jednoj
pomoćnoj bazi koja bi držala samo indeksni pojam prve (glavne) baze i u
drugom polju recno() od prve; u tom slučaju ta manja se indeksira a velika
ne, i uspostavi se relacija po tom drugom polju na broj sloga u velikoj. tako
nešto sam svojevremeno majmunisao u vaks bajziku, i brzo je šljakalo. tamo
čak ona velika nije ni bila indeksna datoteka (nije reč o DBF!) nego
sekvencijalna, a ova mala je bila UNIQ i sadržavala adrese prvih bajtova
prvih slogova po datom ključu u velikoj. time se izbeglo duuugačko
prečitavanje velike.
razmisli.
Bue_ NDragan
clipper.74gristic,
-> #48, beki5.48
> OVO KAZEM DRUGI PUT: CLIPPER+BTRIEVE=SUPER. ZNA LI NEKO KAKO ZAMENITI
Sa malim zakašnjenjem: slažem se ! A tek (dobitna) kombinacija
C + Btrieve !!! Ili ((C + C-isam) * UNIX) == SUPER !!!!!!!!!!!
(C-isam je (izmeđuostalog i) srce SQLa - prim.prev.)
__GR__
clipper.75beki,
-> #73, ndragan> dalje odrzavaju. a seti se ovoga:
>
>** cexp1=IIF(lexp,cexp,"NEKI KLJUC")
>
>* a sta mislis o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC")
>
> to bi trebalo da radi, jesi li probao? ja nisam, meni ne treba.
To mi se ne dopada bas najvise. Baza za koju mi ovo treba je stvarno VELIKA
i onih 5 bajtova u nekoliko parcijalnih indexa mi smetaju.
> brauz, mozda treba razmisljati o stalnom delimicnom indeksu, ili o jednoj
> pomocnoj bazi koja bi drzala samo indeksni pojam prve (glavne) baze i u
> drugom polju recno() od prve; u tom slucaju ta manja se indeksira a velika
> ne, i uspostavi se relacija po tom drugom polju na broj sloga u velikoj.
Odlicno. Kako se samo nisam setio ranije. Slicnu sam stvar radio na C64.
Tamo je bilo sekvencijalnih i random fajlova. Ucitavao sam sve kljuceve
u RAM, sortirao, SEEK-ovao u RAM i citao sa floppy disk-a.
Pozdrav, Beki
P.S.: Ono sa otvaranjem i zatvaranjem indexa i nije tako lose ako je baza
takve prirode da nema cestih REPLACE-a i APPEND-a, znaci ako je vise
query baza. Jos vise, tada je to najbolje resenje kad nemas INDEX FOR.
clipper.76beki,
-> #72, ndragan>* sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje
>* bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i
>
> a jedna igra tipa 'isprekrstavaj sve pre nego sto izades i odseci mu
> heder'? jeste da je opasno, jer ne garantuje da ce sve ostati citavo kad
> nestane struje, ali bi moglo da igra, a? ili, recimo, da se negde u hederu
> neki od
A napraviti jedan rezidentni programcic u kojem ce biti registrirani DBF
fajlovi koje aplikacija koristi i koji ce kod DOS-ovih operacija READ/WRITE
za te fajlove primeniti potrebno kodiranje/dekodiranje. Taj programcic bi
mogao da bide linkovan sa celom aplikacijom, a Clipper-u 5 bi cak moglo:
#translate CUSE <dbfile> => register(<"dbfile">): use <dbfile>
gde je CUSE nova komanda za otvaranje sifrovanih datoteka, a register je
funkcija iz naseg programcica (ovo 'cica' moze da nestane ako bude poveci
program) koja kaze da prilikom read i write iz datoteke koja ce biti otvo-
rena pod imenom dbfile da primeni sifrovanje.
Beki
clipper.77alexa,
-> #74, gristic > (C-isam je ,)Żmeđuostalog i) srce SQLa - prim.prev.)
Nije tako, SQL je, ipak, samo jezik - on može da se oslanja na
manje-više bilo kakvu database mašinu.
clipper.78gristic,
-> #77, alexa>> (C-isam je (izmeđuostalog i) srce SQLa - prim.prev.)
> Nije tako, SQL je, ipak, samo jezik - on može da se oslanja na
> manje-više bilo kakvu database mašinu.
OK. Mislio sam na Informix, ali jedno je misliti, a drugo to napisati.
clipper.79alexa,
-> #78, gristic > OK. Mislio sam na Informix,
E da, tako može. Uzgred, C-ISAM i potiče od Relational Database
Systems, a ova firma se sada zove, pogodi kako:
Informix Software.
clipper.80yupc,
Skoro (relativno, posto nisam od 15.10. do pre dan-dva
bio na SEZAM-u, novi vozac ... ostre krivine ...;>)
je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc
MSC. Posto je i mene interesovalo, nasao sam neke prospekte
od biblioteka za svakojako crtanje u Clipper-u.
Najvise mi se dopao Flipper (bar prema onome sto pisu),
zato sam i prepisao.
Prosudite, predlozite ... Vredi li narucivati ?
Pozdrav,
YUPC
****************************************************************
****************************************************************
****************************************************************
IS YOUR CLIPPER APPLICATON HALF-DRESSED ?
Then Get New Flipper 5.0
AND DRESS FOR SUCCESS !!!
-----------------------------------------------
Flipper 5.0 Graphics Will Keep You Users Out of
Embarrasing Situations
-----------------------------------------------
Witout graphics, even the most advanced Clipper application
simply isn't ready to do business.
Graphics "dress up" your aplication, and better-looking
applicatons are worth more to your clients.
NEW Flipper 5.0 is the complete graphics LIBRARY that fits
Clipper like a fine suit of clothes. Flipper 5.0 give you
the power integrate beautiful graphics into your applications
- quickly, seamlessy, and with only a few keystrokes.
Flipper 5.0 delivers the polished, professional "look of
succes" your clients want. And when your applications look
good, YOU LOOK GOOD.
Graphic, CAD and Clipper: A Perfect Match
-----------------------------------------
Flipper 5.0 brings a CAD-like interface to Clipper Development.
Vector objects such as circles, boxes, polylines and text can
be included in a drawing to create maps, room layouts and other
CAD drawings.
And that's just the beginning. Graphic object can be selected
with a mouse or keyboard, and linked to database records.
Objects can be filled solid or with a pattern, placed on
different layers within a graphic, copied, moved, combined
and more!
Printing: The Image of Success
------------------------------
Flipper 5.0's virtual image print driver lets you print
graphics at the resolution of the printer itself - instead
of at the lower resolution of the traditional print screen.
You get all the graphics your printer allows!
Flipper 5.0 support screen image printing to Laser Jet, Dot
Matrix color and Paint Jet printers, Post Script and HPGL,
driver let you scale grapics to any size, and use your
█printer's internal fonts for maximum output quality.
Flipper 5.0 also supports more than 150 disk-based, bitmapped
and stroke font files. You can compile fonts into ypur program,
and Flipper 5.0 even includes a font editor for total font
flexibility.
2D and 3D Graphs: Just Your Stile
---------------------------------
Flipper 5.0 aways given you a wide variety of graph to choose
from. Flipper 5.0 adds area graphs to the graph types alerady
supported. Any graph type can be switched from 2D to 3D with a
single function. 3D chatrs can be rotated to any angle.
Flipper 5.0 allows you to place an unlimited number of graphs
on the screen, overlay graphs upon each other, create text and
reference lines wherever you want, and much more!
Included Features:
Support standard graphics card:
- Auto detects CGA, EGA, VGA, Hercules
- Switch to 800 x 600 or other resolutions suppored on
video card
2D & 3D Graph Types
- Autoscale axes
- Two independent Y axes
- Unlimited data sets and unlimited points on graph
- Any axes linear or log
- Mix bars, stacked bars, lines stackes line, points on
same graph
- Any number of graphs on screen
- Overlay graph on previos graph
- Linear regression, curve fiting
- Text, reference lines anywhere on graph
- Missing value support
- Draw line as spline
- Set legend anyplace on the graph
PCX picture support
- Read and write PCX pictures
- Display monochrome pictures on color screen
- Display color pictures on monochrome screen
- Scroll PCX picture inside window
- Print PCX picture at resolution of printer
GEM compatibile font support
- More than 150 disk based bitmapped and stroke
font files included
- Fonts can compiled into your program
- New fonts can be acquired from font generation packages
- Font editor is included
- Font can be rotated, sized and justified
Supports printing
- Screen image printing to Laser Jet, Dot Matrix, Paint Jet
- Virtual image printing allows an image to be printed at
resolution of the printer
- HPGL is supported for HP Plotters, Laser Jet III and
other HPGL
- Post Script print driver
Low level drawing function
- Draw lines, boxes, arcs, circles and polygons
- Fill closed figures with solid or pattern
- Line can be set to line pattern
- Viewports for scaling a drawing into world coordinate
system
Graphic menu support
- Event driven mouse driver with keyboard support
- 3D effect drop down menus, icons, check box
- Several menus can be active at the same time
CAD drawing capability
- Draw complex objects can be create using the mouse or
keyboard, such as circles, arcs, lines, polylines, boxes,
polygons and stroke or bitmapped text
- Object can be filled solid or with pattern
- Object can be on different layers
- Objects can be copied, moved, deleted, saved, restored and
combined
- The world coordinate system can be defined than changed
allowing for zooming and panning of the drawing
- Each object can be associated with a database wich provides
further information about object
Complatibile with Blinker, Warplink, RTLink 4.1
Both Clipper Summer 87 an CLIPPER 5.0 support
- Support for Clipper SAYS, GETS, DBEDIT() in graphics mode
Flipper support is unmatched
- Norton guides database
----------------------------
đ - 24 hour online BBS đ
----------------------------
- Free tecnical support
- 70 page tutorial in manual
- 500 page manual
- Royality Free
- 30 day money back guarantee
Guaranteed To Improve Your Image
*****************
* At only $ 295,* Flipper 5.0 makes it easy to dress your
*****************
aplications.
And our money-back guarantee will never go out of style. If
you're not completly satisfied, return Flipper 5.0 witin 30
day for full refund.
clipper.81ppekovic,
-> #80, yupc>> je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc
>> MSC.
U MSC postoji bibioteka PGCHART za crtanje grafova. Biblioteka je
sjajna, jednostavna za upotrebu, a rad je veoma brz.
Nevolja je u tome što funckije koje koriste funckije PGCHART
biblioteke nisam uspeo da ulinkujem sa clipper-om (pogledaj stare
poruke zašto).
Međutim, može se uraditi sledeće stvar. Može se napraviti odvojen
program za recimo crtanje grafova. Iz clipper-a će se pozivati kao
eksterni program, s tim što u clipper env. promenljivoj moraš odvojiti
dovoljno mesta za izvršavanje istog. Prenos parametara može ići preko
komandne linije (ako ih ima nekoliko) ili, ako ih ima mnogo, preko
temp. fajla.
Paya
clipper.82gristic,
-> #79, alexa
>> OK. Mislio sam na Informix,
> E da, tako može. Uzgred, C-ISAM i potiče od Relational Database
> Systems, a ova firma se sada zove, pogodi kako:
> Informix Software.
Ma, šta mi napriča !;)
clipper.83beki,
-> #81, ppekovic>>> je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc
>>> MSC.
>
> U MSC postoji bibioteka PGCHART za crtanje grafova. Biblioteka je
> sjajna, jednostavna za upotrebu, a rad je veoma brz.
Sto ne uzmete CL Tools od Dr.Huggle&Partner? Izmedju ostalog sadrzi
odlicnu graficku biblioteku, koju sam nekoliko puta vrlo uspesno is-
koristio. Mozete pogledati reklame u Byte.
Beki
clipper.84beki,
Ima li neko ekvivalent Clipper-ove funkcije ISPRINTER(), koja bi radila na
momentalno aktivni port za printer, recimo LPT2 ili COM3 ?
Beki
clipper.85vkrstonosic,
Kako da u objektnom browse sistemu u Clipper-u 5.01, postavim
picture za odredjenu kolonu ?
clipper.86beki,
-> #85, vkrstonosic> Kako da u objektnom browse sistemu u Clipper-u 5.01, postavim
> picture za odredjenu kolonu ?
Pa evo ovako. Recimo da zelis da 'telefon' pokazes sa '(999) 999-999'.
Onda uradis:
tbcolumnnew("Telefon", {|| transform(telefon,"@R (999) 999-999")})
Beki
clipper.87vkrstonosic,
-> #86, beki> Pa evo ovako. Recimo da zelis da 'telefon' pokazes sa '(999)
> 999-999'. Onda uradis:
>
> tbcolumnnew("Telefon", {|| transform(telefon,"@R (999) 999-999")})
To je to, thanks.
clipper.88bstevan,
Zdravo !
Dali neko može da mi odgovori,ili da adresu firme u YU,
koja prodaje Clipper 5.01
Unapred hvala !
---POZDRAV---
---BSTEVAN---
clipper.89kole,
Ako koristite Clipper 5.01 Extend system da biste omogucili laksi
prenos podataka ka i od vaseg C programa, mozda ste primetili sledec:
Ako linkujete DOS linkerom (ili onim iz MSC 6.0)
dobijate poruke u stilu :
Error 2002: fix-up overflow ,bla,bla...
a program ponekad radi, ponekad ne.
Ako linkujete RTLinker-om ne dobijate nikakve poruke, ali program
jednostavno ne radi.
Resenje je vrlo prosto. NEMOJTE koristit Extend.h za definicije
prototipova funkcija vec ih Vi deklarisite kao _far_ sto resava
sve probleme (za sve linkere !)
Na primer.
extern void far _retni();
void far Vasa_funkcija()
{
...
...
_retni(nesto);
...
...
}
Ako ne radi, javite pa da vidimo !
Kole
clipper.90bulaja,
Kako da saznate da li neka hard disk particija postoji ili ne?
Easy as 1-2-3 ;) - samo proverite DISKSPACE(n) gde je n broj diska, 0
za A:, 1 za B:, 4 za D: itd. Ukoliko DISKSPACE vrati nenormalno veliki
broj, otprilike 1152 Tb (Terra bytes) (vazi za Clipper S87, nisam
proveravao sa 5.01) onda ta particija ne postoji.
Ocigledno, sve ovo ne vazi za particije vece od 1152 Tb ;).
clipper.91mjova,
-> #90, bulaja> Ocigledno, sve ovo ne vazi za particije vece od 1152 Tb
> ;).
znači kod mene to ne bi radilo? :)
clipper.92zkrstic,
-> #80, yupc!! IS YOUR CLIPPER APPLICATON HALF-DRESSED ?
!! Then Get New Flipper 5.0
!! AND DRESS FOR SUCCESS !!!
Lep reklamni mamac.
Pomalo sam radio sa Flipperom , al' mu moj prisutni (mlađi) bratić
izvadio dušu:
Zdravo, ja sam prisutni BRATIĆ! Usput ja sam radio
sa verzijom 4.0 iz daleke 1988-me godine. Odmah da kazem da sam video
jos pet-sest slicnih paketa ali ni jedan nije ni blizu FLIPPER-u.
FLIPPER 4.0 koliko ja vidim po ovoj reklami gore nema nekih nedostataka
u odnosu na 5.0. Sve radi isto pocevsi od fontova, overleja, grafova
itd... Takodje radi sa standardnim PCX formatom slika. Naravno ako
pri tom imas neki od PICTURE konvertera onda mozes raditi u cemu hoces
i ubaciti te slike u CLIPPER. Medjutim daleko interesantnije podrucje
primene FLIPPER-a su dijagrami i uopste statistika. Naime on izvanredno
radi sa bazama i grafickim prikazivanjem sadrzaja baze. Sve to radi
strasno brzo i lepo. Radi na svim grafickim kartama i svim modovima.
Ovi fontovi koji se spominju su zaista dobri (kod mene ima 138). Ta-
kodje tu je i FONT EDITOR pa ako je neko dokon izvolite molim lepo.
Sve u svemu da ne duzim ako neko ne zna sta ce bez grafike u CLIPPER-u
ja najtoplije preporucujem FLIPPER.
P.S. Mislim samo da ce eventualno zainteresovani imati omanjih problema
prilikom rada. USER MANUAL je na oko 200 strana!!! Pa ako se nekom
isplati...
Eto, toliko... Puno pozdrava i ziveo FLIPPER !!!! Vlajko.
P.P.S. Da neznate ko od domaćih (čitaj: srpskih) distributera ima ovaj
paket: Flipper 5.0?
Pozdrav čeljko
clipper.93drpr,
Ćao svima!
Imam jednu veliku molbu i nadam se da će mi neko od Vas izaći u
susret.
Prvo da naglasim da što se tiče programiranja moj nivo znanja
se kreće samo u oblasti turbo paskala i to na nešto malo većem
nivou od školskog.To navodim iz sledećeg razloga:čeleo bih da
učim clipper pa bih želeo da mi neko ukratko objasni čemu
clipper služi i da li su mi potrbana neka veća predznanja kako
bih mogao većinu stvari o njemu da naučim.Molim vas za
neko 'prostije' objašnjenje,ako je moguće,jer o bazama podataka
ne znam ama baš ništa.Ako bi tu mogli da mi napišete neku
literaturu od koje bih mogao da počnem bio bih baš zahvalan.
Da ne bi mučili sve ostale ljude poruke možete da mi pošaljete
na mail drpr.
Još jednom hvala u napred!
drpr
PS
Ja posedujem knjigu Razvoj aplikacija u Clipper-u od Vlade
Markovića.Neznam da li da krenem od nje.
clipper.94lazo,
Pitanje za one koji su imali prilike da rade sa Clipper grafičkom
bibliotekom koja se nalazi na Sezamu (CLIPGR12.ZIP). Kad dodam linkeru još i
clipgraf.lib datoteku tj. pri linkovanju TLINK prijavljuje slijedeću grešku:
Undefined Symbole '_GR_INFO' in module CLIPGR51.C
Undefined Symbole '_OUTPUT_REGS' in module CLIPGR51.C
Probao sam i sa PLINK-om i sa MS LINK-om i oni su najavljivali nešto slično.
Inače program kad se linkuje radi bez problema. Mene interesuje da li se to
dešavalo još nekom koje bar probao da radi s ovom bibliotekom ili je možda
došlo do neke greške u prenosu, a da je pritom nije detektovao ni
komunikacioni program, odnosno modem, a ni zip?
Pozdrav, Mickey.
clipper.95dnikolic,
-> #93, drpr>> Ja posedujem knjigu Razvoj aplikacija u Clipper-u od Vlade
>> Markovica.Neznam da li da krenem od nje.
Mislim da je najbolja knjiga koja se koda nas moze kupiti od Strale-a ( xe xe,
mislim da se nekako ovako zove ), a imas je u knjizari u Albaniji ( mislim na
zgradu ) po ceni od oko 1200 Din. Neces se pokajati.
dn
clipper.96gww.,
-> #89, kole
> Ako linkujete DOS linkerom (ili onim iz MSC 6.0)
>dobijate poruke u stilu :
> Error 2002: fix-up overflow ,bla,bla...
>a program ponekad radi, ponekad ne.
Da pitanje u kom memorijskom modelu je isporučena clipperova biblioteka?
Verovatno u large.
P.S. Nisam clipperista, samo posmatrač.
GWW.
clipper.97ppekovic,
-> #95, dnikolic>> Mislim da je najbolja knjiga koja se koda nas moze kupiti od Strale-a ( xe
xe
>> mislim da se nekako ovako zove ), a imas je u knjizari u Albaniji ( mislim
na
>> zgradu ) po ceni od oko 1200 Din. Neces se pokajati.
Straley-eva knjiga je prilicno dobra uz dve napomene:
Napomena 1. Knjiga nije bas udzbenik koji ce pocetnika
u oblasti baza podataka uopste, voditi od osnovnih pojmova
nadalje. Knjiga je za one koji su savladali osnovne korake u
clipper-u i naucili i razumeli osnovne pojmove o bazama uopste.
Napomena 2. knjiga je za Clipper verziju summer '87.
Mislim da bi coveku bilo lakse da odmah krene sa clipper-om
5.01 posto on dozvoljava programiranje koje je mnogo blize
pascal-u nego sto je to slucaj sa '87 verzijom.
Primedba: Nije red kritikovati nesto a ne umeti dati
resenje, ali ja resenje zaista nemam. Jednostavno, ne postoji
knjiga pocetnica za clipper.
I jos da dodam o knjizi črazvoj aplikacija u
clipper-u" g. Markovic-a. Knjiga je najgora knjiga koju sam u
zivotu uzeo u ruke. Ovo je moje subjektivno misljenje, premda,
ako neko zeli da pokaze suprotno, spreman sam izneti i veliki
broj argumenata za to. Sada me jednostavno mrzi da pisem jer
mislim da ne vredi na nju trositi tastaturu.
Paya
clipper.98ppekovic,
-> #96, gww.>> > Ako linkujete DOS linkerom (ili onim iz MSC 6.0)
>> >dobijate poruke u stilu :
>> > Error 2002: fix-up overflow ,bla,bla...
>> >a program ponekad radi, ponekad ne.
>>
>> Da pitanje u kom memorijskom modelu je isporučena clipperova biblioteka?
>> Verovatno u large.
U pravu si, u pitaju je LARGE model.
Paya
clipper.99bulaja,
-> #93, drpr│Zeleo bih da ucim clipper pa bih zeleo da mi neko ukratko objasni cemu
│clipper sluzi i da li su mi potrbana neka veca predznanja kako bih
│mogao vecinu stvari o njemu da naucim.
└───
Sluzi za razne poslove / programe koji rade sa bazama podataka. Da bi
naucio sam Clipper kao programski jezik nije potrebno mnogo truda,
ukoliko imas predznanje iz nekog drugog programskog jezika, tj. opste
znanje o programiranju. To se narocito odnosi na verziju S87 koja je
uglavnom zasnovana na dBase III+ dijalektu tj. prilicno jednostavna,
dok je Clipper 5.01 nesto zakomplikovan pa bolje kreni od S87. Ali sa
samo naucenim jezikom slabo ces uraditi ista vredno - bice ti potrebno
dosta znanja i iskustva u dizajniranju baza podataka, pa se zato odmah
u pocetku zapitaj koji ce ti sve to i da li zaista zelis time da se
bavis. Neki Clipper spominju i kao jezik za opstu upotrebu, ali on
nije to - suvise je slab na mnogim poljima. Zato ako samo zelis da se
bavis programiranjem onog sto ti padne napamet, nemoj razmisljati o
Clipperu - ili ostani na TPascalu (sjajan jezik, i ja sam tako poceo ;)
ili predji npr. na C (sto ce ti verovatno savetovati vecina ljudi
ovde). Clipper je samo neko privremeno, medjuresenje (cak i za baze
podataka) - evo npr. ja se posle skoro tri godine rada u njemu trudim
da ga se otkacim (u korist C-a).
│Ako bi tu mogli da mi napisete neku literaturu od koje bih mogao
│da pocnem bio bih bas zahvalan.
└───
Najbolje sto mozes da nadjes kod nas je "Programiranje na Clipper-u"
S.Straley-a (original Addison Wesley, prevod Mikro Knjiga). Odnosi se
na S87, ali posto ti i preporucujem da krenes od S87 verzije onda ce
ti knjiga odgovarati. Inace na tu knjigu imam dosta zamerki, ali
posluzice ti.
Pozdrav,
Bulaja
clipper.100drpr,
Prvo da se zahvalim dnikolicu i ppepkovicu na odgovorima ali
kako svaki početnik ima ono glupo pitanje a to je :
Da li postoji neka knjiga iz koje da počnem možda nevezana za
clipper uz pomoć koje bih mogao da zaplovim i u vode clippera
ili da jednostavno uzmem te koje ste preporučili pa da se bijem
s njima i da kopam i probam te što mi nije jasno da pitam vas?
Još jednom hvala!
drpr
clipper.101zkehler,
-> #97, ppekovicŔ Primedba: Nije red kritikovati nesto a ne umeti dati
Ŕ resenje, ali ja resenje zaista nemam. Jednostavno, ne postoji
Ŕ knjiga pocetnica za clipper.
Nisu početnice, ali su dobre ove dve knjige:
"Clipper Programming Guide", Rick Spence,
2nd Edition, Microtrend Books, 1991: ISBN 0-915391-41-4
"Clipper Developer's Library", James Occhiogrosso,
Microtrend Books, 1991: ISBN 0-915391-39-2
ZK
clipper.102ppekovic,
-> #99, bulaja>> Clipper je samo neko privremeno, medjuresenje (cak i za baze
>> podataka) - evo npr. ja se posle skoro tri godine rada u njemu trudim
>> da ga se otkacim (u korist C-a).
Cinjenica je da je Clipper '87 bio veoma ogranicen, premda i za njega bas
ne vazi sasvim ovakva tvoja primedba (privremeno resenje). Medjutim, pojava
Clipper-a 5 otklanja svaku sumnju u Clipper kao ozbiljan alat za baze podataka.
Paya
.s
clipper.103ppekovic,
-> #100, drpr>> Da li postoji neka knjiga iz koje da počnem možda nevezana za
>> clipper uz pomoć koje bih mogao da zaplovim i u vode clippera
>> ili da jednostavno uzmem te koje ste preporučili pa da se bijem
>> s njima i da kopam i probam te što mi nije jasno da pitam vas?
Pa izgleda ti je ipak ostao Straley. Naravno, za sve sto ti nije jasno, tu
smo, uostalom, za to Sezam i sluzi. Samo napred!
Paya