clipper.104dnikolic,
-> #100, drpr>> Da li postoji neka knjiga iz koje da pocnem mozda nevezana za
>> clipper uz pomoc koje bih mogao da zaplovim i u vode clippera
>> ili da jednostavno uzmem te koje ste preporucili pa da se bijem
Uzmi ti lepo prvo neku knjigu o DBase III Plus, pa to savladaj. Kasnije ce
ti rad sa Clipperom biti vise nego lak. Poceti direktno sa Clipperom je kao
da odmah sednes u Formulu 1, a cak ni vozacki ispit ne polozis.
dn
clipper.105drpr,
E brate jeste carevi!
Govorio meni alias darone za ovakve stvari na sezamu ali ja
nisam verovao!Toliku pomoć ne bi dobio ni u crvenom krstu!
Elem dosta šale,o svim odgovorima ću razmisliti pa ako krenem
da radim i imam neke probleme javiću se.Još jednom hvala svima
na srdačnoj pomoći i van očekivanja iscrpnim odgovorima
,and si ju. :))
drpr
clipper.106zkrstic,
-> #105, drprKnjigu od g. Markovića - BACI!
PazarPriručniÚĆk za DBASE III i Programiranje u
Clipperu (oba izdanja od mikroknjige-rakovica)
i pali :)
Pozdrav čeljko
clipper.107dmihajlo,
ARHIVIRANJE PODATAKA
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
APEL:
Problem smatram dovoljno univerzalnim da bi se njegovo
elegantno rešenje moglo primeniti kao jedan od modula u
svim ozbiljnim CL aplikacijama. Iskusni CL programeri su
ga verovatno rešili. Odazovite se...
UKRATKO:
Problem je kako zapakovati i kopirati "nepotrebne"
datoteke koje mogu biti duže od kapaciteta diskete, na
diskete i/ili strimer, i to sve iz CL programa?
Ima li neko program SHROOM za svapovanje RAM-a na disk?
Kako da ga nabavim?
Kako da dobijem errorlevel koji po izvršavanju npr. "RUN
PKZIP" vrati PKZIP ako nešto nije obavio kao treba?
SITUACIJA (NA ŠIROKO):
Svaka ozbiljna aplikacija mora da reši problem gomilanja
podataka. Za neko vreme nakupi se dovoljno podataka da
disk, ma koliko veliki bio, postane zagušen "nepotrebnim"
podacima.
Zbog toga se "nepotrebni" slogovi izdvajaju i smestaju na
neku pomoćnu (DBF) datoteku. Ali i pomocna datoteka
zauzima prostor na disku, pa je povremeno treba zapakovati
i pohraniti na neki drugi medij (traku, diskete...). To
treba obaviti tako da bude moguće vraćanje obrisanih
slogova sa npr. diskete u aktuelnu bazu podataka, ukoliko
se ukaže potreba.
Napravio sam rutinu u CL87 koja između ostalog poziva
PKZIP arhiver koji je trebao privremene datoteke da
zapakuje, zatim sam ZIP paket kopirao na diskete.
Jos pre sam napravio i program u TP6 koji rastavlja ZIP
datoteke na vise datoteka koje nisu duže od slobodnog
prostora na disketi... a onda se pojavio ARJ i ZIPOFF...
PROBLEM:
Međutim! Kada se pokrene CL program, ostane (pre)malo
memorije za PKZIP (treba mu 85K) koji sam pokretao RUN
naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ
program zahteva još više meorije (oko 280K). Znači malo je
koristi od RUN naredbe.
MOGUĆE REŠENJE (R:), ODGOVARAJUĆE PITANJE (P:) I KOMENTAR (K:)
R: U dokumentaciji od ARJ 2.21a spazih čarobnu stvar:
program SHROOM, koji kad se pozove iz nekog programa,
svapuje RAM na disk i oslobodi ga za pokretanje drugog
programa (npr ARJ)
P: Ima li neko taj program ?
K: IDEALNO REŠENJE! Baš ono što treba za RUN iz CL...
R: Pokušati osloboditi memoriju pravljenjem overleja!
P: Da li se pravljenjem overleja može osloboditi dovoljno
memorije za uspešno korištenje "RUN PKZIP..."?
K: Znam, znam... Probaću, pa ću videti! Osim ako neko već
nije probao pa video? Valjda će mi uštedeti trud i vreme?
R: Kombinovati CL i BAT programe: BAT poziva CL koji poziva
BAT (radi zipovanja), a ovaj opet poziva CL sa parametrom
koji kaže nešto u smislu: "nastavi gde si stao..."
P: Da li je moguće da nepostoji ništa drugo???
K: Samo to ne! Samo to ne... Ovo bi bilo samoubistvo...
PRETPOSTAVKA:
Pretpostavka je da program koristi "idiot-korisnik",
odnosno da ne zna da koristi DIR, BACKUP, PKZIP ...
Zato je neophodno da korisniku iz CL programa poručujem:
"Ubaci praznu disketu i pritisni bilo sta...", odnosno
"Disketa nije prazna, ubaci drugu..." i sl.
Osim toga vodim evidenciju o arhiviranim datotekama, a
korisnik se na osnovu nje odlučuje (izabere nešto pomoću
DBEDIT) koju datoteku želi da dearhivira.
Zato je neophodno da se sve obavi iz CL programa.
BoMi
clipper.108ppekovic,
-> #107, dmihajlo>> Međutim! Kada se pokrene CL program, ostane (pre)malo
>> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN
>> naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ
>> program zahteva još više meorije (oko 280K). Znači malo je
>> koristi od RUN naredbe.
Nećeš verovati kako je jednostavno rešenje za tvoj problem.
Pre startovanja tvog clipper programa stavi jedno:
SET CLIPPER = R85 za ZIP ili
SET CLIPPER = R280 za ARJ i gotovo.
U stvari, napravi jedan batch fajl kojim će se startovati tvoj
program a u kome će prva komanda biti set clipper ...
No, nije sve to tako lepo kao što izgleda. Naime, korišćenje
ARJ-a i ZIP-a je ok. rešenje za interno korišćenje programa, ali
ako taj program prodaješ dalje, ne treba zaboraviti da ni ARJ ni
ZIP nisu PD programi.
Jedno vreme sam hteo da napravim svoj arhiver koji će da deli
arhivu na više disketa vodeći računa o slobodnom prostoru na
disku, kao što to radi opcija -vva iz ARJ-a. Međutim, pojavila su
se dva problema:
1. Pisati arhiver u clipper-u je zamorno, a sam program će
biti veoma spor.
2. S druge strane, mogu ja napisati arhiver u C-u, ali, zbog
problema oko povezivanja Clipper-a i C-a, nemogu integrisati
glavni program sa arhiverom, a ne dopada mi se da arhiver pozivam
komandom RUN. Jest da nemam neki jak razlog za to, ali bih ipak
više voleo da mi je sve u jednom EXE-u.
Ako neko ima rešenje, bar idejno, voleo bi da ga čujem.
Paya
clipper.109zkrstic,
-> #107, dmihajlo>> Problem smatram dovoljno univerzalnim da bi se njegovo
>> elegantno rešenje moglo primeniti kao jedan od modula u
>> svim ozbiljnim CL aplikacijama. Iskusni CL programeri su
>> ga verovatno rešili. Odazovite se...
>> Ima li neko program SHROOM za svapovanje RAM-a na disk?
>> Kako da ga nabavim?
Brate, zaboravi, šanse da to nateraš da radi sa Clipper-om su
ravne nuli.
Tvoju muku sam već doktorirao :(, ubijao sam se i sa SET CLIPPER
i slično, al kada rezervišeš memoriju, (gotovo) redovno ne ostane do-
voljno za program.
U ZIP-u imaš dve verzije, OVERCL je demo, lepo radi ali je
DEMO, pa radi samo dva puta po startovanju programa. SWITCH je zato
carski, radi koliko hoces puta i mali je :) (eto koristi od malog!)
Ako zagusti a ti viči. Dobra kombinacija sa arhiviranjem je
SWITCH i PCBACKUP 4.3, naravno nezaboravi na copyright za PCBACKUP.
Pozdrav, čeljko
file.zipclipper.110bulaja,
-> #107, dmihajlo│Kako da dobijem errorlevel koji po izvrsavanju npr. "RUN
│PKZIP" vrati PKZIP ako nesto nije obavio kao treba?
└───
Izgleda da Clipper S87 ima nekih problema sa ispitivanjem errorlevela
kod run-a, ja sam skoro pokusavao nesto da provalim i nikako mi nije
vracao poruke o gresci cak i za obicne DOS komande (cd, md, ..).
│P: Da li se pravljenjem overleja moze osloboditi dovoljno
│ memorije za uspesno koristenje "RUN PKZIP..."?
└───
Pravljenjem overleja ces naravno smanjiti maksimalne zahteve za
memorijom svog programa, ali je pitanje da li ce to biti dovoljno za
ZIP. Ali pre nego sto pokusas nesto sa overlay-ima pokusaj i da pre
"run pkzip" zatvoris sve aktivne baze i indekse, mozda ce ti to biti
dovoljno. Ipak ovo nije neko resenje, jer se moze desiti da na nekoj
masini opet nece biti dovoljno memorije.
│R: Kombinovati CL i BAT programe: BAT poziva CL koji poziva BAT (radi
│zipovanja), a ovaj opet poziva CL sa parametrom koji kaze nesto u
│smislu: "nastavi gde si stao..."
└───
Uzas ;).
Ostaje naravno najbolje resenje da se program za arhiviranje pise u
C-u. Cak ne mora da se pise vec samo prilagodi - postoji dosta
arhivera koji su dati u source kodu (npr. na Sezamu ima source LHA
arhivera u \ibmpc\archiver, ili LZW negde u \rsoft) i PD su pa sa te
strane ne bi bilo nikakvih problema. Ostaju opet memorijski zahtevi
tih arhivera - s obzirom da se direktno povezuju sa Clipperom nije im
potrebna memorija i za dodatan command.com koji se ucitava prilikom
RUN. Mozete malo optimizovati koriscenje bafera pa na racun eventualno
sporijeg rada dobiti znatno manje memorijske zahteve. Ovo iz Clippera
nisam radio, ali sam npr. prilagodio za Force algoritam tj. C program
(koristio sa msvojevremeno Turbo C) za LZW kompresiju i radio je lepo,
bez problema. Sa Clipperom mislim (tj. nadam se ;) da ne bi trebalo
predstavljati problem. Ovo se naravno odnosi na verziju S87 na 5.01
sam tek poceo nedavno da radim i nisam jos proucio extend sistem.
Moguce je i mazohisticko resenje da se arhiver pise bas u Clipperu. U
tom slucajo otpadaju svi problemi, ali ce svaki iole bolji algoritam
biti katastrofalno sporo zbog "brzine" Clippera. Ali zato mi je palo
na pamet vrlo trivijalno resenje za kopresiju .DBF datoteka. Moguce je
.DBF konvertovati u neki levi oblik gde se cuvaju samo zaglavlje
(struktura) baze, a nema fiksne duzine ni za stringove (zapisuje se
prakticno samo rtrim(string_field)), numerici bi se konvertovali iz
stringova (kakav je zapis u .DBF) u normalni binarni oblik (integer,
real), uz neku optimizaciju i logicka polja u jedan bit (tj. bajt ali
ukoliko ima vise logickih polja ona bi se spakovala u taj bajt). Ovde
bi mogle da se ostvare solidne ustede narocito zbog stringova koji su
u 99% slucajeva polupopunjeni zbog hipoteticke maksimalne vrednosti.
Ovakvu proceduru ne bi bio nikakav problem izvesti, uz neki trivijalni
algoritam za kompresiju bi se verovatno dobili sasvim pristojni
rezultati. Pokusacu ovih dana da uradim takvo nesto u Clipperu i
javicu rezultate.
Bulaja
clipper.111hercog,
Da li neko zna zbog cega clipper 5.01 ponekad pri in-
deksiranju datoteke obrise tu datoteku (strukturu i po-
datke ) a ostav njeno ime na disku.
2. da li je nekome poznt razlog blokiranja clippera 5.01
kod naredbe release
Hercog
clipper.112dejanr,
-> #108, ppekovic>> 2. S druge strane, mogu ja napisati arhiver u C-u, ali, zbog
>> problema oko povezivanja Clipper-a i C-a, nemogu integrisati
>> glavni program sa arhiverom, a ne dopada mi se da arhiver pozivam
>> komandom RUN.
Zar su problemi toliki? Koliko sam shvatio, može se uzeti C 5.1.
Dakle, arhiver na asembleru?
clipper.113dejanr,
-> #107, dmihajlo>> Međutim! Kada se pokrene CL program, ostane (pre)malo
>> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN
>> naredbom. Neće da radi!
Ja radim nešto mnogo manje elegantno, ali uradi posao. Naime,
osim nekakvog glavnog programa koji se bavi "obradom" podataka,
napravim odvojen program ARHIVA za prenošenje na diskete. Taj
nije na Clipper-u, i bez problema zove ZIP kad mu treba.
Do sad se niko nije bunio.
clipper.114hercog,
-> #107, dmihajloMoj savet ti je da nabavis Clipper 5.01 i da s njim
pises programe.Koristeci njega moci ces da pokrenes
pkzip i sl programe jer se sam svapuje na disk ako
nema dovoljno rama . Ja sam napisao program od oko
620 kb pa mi se iz njega sasvim lepo startuju jos neki
programi/
pozdrav Hercog
clipper.116dmihajlo,
-> #107, dmihajloZahvaljujem svima na odgovorima i pomoci!
Najvise mi odgovara resenje zkrstica (5.109), a probacu i CL5.01 po
preporuci Hercoga (5.114). Probao sam i (5.108) od ppekovica. Radi, donekle,
ali sam uz put otkrio i bag u CL87: posle memory(0), ne radi RUN ... pod
MS DOS 5.0. (vidi fail "bag").zip").
HVALA!
BoMi
bag.zipclipper.117ppekovic,
-> #112, dejanr>> Zar su problemi toliki? Koliko sam shvatio, može se uzeti C 5.1.
Na zalost ja nemam MSC 5.1, ali ako neko ima, i ako ga ne
mrzi, ima u rsoft dir-u C source lzw arhivera (r071lzw.zip (?)).
>> Dakle, arhiver na asembleru?
Da, i neko koga ne mrzi to da pravi na assembler-u.
Da neko slucajno nezna za neku biblioteku (posto ih za clipper
ima gomila raznoraznih) koja ukljucuje funkcije za backup?
Paya
clipper.118vili,
Postoji li nacin da se ALERT() ne pojavljuje na sredini
ekrana, vec tamo gde ja to hocu (eto bas hocu..)
clipper.119ndragan,
-> #110, bulaja/ (struktura) baze, a nema fiksne duzine ni za stringove (zapisuje se
/ prakticno samo rtrim(string_field)), numerici bi se konvertovali iz
to se u foks prou kaže 'copy to druga type delimited with tab'. ja za
arhiviranje iz foksa koristim sledeću logiku: program mi generiše arhiva.bat
i to na lokalnom disku (zbog mreže) i to negde na vrh path liste (obično DOS
direktorij); arhiva.bat poziva ZIP, BACKUP, javlja operateru šta da napiše na
disketu itd. Na ekranu mu ostavim poruku "OTKUCAJ REž ARHIVA <<enter>>"; otkako
se pojavio KEYBUFF i to je otpalo - generišem Arhiva.bat, uradim Clear All,
Run Keybuff Arhiva žM i Quit - tako da se arhiviranje radi još malo pa
automatski.
Bue_ NDragan
clipper.120lazo,
Jel' neko skonto kako da se switch87 pozove iz program i isovremeno pozove
neki drugi program. Ja sam uspio dobiti samo nešto kao Shell to Dos u raznim
programima, a zatim sa exit se vratiš u program.
clipper.122lola,
-> #120, lazo│ Jel' neko skonto kako da se switch87 pozove iz program i isovremeno pozove
│ neki drugi program. Ja sam uspio dobiti samo nesto kao Shell to Dos u raznim
│ programima, a zatim sa exit se vratis u program.
└────
Nisam u mogucnosti da proverim on-line uputstvo (na disketi), a manual
koji imam je od starije verzije. Tek onako po secanju u programu napises
Drswitch(cDosKomanda,cVrstaMemorije,nMem)
Ne secam se vise kako se specificira extended ili expanded memorija, ali
ako ostavis prazno deo programskog imidza ce ici na disk.
Evo ti primera:
Drswitch('lotus','',300)
Drswitch('backup '+source+Drv,'',200)
Vazno je da linkujes header kao prvi obj a switchu7 kao poslednji. Na
primer:
tlink header7+obj1+obj2+..+switchu7,prog,,CLIPPPER+EXTEND+ lib3 ...
Napomena 1: Do sada nisam imao problema kada sam DRSWITCH koristio sa
Clipper 5.01, bez obzira da li je dinamicko alociranje memorije ukljuceno
ili iskljuceno.
Napomena 2: U uputstvu za stariju verziju DRSWITCH pise da je komanda
RUN DRSWITCH DosKomanda
na primer:
RUN DRSWITCH EDIT MYFILE.PRG
clipper.123zkrstic,
Obzirom na brojna pitanja u vezi raznoraznih programa za pristup
virtuelnoj memoriji, evo par pojašnjenja.
Problem br. 1
Autor swap-a i overlay-a je izvesni Greg A. Martin. Programi su
sjajni, lepo rade, posebno OVERLAY, ali... Nama (meni) su dostu-
pne samo demo verzije, koje su ograničene na 2 odnosno tri izvr-
šenja nakon startovanja programa. Sa čovekom se nemože stupiti u
kontakt ni telefonom ni pismom.
Problem br. 2
Obzirom da za iole ozbiljniji rad ostaje najlošiji među njima, tj.
SWITCH87, čovek koji je probao da radi sa ostalima navikao je na
sintaksu: Result=SWAP(kb,prog) ili kod overlay-a,
Result = OverLay(Program, Memory, Prompt,Pathname, Filename,
Restoredir)
Kod SWITCH-a je sintaksa sledeća: Result = Switch87("prog",kb)
prog - naziv programa na koji se prenosi izvršenje
kb - iznos memorije u kb koji se oslobađa na disk. Ukoliko
je 0, oslobađa se maksimalno moguća količina memorije.
SWITCH radi n-puta po startovanju programa i to mu je jedina prednost
u odnosu na gore pomenuta dva programa. Zna i da blokira računar, al' to is-
ključivo zavisi od ploče i konfiguracije. S toga, ukoliko je ikako moguće
koristite overlay(), jer je najbolji.
Nadam se da sam sad pojasnio u čemu je štos. Kome zatreba još neki
podatak, nek' me izvoli mailovati. :))
Pozdrav, čeljko
P.S.
žim nađem source-ove iz Crvenog signala (moji programi) poslaću ih
jer bi mogli biti dobri kao primeri, iako su matori.
clipper.124lazo,
-> #122, lolaZahvaljujem, pomoglo je.
clipper.125ppekovic,
-> #107, dmihajlo>> Međutim! Kada se pokrene CL program, ostane (pre)malo
>> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN
>> naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ
>> program zahteva još više meorije (oko 280K). Znači malo je
>> koristi od RUN naredbe.
Pre izvesnog vremena si bas od mene dobio odgovor da je veoma
lako resiti ovaj problem setovanjem environment variable clipper
na sledeci nacin:
SET CLIPPER=r:280
To je sasvim tacno, ali samo za verziju '87. Posto sam, otkada
sam presao na 5.01 koristio RUN komandu samo za neke sitnije
programe, nisam pokusavao pomenuti problem da resim na Clipper-u
5.01. Medjutim, danas sam naleteo na taj problem i po inerciji
otkucao set clipper ... ali! program i dalje prijavljuje out of
memory ...
Pogledam lepo sta pise za varijablu clipper kad tamo ni traga
ni glasa nekadasnjem R, a zamene nigde.
Dakle, jel zna neko resenje za malo vece programe, komandu RUN
i clipper 5.01?!
Paya
clipper.126hercog,
Da li neko zna zbog cega clipper 5.01 ponekad pri in-
deksiranju datoteke obrise tu datoteku (strukturu i po-
datke ) a ostav njeno ime na disku.
2. da li je nekome poznt razlog blokiranja clippera 5.01
kod naredbe release
Hercog
clipper.127bstevan,
-> #101, zkehler>> Nisu početnice, ali su dobre ove dve knjige:<<
Dali se zna gde se mogu nabaviti ?
---POZDRAV---
---BSTEVAN---
clipper.128bstevan,
Ovim javljanjem želim da predstavim funkciju MYBROW().
Sam naziv podseća na funkciju BROWSE(), i sve komande iz BROWSE()
rade i u MYBROW().
Razlika je sada što nema više dosadnih poruka poput
bof,eof,Record itd.
Ali nebih zauzimao više ovde prostora o funkciji
MYBROW(), dovoljno je skinuti datoteku mybrow.zip, i videti šta
pruža funkcija MYBROW().
Sva ostala uputstva u vezi funkcije MYBROW(), možete
pročitati u nekom editoru iz fajla readme.txt,a sam rad funkcije
startovanjem demo.exe -fajla.
Način pozivanja funkcije MYBROW(),možete videti iz
demo.prg -fajla.
---POZDRAV---
---BSTEVAN---
mybrow.zipclipper.129ppekovic,
-> #128, bstevan>> Ovim javljanjem želim da predstavim funkciju MYBROW().
>>Sam naziv podseća na funkciju BROWSE(), i sve komande iz BROWSE()
>>rade i u MYBROW().
Pošto je bstevan propustio da kaže, datoteka prikačena uz poruku 5.128 je
demo verzija funkcije mybrow(). Za kompletnu verziju se treba obratiti autoru,
a dobiće se verovatno uz izvesnu materijalnu nadoknadu.
Paya
clipper.130nbatocanin,
Kakva su vam iskustva sa novim Clipper-om? Interesuje me na kakve
probleme nailazite. Ja sam veoma zadovoljan. Svi moji stari programi
sada bez greske rade, a jedan veoma veliki (oko 900K EXE) radi i
bolje (S'97 mi je pravio neke probleme, a 5.01 to savrseno radi).
Ja sam naisao na sledece probleme:
1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a program linkuje
sa PLL opcijom, Clipper javlja da je los format datoteke. Kad se
izbaci DOS=HIGH, sve savrseno radi.
2. Postoji odredjena nekompatibilnost u sintaksi koja je morala da
usledi zbog veoma klimave sintakse starog Clipper-a. Na primer:
SUM ALL (x+y)*z TO s
Ovde nije jasno da li treba sabrati izraz (x+y)*s za sve slogove ili
All(x+y)*s - tj. da li je ALL funkcija ili oznaka za scope. Zato sad
treba pisati:
SUM (x+y)*z TO s ALL
3. Desava se da se program veoma nekontrolisano ponasa - da gubi
vrednost nekih promenljivih, ... - a da sve nestane nekom trivijalnom
intervencijom kao sto je promena naziva promenljive. Uzrok jos nije
otkriven, ali mi lici na neke bagove verzije S'87.
Pozdrav, Nenad
clipper.131hercog,
-> #130, nbatocanin
Evo ti jos nekih , cini mi se , bagova clippera 5.01
1. Blokira kod izvrsavanja naredbe release
2. Ponekad pri indeksiranju datoteke izbrise sadrzaj te
datoteke i njenu strukturu , na disku ostavi samo njeno
ime.
3. ima toga jos al ne mogu sada da se setim
pozdrav Hercog
clipper.133ppekovic,
-> #130, nbatocanin>> Kakva su vam iskustva sa novim Clipper-om? Interesuje me na kakve
>> probleme nailazite. Ja sam veoma zadovoljan.
I ja sam uglavnom zadovoljan osim jedne sitnice (?). Pogledajte
sledeći program:
use baza
č 10,10 get prvo
č 12,10 get drugo
read
? prvo
? drugo
use
Kreirajte DBF baza sa poljima:
PRVO C 10
DRUGO N 8 2 // mogu i druge definicije
i ubacite jedan proizvoljan zapis.
Po startovanju programa ćete dobiti dva GET-a. Promenite vrednost
bilo kog od njih, pređite na drugo polje i pritisnite ESC.
AHA! iako je pritisnut ESC, vrednost polja je promenjena! To
zahteva da se get/read uvek radi sa memorijskim promenljivima, pa da
se ispituje da li je pritisnut ESC pa ako nije da se vrednosti
memorijskih promenljivih prebace u bazu.
Paya
clipper.134ppekovic,
-> #133, ppekovic Međutim, ja sam nailazio na mnogo veće probleme sa DEBUGER-om nego
sa samim compiler-om. Konkretno, vrlo često mi se desi da se u sred
rada source izgubi sa ekrana. Tj. brojevi linija su tu, trace lepo
radi i ide po pravimlinijama, ali teksta nema. To se dešava kada u
sred programa pređete u neki drugi direktorijum, što se može rešiti
stavljanjem punog path-a za program, ali dešava se i u drugim
slučajevima koje je teško rešiti. Jedan od takvih je kad naiđem na deo
za štampanje tj. komande set device to printer. Onda debuger poludi.
Gubljenje source-a mi se dešavalo i u još nekim slučajevima kod
kojih nisam uspeo da otkrijem zbog čega se to desilo.
Dalje, Debuger ima probleme sa dužim modulima. Tj. čim je modul
duži od xx K, kaže da nemože da ga svari.
Paya
clipper.135beki,
Ja sam dusom i telom Clipperas ali jedan moj dobar prijatelj koji
nema modem i nije na Sezamu zamolio me je da uputim sledece pitanje do
FoxPro-ovaca dusom i telom:
Kakva su iskustva sa FoxPro V2, sa Distribution Kit-om,
sa C-API za FoxPro V2 i sa svim ostalim sto ide uz njega.
Unapred hvala od mene i od mog prijatelja Dragana
Beki
clipper.136vili,
-> #131, hercog
>
> 1. Blokira kod izvrsavanja naredbe release
Kod mene RELEASE savrseno dobro radi!
_
O
/|\
/ \
clipper.137vili,
-> #133, ppekovic
> AHA! iako je pritisnut ESC, vrednost polja je promenjena!
Mislim da je to namerno tako uradjeno i da to nije "bug".
It's not a bug, it's a feature!. Uostalom u manualu pise:
ESC - Terminate READ without saving current GET
^^^^^^^
> To zahteva da se get/read uvek radi sa memorijskim
> promenljivima, pa da se ispituje da li je pritisnut ESC pa
Mislim da je tako sigurnije. U manualu se predlaze nesto slicno ovome:
USE baza
memvar->podatak = baza->podatak
@ 10,10 GET memvar->podatak
READ
IF (LASTKEY() != K_ESC) .AND. UPDATED()
REPLACE baza->podatak WITH memvar->podatak
ENDIF
_
O
/|\
/ \
clipper.138vili,
Nedavno sam download-ovao:
The 3PX Clipper Extended Functions Library, Version 5.0
Ta biblioteka je za Clipper Summer'87. Uz tu biblioteku se nalazi i
DEMO program. Probao sam da taj DEMO kompajliram i linkujem sa
CLIPPER 5.01, ali nije islo. Tj. DEMO.PRG se bez problema kompajlira,
ali RTLink javlja sledece:
warning wcl0001:Linking Clipper Summer'87 module 'XMENU' with Clipper5.0 linker
warning wcl0001:Linking Clipper Summer'87 module 'XMISC' with Clipper5.0 linker
warning wcl0001:Linking Clipper Summer'87 module 'XSTRING' with Clipper5.0
linker
UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH:
SYMBOL FIRST REFERENCE
------ ---------------
'_VSTD' 3PX.LIB
'SUMMER87' 3PX.LIB
Kako taj DEMO da linkujem sa CLIPPER-om 5.01?
Da li je to uopste moguce? Koje opcije za compiler i linker da upotrebim?
P.S. Mene, ustvari, interesuju samo funkcije za rad sa misem.
Kako da pokrenem misa u svojim aplikacijama?
_
O
/|\
/ \
clipper.139zkrstic,
-> #138, vili> Kako taj DEMO da linkujem sa CLIPPER-om 5.01?
> Da li je to uopste moguce? Koje opcije za compiler i
> linker da upotrebim?
Samo sa Clipperom 87. S njim radi. A i nije nešto :(
> P.S. Mene, ustvari, interesuju samo funkcije za rad sa
> misem. Kako da pokrenem misa u svojim aplikacijama?
Bejaše neki lib na tanjugu, al' ja nikad nisam uspeo
da ga skinem jer je bag u zipu :(((
Pozdrav, čeljko
clipper.140ppekovic,
-> #137, vili>> Mislim da je to namerno tako uradjeno i da to nije "bug".
>> It's not a bug, it's a feature!. Uostalom u manualu pise:
>>
>> ESC - Terminate READ without saving current GET
Sve je to lepo al je lepše bilo onako kako je radio '87. OK. je da radiš sa
mem. promenljnivima kada umećeš novi slog, ali kada ispravljaš postojeći,
lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane kako je,
ako izađeš legalno, promene se automatski zapišu i super!
Paya
clipper.141ndragan,
-> #140, ppekovic/ lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane
/ kako je,
Ne ostaje - ako izmenjaš šest polja, a na sedmom zvizneš iskejp, prvih šest
je već zapisano. I za ovo je bolje raditi sa memorijskim kopijama.
Bue_ NDragan
clipper.142zdimic,
Hitno mi je potreban razvojni sitem za clipper (87 ?) pod nazivom UI,
a cujem da postoji i neki jos mocniji sys za clipper 5.
U razmenu nudim npr. Fox pro 2.0, gomilu LIBs za clipper itd.
Hvala,
Zoran
clipper.143ppekovic,
-> #141, ndragan>>/ lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane
>>/ kako je,
>>
>>Ne ostaje - ako izmenjaš šest polja, a na sedmom zvizneš iskejp, prvih šest
>>je već zapisano. I za ovo je bolje raditi sa memorijskim kopijama.
Znam da to tako sada radi, ali sam rekao da bi bilo bolje drugacije, tj.
onako kako je radio clipper '87 (?).
Paya
clipper.144lazo,
Hello everybody!
Moj problem je slijedeći: u DBEDIT() funkciji pri pozivanju
korisničke funkcije se prenose dva parametra "status" i
"fld_ptr". Ovaj drugi ukazuje na tekuće polje u strukturi
datoteke kojem se može pristupiti upotrebom funkcije
FIELD(). Ovo piše u knjizi. Po meni, ovaj parametar je
numerik i sadrži redni broj sloga, kome onda pomoću funkcije
FIELD(red_br_polja) pristupam tj. editujem ga. Problem sam
riješio tako što sam postavio varijablu koja se uvećava,
odnosno umanjuje pri pomjeranju kursorske strlice. U
ovisnosti od tog broja pristupam odgovarajućem polju.
Slabost ovoga je kad neko pritisne recimo tipku za
pomjeranje u desno i ne pušta dok na ekranu ne dobije
željeno. U tom slučaju obavezno se desi da je broj koji se
uvečava za jedan manji od stvarne pozicije. Kada bih mogao
očitati sadržaj pomenutog parametra to se, pretpostavljam,
ne bi dešavalo i smanjio bih svoju funkciju za 10-tak
(ne)potrebnih IF-ova.
Prema tome, zna li neko kako da se preuzme vrijednost iz
ovog parametra (fld_ptr).
Mickey.
clipper.145nbatocanin,
-> #131, hercog> 2. Ponekad pri indeksiranju datoteke izbrise sadrzaj te
> datoteke i njenu strukturu , na disku ostavi samo njeno
> ime.
Ne mogu da verujem! Meni se desavalo da zabrlja kod indeksne
datoteke, ali da izbrise glavnu... Ako imas program koji to radi,
rado bi ga pogledao.
clipper.146nbatocanin,
-> #134, ppekovic> To se
> desava kada u sred programa predete u neki drugi
> direktorijum, sto se moze resiti stavljanjem punog path-a
> za program, ali desava se i u drugim slucajevima koje je
> tesko resiti. Jedan od takvih je kad naidem na deo za
> stampanje tj. komande set device to printer. Onda debuger
> poludi.
Mozes u OPTIONS da postavis sve kataloge gde ti se nalaze programi,
pa ces imati brojeve linija. Na primer: \BASE\SYS;\PROG\UK itd. Meni
SET DEVICE lepo saradjuje sa dibagerom.
clipper.147nbatocanin,
-> #136, vili> Kod mene RELEASE savrseno dobro radi!
Zasto uopste i koristite RELEASE?
clipper.148nbatocanin,
-> #138, vili> P.S. Mene, ustvari, interesuju samo funkcije za rad sa
> misem. Kako da pokrenem misa u svojim aplikacijama?
Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper biblioteku
koja to omogucava (na primer, Flipper, DGE, ...). Drugi nacin je da
sam pravis funkcije za komunikaciju.
clipper.149nbatocanin,
-> #144, lazo> Ovo pise u knjizi. Po meni, ovaj parametar je
> numerik i sadrzi redni broj sloga, kome onda pomocu
> funkcije FIELD(red_br_polja) pristupam tj. editujem ga.
Drugi parametar u funkciji koju poziva DBEDIT je redni broj KOLONE
koja je trenutno aktivna, pa ce FIELD korektno raditi samo ako su u
DBEDIT-u navedena REDOM polja datoteke. Najjednostavnije resenje je
da definises niz odgovarajucih polja u proceduri u kojoj definises
DBEDIT parametre i kasnije radis na sledeci nacin:
...
PRIVATE Fields[n]
Fields[1] = "IME"
...
PRIVATE Column[n]
Column[1] = "Left(IME, 20)"
DBEDIT (...)
Sada, ako su ti parametri funkcije MODE i INDEX, izraz Fields[Index]
oznacava tekuce polje, a Column[Index] "sliku" polja na ekranu.
clipper.150nbatocanin,
-> #143, ppekovicMislim da mozes veoma lako da promenis GET sistem da radi kako ti
odgovara - pogledaj datoteku GETSYS.PRG.
Pozdrav, Nenad
clipper.151bulaja,
*** new files *** \ibmpc\program\nf*.*
Nanforum Toolkit je velika zbirka raznih funkcija za Clipper 5, a sve su
date u souce kodu (Clipper, C ili ASM). Napisali su je (biblioteku)
korisnici sa Compuserve-ovog Nantucket Foruma (technical support za
Clipper), blah balh ... napisacu nesto vise ovih dana, posto sam upravo
uploadnuo datoteke pa se zasluzeno odmaram sada ;).
Spisak funkcija je poveci, evo ga u sledecoj poruci (nadam se da se niko
nece ljutiti ;) zbog duge poruke, ali ovaj spisak se ne nalazi nigde u
dokumentaciji vec sam ga ja skidao iz NG-a pa ce svima koristiti).
Bulaja.
clipper.152bulaja,
Nanforum Toolkit v2.0
═════════════════════
Array
────────────────
FT_AADDITION() Add elements unique of source array to target array
FT_AAVG() Average numeric values in an array
FT_ADESSORT() Sort an array in descending order
FT_AEMAXLEN() Find longest element within an array
FT_AEMINLEN() Find shortest element within an array
FT_AMEDIAN() Find middle value in array, or average of two middle values
FT_ANOMATCHES() Find the number of array elements meeting a condition
FT_AREDIT() 2 dimensional array editing function using TBrowse
FT_ASUM() Sum the elements of an array
FT_RESTARR() Restore a Clipper array from a disc file
FT_SAVEARR() Save Clipper array to a disc file.
════════════════
Conversion
────────────────
FT_BYT2BIT() Convert byte to string of 1's and 0's
FT_BYT2HEX() Convert byte to hexadecimal version of its binary value
FT_D2E() Convert decimal to scientific notation
FT_DEC2BIN() Convert decimal to binary
FT_E2D() Convert scientific notation string to a decimal
FT_ESCCODE() Convert Lotus style escape codes
FT_HEX2DEC() Convert a hex number to decimal
FT_INVCLR() Get the inverse of a color
FT_NTOW() Translate numeric value to words
FT_SQZN() Compress a numeric value into a character string
FT_STOD() Convert a date string to a Clipper date data type
FT_UNSQZN() Uncompress a numeric compressed by FT_SQZN()
FT_XTOY() Convert from any data type to any other data type
════════════════
DOS/BIOS
────────────────
FT_CHDIR() Change the current directory
FT_DEFAULT() Retrieve and optionally change the current default drive
FT_DOSVER Return the current DOS major and minor version as a string
FT_DSKFREE() Return the amount of available disk space
FT_DSKSIZE() Return the maximum capacity of a fixed disk
FT_FLOPTST() Test diskette drive status
FT_HANDCNT() Count number of available DOS (not network) file handles
FT_INP() Retrieve a byte from a specified I/O port
FT_INT86() Execute a software interrupt
FT_ISPRINT() Check printer status
FT_ISSHARE() Determine if DOS "Share" is installed
FT_MKDIR() Create a subdirectory
FT_OUTP() Write a byte to a specified I/O port
FT_PEEK() Retrieve a byte from a specified memory location.
FT_POKE() Write a byte to a specified memory location
FT_REBOOT() Force a warm or cold boot
FT_RMDIR() Delete a subdirectory
FT_SETDATE() Set the DOS system date
FT_SETTIME() Set the DOS system time
FT_SYSMEM() Determine the amount of conventional memory installed
FT_TEMPFIL() Create a file with a unique name
════════════════
Database
────────────────
FT_FDEC() Return the number of decimals in a numeric (type "N") field.
FT_FEMPTY() Determine if a field is empty, i.e., contains no value.
FT_FEXIST() Check for the existence of a field.
FT_FLEN() Return a field's length.
FT_FNUM() Return a field's ordinal position given the field name.
FT_FPLACE() Write a new value to a field.
FT_FTYPE() Return a field's type, given field name or ordinal position
FT_FVAL() Return the value of a field.
FT_FVALLEN() Return the length of the value in a field.
════════════════
Date/Time
────────────────
FT_ACCTADJ() Adjust beginning or ending fiscal pd. dates to acctg. dates
FT_ACCTMONTH() Return accounting month data
FT_ACCTQTR() Return accounting quarter data
FT_ACCTWEEK() Return accounting week data
FT_ACCTYEAR() Return accounting year data
FT_ADDWKDY() Return true number of days to add given number of workdays
FT_CALENDAR() Display date/time calendar, find a date, return calendar dat
FT_CIV2MIL() Convert usual civilian format time to military time.
FT_DATECNFG() Set beginning of year/week for FT_ date functions
FT_DAYOFYR() Return calendar, fiscal or accounting day data
FT_DAYTOBOW() Calculate no. of days between date and beginning of week
FT_DOY() Find number of day within year
FT_EASTER() Return the date of Easter
FT_ELAPMIN() Return difference, in minutes, between two mil format times.
FT_ELAPSED() Return elapsed time between two days and/or times
FT_ELTIME() Compute difference between times in hours, minutes, seconds.
FT_FDAY() Return first day of the month
FT_LDAY() Return last day of the month
FT_MADD() Add or subtract months to/from a date
FT_MIL2CIV() Convert time in military format to civilian format.
FT_MIL2MIN() Convert time in military format to number of minute of day.
FT_MIN2DHM() Convert numeric minutes to days, hours and minutes.
FT_MIN2MIL() Convert minute of day to military format time.
FT_MONTH() Return Calendar or Fiscal Month Data
FT_QTR() Return Calendar or Fiscal Quarter Data.
FT_SYS2MIL() Convert system time to military time format.
FT_WEEK() Return calendar or fiscal week data
FT_WORKDAYS() Return number of work days between two dates
FT_WOY() Find number of week within year
FT_YEAR() Return calendar or fiscal year data
════════════════
Environment
────────────────
FT_COM3OR4() Enable use of COM3 and/or COM4 on IBM/PC compatables.
FT_DIR2DB() Create .DBF of directory files, using DOS filespec
FT_EXIST() Test for existence of drive and/or subdirectory
FT_GETE() Return the entire current environment
FT_LINKED() Determine if a function was linked in
FT_ORIGIN() Report the drive, path and filename of the executing program
FT_RESTSETS() Restore status of all SET command settings
FT_SAVESETS() Save the status of all the SET command settings
FT_SETCENTURY() Check/Set the CENTURY Setting
FT_TREE() Locate all directories and subdirectories on a drive
FT_WHEREIS() Locate all occurrences of a filespec on a drive
════════════════
File I/O
────────────────
FT_DFCLOSE() Close file displayed by FT_DISPFILE()
FT_DFSETUP() Set up parameters for FT_DISPFILE()
FT_DISPFILE() Browse a text file
FT_FEOF() Determine when end of text file is encountered
FT_FGOBOT() Go to the last record in a text file
FT_FGOTO() Move record pointer to specific record in a text file
FT_FGOTOP() Go to the first record in a text file
FT_FLASTREC() Determine the no. of records in the currently selected text
FT_FREADLN() Read a line from the currently selected text file
FT_FRECNO() Return the current record number of a text file
FT_FSELECT() Select a text file workarea
FT_FSKIP() Move the record pointer to a new position in a text file
FT_FUSE() Open or close a text file for use by the FT_F* functions
════════════════
Game
────────────────
FT_PEGS() FT_PEGS GAME (all work and no play...)
════════════════
Keyboard/Mouse
────────────────
FT_ALT() Determine status of the Alt key
FT_CAPLOCK() Determine and optionally change the status of CapLock key
FT_CTRL() Determine status of the Ctrl key
FT_MBUTPRS() Retrieve button press status
FT_MBUTREL() Get mouse button release information
FT_MCURSOR() Set the mouse cursor
FT_MDBLCLK() Return true if a double click was detected
FT_MDEFCRS() Define the mouse cursor
FT_MGETPOS() Get mouse cursor position and button status
FT_MGETX() Get mouse cursor row position
FT_MGETY() Get mouse cursor column position
FT_MHIDECRS() Decrement internal mouse cursor flag and hide mouse cursor
FT_MINREGION() Test if the mouse cursor is in the passed region
FT_MMICKEYS() Get mickeys
FT_MRESET() Reset mouse driver and return status of mouse
FT_MSETPOS() Position the mouse cursor
FT_MSHOWCRS() Increment internal cursor flag and display mouse cursor
FT_MXLIMIT() Set vertical bounds of mouse travel
FT_MYLIMIT() Set horizontal bounds of mouse travel
FT_NUMLOCK() Return status of NumLock key
FT_PRTSCR() Enable or disable the Print Screen key
FT_PUTKEY() Stuff a keystroke into the keyboard buffer
FT_SCANCODE() Wait for keypress and return keyboard scan code
FT_SETRATE() Set the keyboard delay and repeat rate on PC/AT & PS/2
FT_SHIFT() Determine status of shift key
FT_SINKEY() Replacement for INKEY() that tests for SET KEY procedures
════════════════
Math
────────────────
FT_GCD() Calculate greatest common divisor of two numbers
FT_NETPV() Calculate net present value
FT_RAND1() Generate a random number
FT_ROUND() Rounds a number to a specific place
════════════════
Menus/Prompts
────────────────
@...PROMPT Define a menu item for use with MENU TO
FT_ACH2TB() Replace ACHOICE() with a Tbrowse object
FT_ADDER() Pop up a simple calculator
FT_BLINK() Display a blinking message on the screen
FT_BRWSWHL() Browse an indexed database limited to a while condition
FT_CLRSEL() User Selectable Colour Routine
FT_DISPMSG() Display a message and optionally waits for a keypress
FT_FILL() Declare menu options for FT_MENU1()
FT_MENU1() Pulldown menu system
FT_MENU2() Vertical lightbar menu
FT_MENUTO() Execute light bar menu using prompts created with FT_PROMPT(
FT_PENDING() Display same-line pending messages after a wait.
FT_PICKDAY() Picklist of days of week
FT_PROMPT() Define a menu item for use with FT_MENUTO()
FT_XBOX() Display a self-sizing message box and message
MENU TO Execute light bar menu using prompts created with @...PROMPT
════════════════
NetWare
────────────────
FT_ENDCAP() Cancel a specific NetWare print queue capture
FT_LOGOUT() Logout from all currently connected NetWare file servers
FT_NOVDMP2() Determine Novell server's dynamic memory area 2 availability
FT_NOVPURGE() Purge all deleted files on a Novell server
FT_NWLSTAT() Return the current Novell NetWare logical station number
FT_NWSEMCLOSE() Close a NetWare semaphore
FT_NWSEMEX() Examine a NetWare semaphore's value and open count
FT_NWSEMLOCK() Perform a semaphore "lock"
FT_NWSEMOPEN() Open or create a NetWare semaphore
FT_NWSEMSIG() Signal a NetWare semaphore (increment)
FT_NWSEMWAIT() Wait on a NetWare semaphore (decrement)
FT_NWUID() Return the current Novell NetWare User ID
FT_PFLUSH() Flush a NetWare capture buffer
FT_TTSABORT() Abort explicit and implicit NetWare TTS transactions
FT_TTSAVAIL() Check whether default Novell file server supports TTS
FT_TTSBEGIN() Begin explicit transaction under NetWare's TTS
FT_TTSEND() End explicit or implicit transaction under NetWare's TTS
FT_TTSSTAT() Verify if TTS transaction has been written to disk
════════════════
String
────────────────
FT_AT2() Find position of the nth occurrence of a substring
FT_BITCLR() Clear (reset) selected bit in a byte
FT_BITSET() Set selected bit in a byte
FT_BYTEAND() Perform bit-wise AND on two ASCII characters (bytes)
FT_BYTENEG() Perform bit-wise negation on an ASCII character
FT_BYTENOT() Perform bit-wise NOT on an ASCII character (byte)
FT_BYTEOR() Perform bit-wise OR on two ASCII characters (bytes)
FT_BYTEXOR() Perform bit-wise XOR on two ASCII characters (bytes)
FT_FINDITH() Find the "ith" occurrence of a substring within a string
FT_ISBIT() Test the status of an individual bit
FT_ISBITON() Determine the state of individual bits in a number
FT_METAPH() Convert a character string to MetaPhone format
FT_NOOCCUR() Find the number of times one string occurs in another
FT_PCHR() Convert printer control codes
FT_PROPER() Convert a string to proper-name case
════════════════
Video
────────────────
FT_ADAPTER() Report the type of video adapter installed
FT_CLS() Clear screen
FT_GETMODE() Get the video mode
FT_GETVCUR() Return info about the cursor on a specified video page
FT_GETVPG() Get the currently selected video page
FT_RESTATT() Restore the attribute bytes of a specified screen region.
FT_REVATTR() Reverse colors of specified screen coordinates
FT_REVCHR() Reverse the color of a single character on the screen
FT_RGNSTACK() Push or pop a saved screen region on or off the stack
FT_RSTRGN() Restore region of the screen saved with FT_SAVRGN()
FT_SAVEATT() Save the attribute bytes of a specified screen region.
FT_SAVRGN() Save a screen region for later display
FT_SETATTR() Change color attributes of screen region
FT_SETMODE() Set the video mode
FT_SETVCUR() Set the cursor position on a specified video page
FT_SETVPG() Set the current video page
FT_SHADOW() Draw a non-destructive shadow on the screen
FT_VIDSTR() Display string on screen in specified attribute
FT_WRTCHR() Display character on screen
════════════════
clipper.153hercog,
-> #136, vili
Meni uglavnom blokira kod release promenljive u koju
je snimljen ekran.
NPR:
save screen to ekran
................
...........
............
restore screen from ekran
release ekran <- ovde blokira
pozdrav Hercog
clipper.154hercog,
-> #145, nbatocanin
A sto je jos veci stos , glavnu datoteku ne izbrise uvek
vec samo ponekad, sto znaci da nekolko puta sve uradi ok,
a sledeci put je zezne.
pozdrav Hercog
clipper.155hercog,
Koja je najbolja biblioteka za Clipper 5.01 koja mu daje
naredbe za grafiku, gde se moze nabaviti i po kojoj ceni.
pozdrav Hercog
clipper.156bulaja,
-> #153, hercog│save screen to ekran
│................
│...........
│............
│restore screen from ekran
│release ekran <- ovde blokira
└───
A kako je deklarisana promenjljiva [ekran] (public, local, static,...)?
Ako je slucajno static onda nije ni cudo sto se zaglavljuje, a ako je
local (ili private) onda ti release i ovako nicemu ne sluzi.
clipper.157ppekovic,
-> #154, hercog>> A sto je jos veci stos , glavnu datoteku ne izbrise uvek
>> vec samo ponekad, sto znaci da nekolko puta sve uradi ok,
>> a sledeci put je zezne.
U BGD-u znam puno ljudi koji rade sa novim clipper-om, pratio sam i clipper
conf. na BIX-u, i cuo sa jos mnogo strana, a i sam naisao na neke bug-ove
clipper-a 5.01, ali niko se nije zalio na ono sto se ti zalis. Probaj da nadjes
neku logiku kada se to desava pa da vidimo zbog cega se desava, jer kvarovi
tipa, zeza po nekad, su znas i sam, najgori. S druge strane, uzrok problema
moze biti i cache program npr., ili slicni rezidentni programi.
Paya
clipper.158vkrstonosic,
-> #153, hercog>> save screen to ekran
>> ................
>> ...........
>> ............
>> restore screen from ekran
>> release ekran <- ovde blokira
Koristi ekran=savescreen(1,1,23,79)
.......
restscreen(1,1,23,79, ekran)
Ovo radi provereno i ne pravi nikakve probleme, a i moguće je
snimiti samo deo ekrana.
clipper.159ndragan,
-> #148, nbatocanin/ Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper biblioteku
FoxPro sam od sebe radi sa mišem, ako je učitan drajver. No frx.
clipper.160bulaja,
-> #158, vkrstonosic│ekran=savescreen(1,1,23,79)
└─── ^ ^ ^^
(0,0,24,79)
clipper.161vili,
-> #148, nbatocanin>
> Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper
> biblioteku koja to omogucava (na primer, Flipper, DGE,...).
Gde da nadjem Flipper, DGE,... . Jel to radi sa 5.01?
> Drugi nacin je da sam pravis funkcije za
> komunikaciju.
To ne bih. Nemam vremena da radim nesto sto je neko vec uradio.
_
O
/|\
/ \
clipper.162vili,
-> #142, zdimicImam UI. Koristio sam ga neko vreme, ali sam shvatio da mi
ne pomaze mnogo. Kasnije sam ga koristio samo za pravljenje
maski za unos. Sad je zipovan i cami na disketi.
Mozda su neki drugi razvojni sistemi bolji, ali ako su kao
UI onda slaba vajda od njih (mislim da je QuickSilver neki
takav sistem za Clipper,a mozda i nije?).
(UIF.zip = 294Kbyte)
_
O
/|\
/ \
clipper.163vkrstonosic,
-> #160, bulaja>> (0,0,24,79)
Oops, navika ;) uglavnom ne koristim ceo ekran.
clipper.164makas,
-> #154, hercog> A sto je jos veci stos , glavnu datoteku ne izbrise uvek
> vec samo ponekad, sto znaci da nekolko puta sve uradi ok,
> a sledeci put je zezne.
Da ne koristiš slučajno DOS 4.00 i FASTOPEN? Kod njega je
pravio slične brljotine i Clipper '87. Ako je to u pitanju izbaci
FASTOPEN i sve će biti u redu.
Pozdrav
█▀▀▀▀▀▄ ▄▀▀▀█ █▄▀▀ ▄▀▀▀█ ▄▀▀
█ █ █ ▀▄▄ █ █▀▄▄ ▀▄▄ █ ▀▄▄▀▀▄
▄▄▄ ▄▄▄ ▄▄ ▄▄ ▄▄ ▄ ▄ ▄JILL▄▄▄▄▀
clipper.165sveta,
-> #160, bulaja││ ekran=savescreen(1,1,23,79)
│ └─── ^ ^ ^^
│ (0,0,24,79)
└─────
A sta se desava sa 0,60 ; 0,61 ; 0,62 ? Meni ih izbrise
kod prvog GET-a :(.
clipper.166nbatocanin,
-> #158, vkrstonosic> Koristi ekran=savescreen(1,1,23,79)
Pogodi kako se pretprocesira SAVE SCREEN TO Ekran!
clipper.167nbatocanin,
-> #157, ppekovic> Probaj da nadjes neku logiku kada se to desava pa
> da vidimo zbog cega se desava, ...
U tome imas nasu nepodeljenu podrsku!
clipper.168nbatocanin,
-> #155, hercog> Koja je najbolja biblioteka za Clipper 5.01 koja mu daje
> naredbe za grafiku, gde se moze nabaviti i po kojoj ceni.
Ne znam koja je najbolja, ja koristim DGE (bice tekst u novim
"Racunarima"). Cena je VRLO priblizno oko 200-300$, nabavljena je
preko firme u SAD. Na sajmu u Novom Sadu ovu biblioteku je nudila
firma SoftWell (021/51-999).
Gledao sam papire za biblioteku Flipper i mislim da je vredi
pogledati.
clipper.169nbatocanin,
-> #161, vili> Gde da nadjem Flipper, DGE,... . Jel to radi sa 5.01?
021/51-999 SoftWell, Da.
clipper.170vkrstonosic,
-> #166, nbatocanin>>> Koristi ekran=savescreen(1,1,23,79)
>>
>> Pogodi kako se pretprocesira SAVE SCREEN TO Ekran!
Pretpostavljam :)
Jako često koristim savescreen i nikada do sada nisam imao
nikakvih problema.
clipper.171dvidovic,
Ima li ŰOneko iskustva sa "Siserom" (ili kako vec bese)
razv_.ůÚ]ojnim sistemom za Clipper? Ovo pitam u ime
drugara, koji bi da proba to cudo, ali o njemu nista
ne zna. Vredi li truda, para, etc.
Hvala unapred!
Pozdrav Dule
clipper.172nbatocanin,
-> #165, sveta> A sta se desava sa 0,60 ; 0,61 ; 0,62 ? Meni ih izbrise
> kod prvog GET-a :(.
Postavi na pocetak programa SET SCOREBOARD OFF. Time iskljucujes da
ti se ispisuje status Insert/Overtype.
clipper.173nbatocanin,
-> #143, ppekovic> Znam da to tako sada radi, ali sam rekao da bi bilo bolje
> drugacije, tj. onako kako je radio clipper '87 (?).
Jesi li bas siguran? Ja upravo probao i - neces verovati - i Summer
'87 radi isto ovako! Eto neotkrivenog gremlinija u vasim starim
programima!
Pozdrav, Nenad
clipper.174hercog,
-> #154, hercog
Nikako ne mogu da provalim kada se to desi (i zbog cega).
Jedino me program pozdravi sa necim kao CORUPTION DBF SPISAK.DBF.
A sto je najsmesnije clipper me zevzeci sa samo 2 datoteke,mada
se u tom delu programa indeksira jos jedno 6-7 datoteka, a cli-
pper uvek zajebe datoteku SPISAK.DBF ili SPPR.DBF. Vise mi
nista nije jasno.
pozdrav Hercog
clipper.175zkrstic,
Aloooooooo,
Skidajte onaj TS.ZIP iz DEMO direktorijuma
da neko ne vidi, slučajno. Postoji opasnost:
1. Da vidi neki stranac, pa da pomisli kako
ovde niko Clipper vido' nije
2. Da neko, ko želi da uči Clipper odustane od
istog, jer su mu mogućnosti vrlo skromne
3. Neko može slučajno da vidi program pa da umre
od smeha.
Pozdrav, čeljko
P.S.
Tako mi i treba kad sam hteo da špijuniram konkurentske programe
P.P.S.
Umesto da leeepoo chatujem 20 minuta, ja skidam kojekakve kara-
kondžule.
clipper.176lazo,
-> #149, nbatocanin**> Drugi parametar u funkciji koju poziva DBEDIT je redni
**> broj KOLONE koja je trenutno aktivna, pa ce FIELD
**> korektno raditi samo ako su u DBEDIT-u navedena REDOM
**> polja datoteke. Najjednostavnije resenje je
Ono što meni treba i jeste broj trenutno aktivne kolone
(dobro to ne isključuje silne if-ove koji će onda ukazivati
na određeno polje). Meni je problem što sam rješavanjem
problema sa uvećavanjem I+1 na pritisak kursorske strlice
dobijao trenutno aktivnu kolonu. Problem je kada se drži
konstantno kurs. strelica pa kursor ode polje više nego što
je u stvari uvećana vrijednost promjenljive I. Tako umjesto
da dobijem masku za ispravku tekuće, ja dobijem masku
prethodne kolone na mjestu aktivne (trebalo bi da je
aktivna, ali nije). E moj je problem što ja ne znam kako da
dođem do vrijednosti tog drugog parametra uopšte.
**> Sada, ako su ti parametri funkcije MODE i INDEX, izraz
**> Fields[Index] oznacava tekuce polje, a Column[Index]
**> "sliku" polja na ekranu.
Vjerovatno bi dosad napravio nešto slično što si mi
predložio kad bih ja znao kako uopšte da dođem do
odgovarajućeg parametra, tj. do njegove vrijednosti. Zato
bih te molio da mi ili detaljnije objasniš kako se preuzima
vrijednost iz tog drugog parametra uopšte ili da pošalješ uz
poruku kratak prg (kompletan bez ...) iz koga bi ja onda
shvatio kako se to radi.
Mickey.
clipper.177dpaun,
Clipper braco i sestre!
Da li je neko probao u 5.01 da funkcijom ASORT()
sredi fajlove u direktorijumu, ali prema extenziji?
dPaun
clipper.178nbatocanin,
-> #176, lazoNisam mogao da nadjem neki jednostavan primer zato sto dosta dugo ne
koristim DBEDIT funkciju. Ipak, saljem ti nesto i nadam se da ce ti
pomoci. Pogledaj jos jednom u uputstvu.
Pozdrav, Nenad
dbed.prgclipper.179nbatocanin,
-> #177, dpaunPROC Main
d := Directory ("*.*")
aSort (d,,, { |x, y| Ext(x[1]) > Ext(y[1]) } )
// ...
RETURN
FUNC Ext (n)
RETURN IF ( (i := At (".", n)) <> 0, SubStr (n, i+1), "")
Moze ?
clipper.180mandrejevic,
-> #152, bulaja> Nanforum Toolkit v2.0
> ═════════════════════
^^^^
Nece da radi sa Clipperom 5.0 Rev.1.03 ? Ili bar nece od prve.
.RTLink prijavljuje :
UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH:
SYMBOL FIRST REFERENCE
------ ---------------
'CLIPPER501' NANFOR.LIB
Pozdrav milan (mandrejevic)
clipper.181hercog,
Jos jedna problem sa Clipperom 5.01:
Program sam razbio na 6 datoteka, kako bi se lakse
snalazio. U prvom programu se nalazi lista naredbi:
set procedure to pr1
set procedure to pr2
set procedure to pr3
set procedure to pr4
set procedure to pr5
Ali clipper prevede samo do pr4.
Ako zamenim mesta npr :
set procedure to pr5
set procedure to pr4
onda se kompajler zablokira.
Probao sam sve moguce kombinacije i u svakom slucaju mi
se desavalo isto.
pozdrav Hercog
clipper.182vkrstonosic,
-> #181, hercog>> Program sam razbio na 6 datoteka, kako bi se lakse
>> snalazio. U prvom programu se nalazi lista naredbi:
>>
>> set procedure to pr1
>> set procedure to pr2
>> set procedure to pr3
>> set procedure to pr4
>> set procedure to pr5
Zašto uopšte tako radiš? Ako je program podeljen u više datoteka,
dovoljno je da u glavnoj (koju prvu kompajliraš), staviš:
do pr1
do pr2
...
Ako ne postoje procedure pod tim imenima, kompajliraće ih sve
redom. Ovo redovno koristim i programi su mi razbijeni na dosta
delova.
clipper.183ndragan,
-> #181, hercog/ set procedure to pr4
/ onda se kompajler zablokira.
Da nema on neka ograničenja - koliko imena (i to baška lokalna, baška
globalna) ti se dotle nakupi? Koliko ti je duži pr4 od pr5 ili obratno? Nisam
poterao kliper već 4 godine, ali...
clipper.184bulaja,
-> #181, hercog│set procedure to pr1
│...
└───
A cemu ti sluzi #include ? Ili sto ne koristis make?
clipper.185nbatocanin,
-> #182, vkrstonosicInteresuje me zašto ne koristite neki MAKE? Da li znate koliko to
štedi vreme i olakšava stvari?
clipper.186vkrstonosic,
-> #185, nbatocanin>> Interesuje me zašto ne koristite neki MAKE? Da li znate koliko to
>> štedi vreme i olakšava stvari?
Razlog je vrlo jednostavan, spremam se da to počnem već godinu
dana, problem je u tome što je uvek danas, sutra nikako ne dolazi ;)
clipper.187dpaun,
Clipper braćo i sestre!
Evo malog primera šta mogu kad se dvoje spoje,
tj. GET i WHEN.
dPaun
get.zipclipper.188lazo,
-> #178, nbatocanin**> Nisam mogao da nadjem neki jednostavan primer zato sto
**> dosta dugo ne koristim DBEDIT funkciju. Ipak, saljem ti
**> nesto i nadam se da ce ti pomoci. Pogledaj jos jednom u
**> uputstvu.
Thanks, pomoglo je.
clipper.189dnikolic,
Zna li ko po kom algoritmu rade indexi u Cliperu i Dbase-u?
dn
clipper.190dejanr,
-> #189, dnikolic>> Zna li ko po kom algoritmu rade indexi u Cliperu i Dbase-u?
Imaš strukturu NTX datoteka u poruci 5.46, ako to nešto pomaže.
Više podataka o tome u knjizi "Clipper Programming Guide",
verovatno ima i na drugim mestima.
Koriste se B-stabla, koliko se sećam.
clipper.191dejanr,
Imao sam jednu bazu sa jako puno polja, čije sam sadržaje unosio sa
@ pozic1 GET polje1 VALID ff (polje1, parametri)
@ pozic2 GET polje2 VALID ff (polje2, parametri)
@ pozic3 GET polje3 VALID ff (polje3, parametri)
itd
ff je nekakva funkcija koja određuje da li uneta vrednost zadovoljava
uslove da se prihvati, u zavisnosti od parametara.
Bilo je, kako rekoh, mnogo polja sa dugačkim imenima, pa nije bilo baš
slatko stalno kucati ono ff (poljeNN) tj. još jednom prepisivati ime
polja koje je svega nekoliko znakova levo. Najzad sam napravio makro
u editoru koji to kao uradi. Zanima me ima li neko "regularno" rešenje
u Clipperu, da se kaže nešto kao VALID ff (ovo_polje, parametri) i da
se to onda odnosi na polje koje je u toj liniji unošeno?
clipper.192kanda,
-> #191, dejanr>> Bilo je, kako rekoh, mnogo polja sa dugačkim imenima, pa nije bilo
>> baš slatko stalno kucati ono ff (poljeNN) tj. još jednom prepisivati
>> ime polja koje je svega nekoliko znakova levo. Najzad sam napravio
>> makro
Pa, ako je problem u imenu, funkcija sama moze da zakljuci koje
polje se upravo unosi. pozove se readvar() i ona vrati ime polja koje se
unosi. evo naprimer, ovde VALID funkcija centrira tekst u polju :
a := b := space(12)
@ 2,5 get a valid pera()
@ 4,5 get b valid pera()
read
function pera
local r := readvar()
&r := padc(alltrim(&r), 12)
return .t.
clipper.193majkl,
-> #191, dejanr
TRHelp za READVAR() kaže:
Determines the name of the curent GET or MENU variable.
Returns the variable name as a character string.
Ovo rešava tvoj prblem, mada se sve ponovo svodi na jedan
makro :))
Pozdrav, Majkl
clipper.194nbatocanin,
-> #191, dejanrMožeš i sa:
FOR i := 1 TO n
Tmp := "polje" + AllTrim (Str (i,2,0))
@ i,0 GET &Tmp VALID ff ()
NEXT
Naravno, ako se polja zovu polje1, polje2, ...
clipper.196erol,
Pitanje za sve Clipper gurue.
Koristim Clipper : S87 verziju i ne mogu da rijesim sljedeci problem:
Prilikom formiranja i otvaranja novog indexa (nove ind. datoteke) na
tekucoj DBF datoteci, zatvore se indexi koji su tu vec bili jer ne mogu
dobiti informaciju kako se zovu vec otvvorene NTX datoteke..
Dakle pitanje je : Kako saznati ime indexne datoteke koja je aktivna
(otvorena ) uz tekucu DBF datoteku ?
Ili : Kako dodati jos jedan NTX file u listu vec otvorenih NTX-ova,
a da se ovi prethodni ne zatvore ?
HHitno je !!!!!
..
clipper.197dpaun,
-> #196, erol
Pogledaj detaljno naredbu SET ORDER TO.
dPaun
clipper.198radunovic,
Imam problema u radu sa dbeditom. Stavio sam ga u program i
ponasa se vrlo cudno(bar za mene:). Kada prvo udjem u mod za
unosenje podataka (gomila SAY i GET naredbi) i izadjem na bilo
koji nacin, bilo da unesem nesto, bilo samo ESC i udjem u dbedit
on radi. A ako ne udjem u mod za unosenje(u kome inicijalizujem
neke interne promenjive i nista vise) kod dbedita program se
prekine i javi:
Error BASE/1005 No exported variable SKIPBLOCK
Called from _skipblock(0)
Called from dbedit(0)
Called from ... <- Ovde idu moje procedure
U cemu je stvar? Hitno mi je!
I jos jedno pitanje u vezi dbedita. Mogu li da kao zaglavlje,
umesto imena polja napisem proizvoljne stringove(eventualno u 2
reda). I koji su ulazni parametri procedure koju poziva dbedit?
Boki
PS. Jos jedno pitanje, koliko naplacujete pisanje programa?
clipper.199radunovic,
-> #198, radunovic
Odustao sam od rada sa DBEditom i presao na TBrowse. Koje su sve funkcije
koje mogu da upotrebljavam i kako da dobijem da mi se oboji ceo record a ne
samo jedno polje. Kako da iskljucim kursor ?
Unapred zahvalan Boki
clipper.200nkbog,
U Nanforum Alatima postoji program koji računa dan u godini za uskrs
po gregorijanskom kalendaru. Evo jednog programčića koji to isto radi,
samo za julijanski kalendar., t.j. za pravoslavni uskrs. Program je
napisao tandem TiBerije (T=algoritam, B=kodiranje, tol'ko je bilo teško ;)),
a baziran je na sličnom BASIC programu iz knjige Srpski Kalendar (ili
nešto slično).
NB.
uskrs.prgclipper.201erol,
-> #197, dpaunHvala na paznji, ali mislim da nisi bas najbolje shvatio.
Set order mogu koristiti ako je doticna indexna datoteka vec u listi
otvorenih indexa. Ali ako sam je tek kreirao sa INEX ON ...TO ind.ntx,
tada set order ne pomaze (bar ja tako mislim) .
Pitanje ostaje otvoreno , a ja pocinjem da se snalazim na neki nacin !!!
Hvala. [7m [5m Erol [0m
clipper.202banex,
-> #196, erol>> Dakle pitanje je : Kako saznati ime indexne datoteke koja je
>> aktivna (otvorena ) uz tekucu DBF datoteku ?
Ako imaš podatak kako se zovu indexi uz koju datoteku, tada si na
konju. Postoji mogućnost da naredba SET INDEX TO koristi i mem
promenjljive.
Dakle nešto u ovom fazonu...
index1 = "prvi_ntx"
index2 = "drugi_ntx"
SELE 1
USE baza prvi_ntx, drugi_ntx
INDEX ON <expresion> TO <novi_ntx>
SET INDEX TO (index1), (index2), novi_ntx
Nisam našao funkciju koja može da vrati ime indexa ako je on
odranije nepoznat.
CU! -BANE-
clipper.203nbatocanin,
Što se tiče TBrowsa, ima previše stvari za ispričati. Pogledaj tekst u
"Računarima" o objektima, a imaš sve što ti treba i u NG-u za Clipper.
Ceo slog možeš obojiti sa ColorRect - pogledaj NG za objekte.
clipper.204pedjad,
HPPozdrav svim Clipper-asima.
Tek sam od nedavno poceo da se aktivno bavim sa Clipperom,
ali ima tu jos nekih stvarcica koje mi nisu jasne.
Npr. zasto mi javlja kod naredbe REPLACE - Type mismatch. To mi
se desava kada sam mu stavio 22 polja za replace , dok mi je sa tri
radio OK, pa me zanima kako da to resim i kako bih mogao da ako imam recimo 30
polja za unos podataka to da izvedem. Inace se nemojte smejati ako sam nesto
'lupio' :).
Eto toliko za pocetak, a kasnije ce biti sve vise i vise i vise... pitanja
od mene.:)
clipper.205nbatocanin,
čali mi se drug da ima problema sa Clipper-om S'87 u mreži: mada je,
kako kaže, preduzeo sve potrebne mere, vrlo često mu program iskače
sa "Index File corrupted". Ima li neko slična iskustva?
clipper.206dejanr,
-> #205, nbatocanin>> mada je, kako kaže, preduzeo sve potrebne mere, vrlo često mu
>> program iskače sa "Index File corrupted". Ima li neko slična iskustva?
Imam, do neba! Na Novell-u 2.12 bilo mnogo, na Novell-u 2.15 jako malo.
Nikad se nije dešavalo ako je korišćeno USE...EXCLUSIVE.
clipper.207draganf,
-> #204, pedjadNajvjerovatnije si pokušao u nimeričko polje upisati
karakter string ili obratno. A što se tiče toga da li nešto
"lupio" svi smo mi imali svojih bisera, prema tome samo napred
sa problemima
Dragan