clipper.1ppekovic,
TBrowse, GET, MemoEdit, DBF, NTX, ... jednom rečju: CLIPPER.
Paya
clipper.2dpaun,
Bilo bi korisno za Clp braću kad bi neko ispisao ovde makar osnovne komande
i opcije programa Lib.exe. Ja sam "nabadajući" uspeo da savladam problem
dodavanja i oduzimanja mog Obj fajla u Extend.lib. Koje su ostale
mogućnosti? Kako, na primer, da "vidim" sadržaj biblioteke?
dPaun
clipper.3banex,
Da prebacim ovo iz starog pc.prog-a, pošto mi niko nije
odgovorio, a siguran sam da ima onih koji znaju odgovor ;)
>> Kad smo već kod 5.01 klipera, da li neko zna u čemu je
>> problem kod sledećeg primera:
>>
>> Source datoteke (.prg) su rađene u starom kliperu (summer 87),
>> i kada ih proteram kroz kliper 5.01 tako da on sam pronalazi
>> odgovarajuće, napravi jedan .obj koji se bez problema linkuje sa
>> Rtlinkom. Exe program dalje radi bez problema.
>>
>> Ako te iste .prg datoteke kroz novi kliper proteram sa /m svičem,
>> da mi napravi za svaku po jedan .obj file, tada pri linkovanju
>> izbaci za svaki po jedan error i prekine rad sa porukom da su to
>> kliper87 funkcije (ili tako nešto ;) ?
>>
>> Da li bih trebao da koristim neki svič za rtlink u tom
>> slučaju, nisam se baš mnogo bavio istim?
>>
CU! -BANE-
clipper.4snemcev,
Da li neko ima problema sa Clipper-ovim funkcijama SAVESCREEN i
RESTSCREEN? Pišem ja danas nešto u poput
x := SAVESCREEN( x1, y1, x2, y2)
i kasnije
RESTSCREEN( x1, y1, x2, y2, x )
i dobijem - brlju! Naime, prvi red je na svom mestu, ali svaki
sledeći je za po jedno mesto pomeren udesno?!? Uz pomoć CLD-a
sam pratio vrednost promenljivih sa kojima radim, ali one (kao
što je i za očekivati) ne menjaju vrednost. Ali, usput sam na ?
LEN( x ) dobio neočekivan odgovor - 2100!?! Po mojoj računici
LEN( x ) bi trebalo biti (y2-y1+1)*(x2-x1+1)*2 što je tačno 272
bajta (4 reda u 34 kolone). A šta je sa ostatkom od 1828
bajtova? E pa posle 4 sata traženja nepostojeće greške, konačno
sam pronašao u čemu je stvar - rezultat funkcije SAVESCREEN sam
koristio kao inicijalizator prilikom dekleracije promenljive x
( LOCAL x := SAVESCREEN(...) ). žim promenljivoj x vrednost
dodelim posle dekleracije, sve je OK, ali to ne mogu da uradim
TOKOM dekleracije. Jel i ovo piše negde u dokumentaciji pod
naslovom 'Napredne tehnike'? Ili bi ipak trebalo biti u delu
nimalo prozaičnog naslova 'Bubice'?
clipper.5bulaja,
-> #2, dpaun│Bilo bi korisno za Clp bracu kad bi neko ispisao ovde makar osnovne
│komande i opcije programa Lib.exe.
└───
Pa i nema mnogo opcija - dodavanje modula u bibiloteku, njegovo uklanjanje
ili izdvajanje i listanje sadrzaja. Spisak opcija dobijas sa lib /? (ili lib
/help) ukoliko koristis Microsoft-a, ili sa tlib bez argumenata za Borlandov
lib manager.
clipper.6ciki,
-> #3, banex>**> >> Ako te iste .prg datoteke kroz novi kliper proteram
>**> >> sa /m svičem, da mi napravi za svaku po jedan .obj
>**> >> file, tada pri linkovanju izbaci za svaki po jedan
>**> >> error i prekine rad sa porukom da su to kliper87
>**> >> funkcije (ili tako nešto ;) ?
>**> >>
>**> >> Da li bih trebao da koristim neki svič za rtlink u
>**> >> tom slučaju, nisam se baš mnogo bavio istim?
>**> >>
Ho!
Vidis ovako, i ja sam u pocetku imao problema sa time, ali sada
je sve Ok.Kako sam ja skontao(sto nemore da je tacno ali sljaka),
unutar fajlova koje zelis da prevedes sa /m MORAS imati kod koji
je iskljucivo smesten u PROCEDURE ili FUNKCIJE.
Znaci ako u MENI fajlu imas nesto kao:
MENI.PRG
....
Do case
case nIzbor==1
Do Knjizi()
.....
žžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžžž
Ovaj fajl recimo samo poziva proceduru iz fajla SENGI_1.
SEENGI_1.PRG
Procedure Knjizi()
local......
...........
Kada ga vezujes, imas LNK bazu sa
fi MENI
fi SENGI_1
...
Pozdrav Ciki!
clipper.7ciki,
-> #5, bulajaHo!
Samo preleteh pogledom odgovor, pa rekoh da i ja da probam.
1.) Ako imas masm 6.0 tamo imas nesto sto se zove quickh ili
tako nesto, gde stoje lepo odgovori i kompletan spisak
switch-ova.
2.) Cini mi se da je d.petrovic trazio od mene da mu ti precedem,´k
pa sam mu ja to UL na mail ili je u staroj pc.prog pa pregledaj
ako ti nije tesko.
3.) Nece svaki LIB da da HELP!!!! :((((
U svakom slucaju puno srece!
Pozdrav Ciki!
clipper.8ciki,
-> #4, snemcevHo!
Ja sam imao problema inicijalizacijom promenljive prilikom
deklaracije, samo ne sa savescreen vec sa necim II.
Izgleda da prilikom local niz... nece da napravi niz
dimenzija koje treba da primi u fori neke private ili slicne
promenljive?
Pozdrav Ciki!
clipper.9d.petrovic,
-> #2, dpaunĂ> Bilo bi korisno za Clp braću kad bi neko ispisao ovde makar
osnovne
Ă> komande i opcije programa Lib.exe. Ja sam "nabadajući" uspeo da
Ă> savladam problem
Pa osnovne su (ne koristim ga 2 meseca i već zaboravio)
+ add
- del
* move
i još po nešto, ovo ti je mislim dovoljno. Možeš
(ubimedasesetimkako) da izvadiš obj fajl iz biblioteke.
clipper.10d.petrovic,
-> #3, banexĂ> Da prebacim ovo iz starog pc.prog-a, pošto mi niko nije
Pa u stvari meni nije jasno šta ti radiš :). Jedina
nekompatibilnost koja mi se dešavala je da sva dodeljivanja (=) moraš
da zameniš sa (:=). Što se ostalog tiče nemoj da pozivaš funkcije i
procedure iz viših nivoa pa ih neće sve strpati, onda nemoj ni da
koristiš /m (nikad nisam probao :)) ) i koristi obavezno (mloooogo ti
olakšava) rmake. Ako ovo nije dovoljno pojasni šta te muči.
Pozdrav, Dejan
clipper.11d.petrovic,
-> #4, snemcevĂ> LEN( x ) dobio neočekivan odgovor - 2100!?! Po mojoj računici
Ă> LEN( x ) bi trebalo biti (y2-y1+1)*(x2-x1+1)*2 što je tačno 272
Ă> bajta (4 reda u 34 kolone). A šta je sa ostatkom od 1828
Za ceo ekran ti treba 4000 bajta. Po dva za svaki karakter koji
snimaš.
clipper.12ppekovic,
-> #10, d.petrovic>> Pa u stvari meni nije jasno šta ti radiš :). Jedina
>> nekompatibilnost koja mi se dešavala je da sva dodeljivanja (=) moraš
>> da zameniš sa (:=). Što se ostalog tiče nemoj da pozivaš funkcije i
Pri prevodjenju Clipper '87 source-ova na Clipper 5.01 NE MORA se umseto =
stavljati :=. Jedina uočljiva nekompatibilnost je, koliko se sećam bila oko
count, sum i sl. komandi gde rečima FOR i TO treba zameniti mesta.
Paya
clipper.13ciki,
-> #10, d.petrovic>**> Pa u stvari meni nije jasno šta ti radiš :). Jedina
>**> nekompatibilnost koja mi se dešavala je da sva
>**> dodeljivanja (=) moraš da zameniš sa (:=)
Dejo brkaš IN-LINE i jednostavno dodeljivanje.
Pođi od toga što si rekao.Da li to znači da svaki
a=a+b moras da zameniš sa a+=b...
NARAVUžENIJE:
I jedno i drugo su mogući u 5.01.
>**> Što se
>**> ostalog tiče nemoj da pozivaš funkcije i procedure iz
>**> viših nivoa ...
Što bi rekao Mika Šengi Why not?
To će mu u nekim slučajevima samo smetati.
>**> obavezno koristi (mloooogo ti olakšava) rmake...
E ova ti valja.Ako se čovek odluči za rad sa rmake-om,
evo mu značenje predefinisanih makro-a.
$* - Ime rezultujuće datoteke bez putanje ili tipa
$č - Ime rezultujuće datoteke sa putanjom i tipom
$** - Kompletna lista imena zavisnih datoteka
$< - Puno ime zavisne datoteke koja je aktivirala pravilo.
Pozdrav Ciki!
clipper.14iivanisevic,
Odgovor na 5.1045 iz stare konf.
> Da li neko koristi za linkovanje neki drugi linker osim onog
> koji stize uz Clipper 5.0 ('87)? Prednosti/mane?
Ja koristim:
Turbo Link Version 3.01 Copyright (c) 1987, 1990 Borland International
Syntax: TLINK objfiles, exefile, mapfile, libfiles
Malo je starija verzija, verovatno se mogu koristiti i novije, ali
meni radi posao višestruko brže od onog linkera koji dobijaš uz Clipper.
(Inače ja još koristim Clipper ver. summer '87.)
Ivan
clipper.15d.petrovic,
-> #12, ppekovicĂ> Pri prevodjenju Clipper '87 source-ova na Clipper 5.01 NE MORA se
Ă> umseto = stavljati :=.
Mora ! Meni je to zaglupljivalo neke funkcije.
Ă> Jedina uočljiva nekompatibilnost je, koliko se sećam bila oko
Ă> count, sum i sl. komandi gde rečima FOR i TO treba zameniti
Ă> mesta.
Pa sad... meni se to nije dešavalo, ali ako ti kažeš...
P R E D L O G !!!
Hajde svi dajte ovamo iskistva sa prelaska sa summera 87 na
5.01. Izgleda da ima tu dosta sitnica koje jednostavno nisu sve
zakačile.
clipper.16goxx,
-> #15, d.petrovicU clipper-u 5.01 apsolutno ne mora da se koristi inline dodeljivanje
koje inače i ne postoji u s87. znači može da ostane =, a ne mora da
se stavi := .
clipper.17d.petrovic,
-> #16, goxxĂ> U clipper-u 5.01 apsolutno ne mora da se koristi inline
Ă> dodeljivanje koje inače i ne postoji u s87. znači može da ostane
=,
Ă> a ne mora da se stavi := .
Beeeeep !
Program koji sam pisao za s87 (oko 70 kb .prg) sam preveo na
5.01.
Za mnoge funkcije i procedure korisim dve kratke funkcije (tada
su još bile procedure) od kojih jedna pribeleži sadržaj ekrana, mesto
i izgled kursora... a druga sve to vraća iz istih promenljivih.
P A č NJ A !!!
Dok tu nisam zamnio = sa := isti program preveden sa 5.01 je
brljavio po ekranu :(((. Ko ne veruje... mogu začas replace := u = pa
da vidi...
clipper.18fric,
-> #17, d.petrovic> P A č NJ A !!!
> Dok tu nisam zamnio = sa := isti program preveden sa 5.01
> je brljavio po ekranu :(((. Ko ne veruje... mogu začas
> replace := u = pa
Najbolje pošalji ovamo jedno parčence koda koji nije hteo
da radi sa = umesto :=. Ja sam prebacio gomilu ( >> 70 kb sorsa)
koda sa S87 na 5.01 bez prepravki =, programi rade bez greške.
clipper.19goxx,
-> #17, d.petrovicVerujem ja tebi, ali uradi začas replace := u = pa
da vidimo...
goran
clipper.20mmarkovic,
Primetio sam da je clipper postao tema 9 a bio je 5. Kako da pokupim
datoteke uz poruke ( stare ).
Hvala unapred.
Milan Markovic
clipper.21vili,
Da li je neko probao da poveze program u C-u kompajliran nekim
drugim kompajlerom, a ne Microsoft-ovim?
Vili
clipper.22d.petrovic,
-> #20, mmarkovicĂ> Primetio sam da je clipper postao tema 9 a bio je 5. Kako da
Ă> pokupim datoteke uz poruke ( stare ).
conf
sh
join (broj uz pc.prog)
li 5 011092+/t
=======--
datum datoteke
clipper.23aleksj,
-> #21, vili> Da li je neko probao da poveze program u C-u kompajliran
> nekim drugim kompajlerom, a ne Microsoft-ovim?
Probao i razocarao se u C++. :(
Sve lepo radi dok je u jednostavnijoj formi npr. :
? "clipper" .... printf(' ...
Ali kada dodje do grafike, e tu vec nisam znao sta da radim.
Probao sam sve moguce varijante sa podesavanjima, linkerima,
predproc. fajlovima... i nista!
Ili javi da je prekoracio stack ili jednostavno blokira racunar.
Ako je nekom poslo ovo za rukom neka javi. Zaista bih voleo da
vidim resenje.
clipper.24vcalic,
-> #23, aleksj>>> Da li je neko probao da poveze program u C-u kompajliran
>>> nekim drugim kompajlerom, a ne Microsoft-ovim?
>>
>> Probao i razocarao se u C++. :(
Problem je u tome što grafičke rutine iz Borlandovog kompajlera koriste
float point aritmetiku koja se nikako ne slaže sa Microsoftovim rutinama
(Clipper je pisan u MSC-u). Prema tome, ako se koriste te rutine treba se
držati MSC-a, i zaboraviti na Borland.
clipper.25bulaja,
-> #20, mmarkovic│Primetio sam da je clipper postao tema 9 a bio je 5. Kako da pokupim
│datoteke uz poruke ( stare ).
└───
Prvo udji u staru PC.PROG konferenciju (preko njenog broja), onda daj
jedno list 9 /a /t i dobices spisak svih poruka uz koje su prikacene
datoteke. Onda citaj/prenosi/.. sta ti treba po broju poruke.
clipper.26d.petrovic,
-> #19, goxxĂ> Verujem ja tebi, ali uradi začas replace := u = pa
Ă> da vidimo...
Ujedno i odgovor na 9.18. Evo dva pakovanja .obj-a i jedan .rmk.
Program još nisam stigao da sklopim (ostale funkcije upravo radim i
testiram posebno, a i zastala je saradnja sa knjigovođom čovek
trenutno nije tu... Mrzelo me da zalazim u problematiku zbog čega to
tako treba, ali mislim da je problem u ovim funkcijama koje su tu.
Sad verujete ? ;>>>>>>
Pozdrav, Dejan
clipper.27ppekovic,
-> #26, d.petrovic>> Sad verujete ? ;>>>>>>
Ne, dok ne vidim deo source-a koji sa 87-ce koji sa := radi a sa = ne radi.
Ako tako nešto pošalješ, zasigurno ideš u bajtove, a i Straley-a bi to veoma
zanimalo.
Paya
clipper.28zkrstic,
-> #23, aleksj> Ali kada dodje do grafike, e tu vec nisam znao sta da radim.
> Probao sam sve moguce varijante sa podesavanjima, linkerima,
> predproc. fajlovima... i nista!
Z.A.B.O.R.A.V.I. :((((((((((((((((((((
Teoretski neizvodljivo :((((((((((((
Na žalost :(((((((((((((
clipper.29snemcev,
-> #11, d.petrovic>> Za ceo ekran ti treba 4000 bajta. Po dva za svaki karakter
>> koji snimaš.
?!? Moja računica se ni u čemu ne protivi toj činjenici.
clipper.30d.petrovic,
-> #27, ppekovicĂ>>> Sad verujete ? ;>>>>>>
Ă>
Ă> Ne, dok ne vidim deo source-a koji sa 87-ce koji sa := radi a sa =
Ă> ne radi. Ako tako nešto pošalješ, zasigurno ideš u bajtove, a i
Ă> Straley-a bi to veoma zanimalo.
Ma zaboravio sam da je zakačim uz ovu poruku... evo sad :)
Naknadno dopisano :) :(
Kad sam onu prvu poruku napisao planirao sam da to uradim i da
zakačim fajl uz poruku. Na to sam potpuno zaboravio i greškom je
poruka onako otišla. Kad sam SAD pokušao to da uradim... :(. U taj
program sam naknadno ugradio naredbe karakteristične za 5.01 i sada
neće ni da prevede taj program ako stavim =. Samo mi prijavi grešku u
liniji:
local bljak=575 :((
Pozdrav, Dejan
clipper.31d.petrovic,
-> #21, viliĂ> Da li je neko probao da poveze program u C-u kompajliran nekim
Ă> drugim kompajlerom, a ne Microsoft-ovim?
Cl 5.01 može da se zakači sa Flipper-om pa imaš neke sitnice
(verovatno sve što ti treba) od grafike. C batali, izgleda da brljavi
baš sa grafikom :((
clipper.32pstojanovic,
Ne mogu nikako sa RTLinkom da napravim eksterni .OVL fajl u
dinamickom nacinu rada. Evo (jednog od mnogih) primera kako
sam radio :
fajl: proba.prg
do proba1
do proba2
do proba3
fajl: prog.prg
procedure proba1
? 'Ovo je proba1'
procedure proba2
? 'Ovo je proba2'
procedure proba3
? 'Ovo je proba3'
postupak :
clipper proba /m
clipper prog /m
rtlink fi proba,prog /DYNAMIC:1.OVL
E sad, on doduse u proba.exe nakaci na kraj 1.OVL, ali to nije ono sto
sam hteo, jer jednostavno hocu imati root fajl proba.exe + zasebni
1.OVL.
Slicno sam pokusavao i sa skript link fajlom sa kreiranjem staticnih
overleja npr.
fajl proba.lnk :
file proba,prog
output proba.exe
verbose 2
beginarea
module prog
section into 1.OVL
endarea
Ali prilikom linkovanja desava se da doduse kreira fajl 1.OVL ali sa
impozantnom duzinom od 0 (nula) bajta :(. U uputstvu pise da se stat-
icni overleji koriste za kodove koji su prevedeni u C-u ili ASM-u i
to postujem (mada je sa PLINK86 bila druga prica), ali sta je sa
dinamickim ? Izvinite na gomilanju pad-ova ali bih zaista voleo da
vidim resenje. Hvala.
Pozdrav pstojanovic.
clipper.33goxx,
-> #30, d.petrovic
■ local bljak=575 :((
Ovo je iz novog clipper-a, a ne iz starog. Dodeljivanje se u
deklaraciji LOCAL vrši sa := (inline dodeljivanje). U novom
clipper-u ne možeš svuda da staviš znak = a, takodje ni := .
Sve ima svoje mesto.
Dakle:
LOCAL Bljak := 575
Probaj da nadješ neki drugi primer gde Ti ne kompajlira znak
jednakosti pa pošalji. Ovo postaje sve interesantnije.
Goran.
clipper.34goxx,
-> #29, snemcev
■ >> Za ceo ekran ti treba 4000 bajta. Po dva za svaki karakter
■ >> koji snimaš.
■
■ ?!? Moja računica se ni u čemu ne protivi toj činjenici.
Slučaj beše iz neke druge poruke. Rado bih da vidim taj program
što brlja.
Goran.
clipper.35ndragan,
-> #12, ppekovic/ count, sum i sl. komandi gde rečima FOR i TO treba zameniti mesta.
Šta, on vozi računa o redosledu opcija? Nema interni spisak prioriteta?
A danas sam čuo da ima jedno brdo službenih reči koje se ne mogu
skratiti na 4 slova! Je li to moguće?
Da vam bude lakše, Foks nema inlajn dodeljivanje, jer su autori rešili
da nije nužno da im jezik liči na C.
clipper.36d.petrovic,
-> #33, goxxĂ> ■ local bljak=575 :((
Ă>
Ă> Ovo je iz novog clipper-a, a ne iz starog. Dodeljivanje se u
Ă> deklaraciji LOCAL vrši sa := (inline dodeljivanje). U novom
Aloha ?!! Pa to sam i rekao. Zbog toga što sam taj program već
dorađivao u kliperu 5.01 sada ne mogu, kako sam brzopleto pomislio,
da napravim taj searsh/replace. Inače i dalje tvrdim... probaću čim
skupim malo vremena da odvojim neki takav primer i da ga pošaljem.
Pozdrav, Dejan
clipper.37banex,
-> #36, d.petrovic>> da napravim taj searsh/replace. Inače i dalje tvrdim... probaću čim
>> skupim malo vremena da odvojim neki takav primer i da ga pošaljem.
Ako sam dobro shvatio, komentar je bio da ti 'stari' clipper
programi ne rade u novom jer pravi problem kod delaracije
promenjljivih sa '='. Nije mi jasno gde si imao deklaraciju LOCAL u
starom clipper-u??? :)))
clipper.38d.petrovic,
-> #37, banexĂ> Ako sam dobro shvatio, komentar je bio da ti 'stari' clipper
Ă> programi ne rade u novom jer pravi problem kod delaracije
Ă> promenjljivih sa '='. Nije mi jasno gde si imao deklaraciju LOCAL
u
Ă> starom clipper-u??? :)))
Auf!!! :)))
Počelo je od toga da ne rade pa sam na negodovanja odgovorio da
ću ponovo to vratiti u prvobitno stanje i argumentovano dokazati.
Eeeee, ali kad sam to uradio i nije hteo da prevede setio sam se
da sam ja taj program posle prepravljao, dopravljao dodavao,
oduzimao... :)) i da to sad ne ide.
Ako nađem malkice vremena ovih dana, dok se duhovi ne smire ;),
pokušaću da izvučem šta je tu zezalo stvar pa će pošaljem :)
Pozdrav Dejan
clipper.39andrejl,
-> #38, d.petrovic>│ Eeeee, ali kad sam to uradio i nije hteo da prevede setio
>│ sam se da sam ja taj program posle prepravljao,
>│ dopravljao dodavao, oduzimao... :)) i da to sad ne ide.
Nestalo dokaza? :) Ne znam šta je tako neobično moglo da
te zakoči, a da to ne bude nešto veliko pa da zapamtiš.
bye, andrejl
clipper.40d.petrovic,
-> #39, andrejlĂ> Nestalo dokaza? :) Ne znam šta je tako neobično moglo da
Ă> te zakoči, a da to ne bude nešto veliko pa da zapamtiš.
Grrrrrr, ja se tačno sećam kad je proradilo neznam u kojoj
funkciji, proceduri, itd... je to sve proradilo i nemam puno vremena
ali... dolaziš u Subotu u klub ? Da se kladimo u nameštaj sa mešanim
mesom pa da dobijem malo motivacije ? O;)))
Pokušaću da odvojim malo vremena ...
clipper.41andrejl,
-> #40, d.petrovic>│ Grrrrrr, ja se tačno sećam kad je proradilo neznam u
>│ kojoj funkciji, proceduri, itd... je to sve proradilo i
>│ nemam puno vremena ali... dolaziš u Subotu u klub ? Da se
>│ kladimo u nameštaj sa mešanim mesom pa da dobijem malo
>│ motivacije ? O;)))
Ne dolazim u klub, ali možemo da se kladimo u kantu krvi
;)))
bye, andrejl
clipper.42d.petrovic,
-> #41, andrejlĂ> Ne dolazim u klub, ali možemo da se kladimo u kantu krvi
Ă> ;)))
Ako budeš tako uporan možda i dobiješ primer ;)))))
clipper.43ciki,
-> #2, dpaun>**> Bilo bi korisno za Clp braću kad bi neko ispisao ovde
>**> makar osnovne komande i opcije programa Lib.exe. Ja sam
>**> "nabadajući" uspeo da savladam problem dodavanja i
>**> oduzimanja mog Obj fajla u Extend.lib. Koje su ostale
>**> mogućnosti? Kako, na primer, da "vidim" sadržaj
>**> biblioteke?
Sa velikim zakašnjenjem ali:
Sintaksa LIB-a:
LIB stara_b ŠopcijeĆ ŠkomandeĆ Š,ŠfajlĆ Š,nova_bĆĆĆ Š;Ć
stara_b=ime "stare biblioteke"
Naziv postojece datoteke ili biblioteke koju zelis da
kreiras.Podrazumevana ekstenzija je LIB ;>
Ako je kreiras dobices pitanjce u fori kao:
Library file does not exist. create?
E sad nasta da kucnes to je tvoja stvar.
opcije
/HŠELPĆ - vrlo kratka pomoc
/IŠGNORECASEĆ - nalaze LIB-u da ignorise slucajeve
prilikom poredjenja simbola.
/NOEŠXTDICTIONARYĆ- (ili nesto slicno)-Kao NOE od MSLINK-a.
/NOIŠGNORECASEĆ - suprotno od /IŠGNORECASEĆ
/NOLŠOGOĆ - nema copyright porukica
/PŠAGESIZEĆ - zadaje velicinu strane u bajtovima nove
biblioteke ili menja isto kod stare
biblioteke.Zadata vrednost mora biti
izmedju 16-32768.Definisana vrednost
je je je 16.
Sa ovom opcijom mozes ograniciti veli-
cinu LIB na zeljeni broj byte-ova.
Recimo /PAGE:32 - 32*65536=2MB
komande - manipulacija modulima u datoteci.
ime moze biti sa path-om.
+ime - dodaje OBJ fajl u datoteku
-ime - brise fajl iz bibloteke
-+ime - zamenjuje module u biblioteci ?
*ime - kopira modul iz biblioteke u OBJ fajl
-*ime - pomera OBJ fajl iz LIB-a u nezavistan fajl.
Posle ove opcije ime.OBJ se nenalazi u LIB-u.
fajl - ime fajla gde ce biti upisan izvestaj o biblioteci.
sam fajl se sastoji iz 2 dela.
1. Alfabetski listing svih simbola LIB-a.
2. Lista modula LIB-a sa njihovim velicinama i lokacijama.
LIB=ime biblioteke, a ne LIB.EXE.
nova_b
ime biblioteke koju menjas.Predefinisano je ime
stare biblioteke.
P.S. Sto je on spor!!!!!!!!!!!!!!!
Pozdrav Ciki!
clipper.44balinda,
Evo jednog rucnog rada (uz malu pomoć nekih poznatih Kliperasa :))
Poziva se sa:
set date german
CX=1 && Inicijalne koordinate (od vrha)
CY=54 && (od leve strane 80-24=56-2=54
kalend() && Kalendar
QUIT
Sa CTRL + PgUp(PgDn) ide se po godinu unapred i unazad, a sa
PgDn(PgUp) po mesec unapred (unazad)!
Home vraća na tekući datum!
Ako ima primedbi i sugestija ostavite poruku!
kalend.objclipper.45balinda,
>> Evo jednog rucnog rada (uz malu pomoć nekih poznatih Kliperasa :))
Zaboravih da kažem da ovo šalje Nesa! :))
clipper.46andrejl,
-> #42, d.petrovic>│ Ako budeš tako uporan možda i dobiješ primer ;)))))
Možda ti ispadneš uporiji, pa se povlačim ;) Krv se ceni
ovih dana :)
bye, andrejl
clipper.47vili,
...to whom it may concern...
Uz poruku je PRINT.CH sa nekim, najcesce koriscenim, definicijama
za EPSON kompatibilne stampace!
UPOTREBA:
#include "print.ch"
set printer on
set console off
? LEVAMAR(10),DESNAMAR(73)
? BOLDON,UNDERLON,STILOUTL,CENTARON
? "OVO JE PRIMER 1!"
? BOLDOFF,UNDERLOFF,STILNORM,CENTAROFF
? ITALON,STILSHAD,KONDENZON
? "OVO JE PRIMER 2!"
? ITALOFF,STILNORM,KONDENZOFF
? NOVASTRANA
set console on
set printer off
Vili
PS. Ja imam Seikosha SL-92 Plus pa su definicije fontova prilagodjene
tom stampacu. To treba promeniti za neki drugi stampac.
print.chclipper.48bcetina,
-> #44, balinda>> kalend() && Kalendar
>> Ako ima primedbi i sugestija ostavite poruku!
Super. Još da ga poveže sa nekakvim Notepadom / Clipboardom i možda
Nbatocaninovim kalkulatorom i eto nama svega u Clipperu. Obožanstveno.
clipper.49raul,
Zdravo !!!!
Da li bi neko bio ljubazan da mi kaze kako mogi ekrane koje snimim u mem
promenljivu da snimim u bazu i kako da ih poslije ucitam ???? Da li bih to
mogao da radim i sa grafickom bibliotekom za Clipper, koju sam dK "skinuo"
odavde !!! Hvala !!!
Raul
clipper.50vili,
Ovo sam procitao u nekoj knjizi o Clipper-u pre nekih dve godine.
Razvijajuci aplikaciju sa bazama podataka svaki programer bi
trebalo da vodi neku vrstu dnevnika gde bi upisivao koliko vremena
mu je bilo potrebno za svaki posebni deo aplikacije koju pravi. Na
taj nacin bi imao uvid u to koliko mu vremena traba za odredjene
delove programa tako da pri planiranju sledece aplikacije moze dobro
da isplanira svoje vreme i da proceni koliko mu vremena ukupno treba
da je napravi. Zatim je data sledeca tablica ili formular gde za
svaku fazu programa treba upisati vreme.
Nikada, naravno, nisam popunio nijednu ovakvu listu, ali mislim
da bi svaki progamer, koji drzi do sebe, trebao da ima ovakvu
evidenciju svog vremena. Sta mislite o ovome ?
Vili
1. System Environment Generation..................
a) Screen Design.............................
1. Help.................................
2. Color................................
3. Menus................................
b) Application Parameters....................
1. Passwords............................
2. Borders..............................
3. Check Numbers........................
4. Miscellaneous........................
2. Creating Databases and Indexes.................
a) Fields....................................
b) Memos (If Applicable).....................
c) Key Fields................................
d) Relations.................................
3. Data Control...................................
a) Entering..................................
b) Editing...................................
c) Viewing...................................
d) Deleting (IF Applicable)..................
4. Calculation....................................
a) Totaling..................................
b) Summing and Averaging.....................
c) Balancing.................................
5. Reporting and Listing..........................
a) Screen....................................
b) Printer...................................
c) File......................................
6. System Maintenance.............................
a) Sorting and Reindexing....................
b) Backing up and Restoring Data.............
c) Data Cleanup..............................
d) Reconfiguring System......................
e) Miscellaneous.............................
7. Data Interface (If Applicable).................
a) Importing.................................
b) Exporting.................................
c) Across Systems............................
8. Multiuser Control (If Applicable)..............
9. Testing........................................
10. Documentation..................................
clipper.51aleksj,
-> #21, vili> Da li je neko probao da poveze program u C-u kompajliran
> nekim drugim kompajlerom, a ne Microsoft-ovim?
Probao i razocarao se u C++. :(
Sve lepo radi dok je u jednostavnijoj formi npr. :
? "clipper" .... printf(' ...
Ali kada dodje do grafike, e tu vec nisam znao sta da radim.
Probao sam sve moguce varijante sa podesavanjima, linkerima,
predproc. fajlovima... i nista!
Ili javi da je prekoracio stack ili jednostavno blokira racunar.
Ako je nekom poslo ovo za rukom neka javi. Zaista bih voleo da
vidim resenje.
clipper.52bulaja,
-> #49, raul│Da li bi neko bio ljubazan da mi kaze kako mogi ekrane koje snimim
│u mem promenljivu da snimim u bazu i kako da ih poslije ucitam ????
└───
Ako mislis na tekstualne ekrane dobijene sa SaveScreen(), u bazu mozes
da ih trpas u memo polja, mada ne znam gde bi ti trebao SaveScreen()
vezan sa slogovima baze :).
clipper.56ratman,
Kada u user-funkciji za DBEDIT() koristim REPLACE...WITH, vrednost
promenljive nece nikako da se replacuje, ostaje uvek nula. Pgm
izgleda ovako:
use pats
dbedit (1,1,20,78,,'user')
// ******** USER FUNKCIJA ZA KONTROLU DBEDIT-a
function user
parameters mod,kol
if mod=0
return 1
elseif mod=3
return 0
endif
tip=lastkey()
//
//
//
case tip=22 && INS:dodaj blanko zapis
append blank
go bottom
zz=lastinc()
replace nopat with zz && STA JE SA OVIM?
return 1
case tip=7 && del:brisi zadnj zapis
go bottom
delete
pack
return 2
otherwise
return 1
endcase
//
//
//
function lastinc() &&najveci broj+1
linc=-1
go top
do while .t.
if nopat>linc
linc=nopat
endif
skip
if eof(); exit; endif
enddo
@22,1 ;? linc,recno()
return (++linc)
da li je u pitanju vrednost koja se vraca dbedit-u?
clipper.57ratman,
Mogu li se i kako vrednosti polja u bazi uopste menjati pomocu dbedit()
bez pomocne-user funkcije (Clp5.01)? Meni se cini da ne.
clipper.58ssasa,
Ko zna (ili još bolje ima) nešto o Clipperu for Windows. Znam samo da se
pojavio i da obećava ali ništa detaljnije. Naime kako sam nabavio Superbase
oduuševio sam se elegancijom i brzinom pravljenja aplikacija, ali sam se ubrzo
razočarao nefleksibilošću samog paketa. Zbog toga se nadam u Clip. for Win.
clipper.59bulaja,
-> #56, ratman│Kada u user-funkciji za DBEDIT() koristim REPLACE...WITH, vrednost
│promenljive nece nikako da se replacuje, ostaje uvek nula. ...
│da li je u pitanju vrednost koja se vraca dbedit-u?
└───
Da. Posle replace-a si vracao dbEdit-u vrednost 1 (sto znaci da dbEdit
nastavi kao da se nista nije desilo), a treba da se vrati 2 (osvezi
sadrzaj ekrana).
clipper.60andrejl,
-> #50, vili>│ Nikada, naravno, nisam popunio nijednu ovakvu listu, ali
>│ mislim da bi svaki progamer, koji drzi do sebe, trebao da
>│ ima ovakvu evidenciju svog vremena. Sta mislite o ovome ?
Nije loše, mada ne znam kako bih sebe naterao da tako
nešto radim :) Pitanje je i koliko vredi, mislim da nije
moguće uopštiti delove programa u toj meri jer u jednom
slučaju to može biti neki mnogo složeniji postupak, a u
drugom trivijalni te bi neki prosek vremena mogao biti
prilično varljiv podatak.
bye, andrejl
clipper.62ratman,
Sta je pogresno u ovom pgm.u? Jednostavno nece da REPLACE-uje vrednost
polja sa brojrm koji dobija od funkcije lastinc(). Koliko sam ga isprobao,
funkcija radi dobro, ali posle replace ostaje 0 u polju.
Kada u liniji sa REPLACE umesto imana funkcije napisem neki broj, zamislite,
on ga upise!
Stvarno me IZLUDJUJE!
set confirm on
set date british
cls
use pat1
dbedit (1,1,20,78,,'user')
// ******** USER FUNKCIJA ZA KONTROLU DBEDIT-a
function user
paramete╔Śţ mod,kol
// ******** PROVERA PARAM. PRIMLJENIH IZ DBEDIT-a
if mod=0
return 1
elseif mod=3
return 0
endif
// ******** STA JE PRITISNUTO? (user fn dbedit)
tip=lastkey()
do case
case tip=27
return 0
case tip=13 && ENTER: edituj polje...
set cursor on
g=field(kol)
@row(),col() get &g
read
set cursor off
return 1
case tip=22 && INS:dodaj blanko zapis
append blank
replace nopat with lastinc()
return 2
case tip=7 && del:brisi zadnj zapis
delete
pack && treba li pakovanje?
return 2
otherwise
return 1
endcase
// KRAJ USER FUNKCIJE ZA KONTROLU DBEDIT-a
function lastinc()
linc=-1
go top
do while .t.
if nopat>linc
linc=nopat
endif
skip
if eof(); exit; endif
enddo
linc++
return (linc)
Pozdrav,
Dejan
clipper.63nbatocanin,
(ODGOVOR NA 5.1026 PC.PROG, ndragan)
> / Pravim rečnik podataka, pa se trudim da u programu ne
> / koristim trenutna polja, već opise u rečniku. Mada i ovo
> / nije baš potpuno
>
> Zvuči zanimljivo. Kako izgleda primer u sorsu? Mislim samo
> par redova.
Uh, ova poruka mi je nekako promakla, tek sam je juče slučajno
pronašao. Da čovek ne pomisli da neću namerno da mu odgovorim što ne
koristi Clipper ;).
Evo 'vako: ideja mi je bila da se na svako polje referišem samo
nazivom preko specijalne funkcije (na primer, Get ("SUMA")), a ne sa
RACUNI->SUMA ili nešto još komplikovanije. Kada bi se nešto promenilo
(na primer, SUMA se sad racuna kao zbir RACUNI->SUMA + POREZ->DODATAK
ili nešto treće, ali program se ovoj vrednosti obraća preko rečnika,
pa je dovoljno samo tamo promeniti:
RACUNI->SUMA
u:
RACUNI->SUMA + POREZ->DODATAK
Na žalost, performanse ovakvog rešenja su veoma diskutabilne, a i
postojeći programi bi morali da pretrpe veće izmene. Zato čekam novi
Clipper sa objektima, jer će ovo biti daleko lakše tamo ugurati :)
clipper.64vili,
Ň═══════════════════════════════════════Ş
│ELEVEN RULES FOR SUCCESS IN PROGRAMMING│
ď═══════════════════════════════════════ż
┌───────────────────────────────────────────────────────────────────────┐
│1. WRITE FIRST IN EASY-TO-UNDERSTAND PSEUDO-CODE, THEN TRANSLATE INTO │
│ CLIPPER CODE │
└───────────────────────────────────────────────────────────────────────┘
- Do not stop with your first draft.
- Do not patch bad code; rewrite it.
- Do not strain to reuse code; just reorganize it.
- Make sure special cases are really special cases.
- Write and test a big program in small pieces.
- Do not stop at one bug; find others.
- Watch out for off-by-one errors:
- 10.0 times 0.1 is hardly ever 1.0: test to make sure
calculations are correct.
- Do not compare floating point numbers just for equality.
- Be in control. Measure the effect of any change before making
the change for the sake of efficiency.
┌───────────────────────────────────────────────────────────────────────┐
│2. WRITE CLEARLY │
└───────────────────────────────────────────────────────────────────────┘
- Do not be too claver.
- Make your programs read from top to bottom.
- Let the data structure the program.
- Do not diddle with code to make it faster; find a better algorithm.
- Format a program to help the reader understand it.
- Indent code to show the logical structure of a program.
┌───────────────────────────────────────────────────────────────────────┐
│3. SAY WHAT YOU MEAN, SIMPLY AND DIRECTLY │
└───────────────────────────────────────────────────────────────────────┘
- Make sure your code 'does nothing' gracefully. Too often developers,
when asked what their routine does, say 'it does nothing'. If this
is the case, check it again. 'Does nothing' code has a tendency to
do plenty!
- Program defensively.
- Make it right before making it faster.
- Keep it right when making it faster.
- Make it clearer before making it faster.
- Do not sacrifice clarity for small gains in 'efficiency'.
- Keep it simple to make it faster.
┌───────────────────────────────────────────────────────────────────────┐
│4. MODULARIZE │
└───────────────────────────────────────────────────────────────────────┘
- Use subroutines.
- Make the coupling between modules clearly visible.
- Each module should do one thing and do it well.
- Use recursive procedures for recursively defined structures.
┌───────────────────────────────────────────────────────────────────────┐
│5. USE LIBRARY FUNCTIONS │
└───────────────────────────────────────────────────────────────────────┘
- Replace repetitive expressions with calls to a common functions.
┌───────────────────────────────────────────────────────────────────────┐
│6. AVOID TOO MANY TEMPORARY VARIABLES │
└───────────────────────────────────────────────────────────────────────┘
- Choose variable names that cannot be confused.
- Choose procedure names that describe their basic purpose.
- Choose function names that describe their basic puprose.
- Choose field names that make the program simple.
- Use variable names that mean something.
- Create labels that mean something.
┌───────────────────────────────────────────────────────────────────────┐
│7. LET THE MACHINE AND LANGUAGE DO THE DIRTY WORK │
└───────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────┐
│8. AVOID UNNECESSARY BRANCHES │
└───────────────────────────────────────────────────────────────────────┘
- Do not use conditional branches as a substitute for a logical
expression.
- Use IF..ELSE..ENDIF to emphasize that only one of two actions
is to be performed.
- Use the fundamental control flow constructs.
- Follow each division and its associated action as closely as
possible.
- Aviod multiple exits from loops.
- Use the good features of the language and avoid the bad ones.
- Use data arrays to avoid repetative control sequences.
┌───────────────────────────────────────────────────────────────────────┐
│9. USE 'DO WHILE' AND INDENTING TO DELIMIT GROUPS OF STATEMENTS │
└───────────────────────────────────────────────────────────────────────┘
- Use DO and DO WHILE to emphasize the presence of loops.
- Use DO CASE to implement multiway branches.
┌───────────────────────────────────────────────────────────────────────┐
│10. INITIALIZE ALL VARIABLES BEFORE USE │
└───────────────────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────────────────┐
│11. MAKE SURE COMMENTS AND CODE AGREE │
└───────────────────────────────────────────────────────────────────────┘
- Do not just echo the code with comments. Make the comments count!
- Do not comment bad code; rewrite it!
- Do not overcomment.
-----------------------------------------------------------------------------
PS. Ovo sam procitao u nekoj knjizi o Clipper-u.
Vili
clipper.65banex,
-> #52, bulaja>> Ako mislis na tekstualne ekrane dobijene sa SaveScreen(), u bazu
>> mozes da ih trpas u memo polja, mada ne znam gde bi ti trebao
Takođe, obrati pažnju na bug za savescreen() i restscreen(), imaš
file negde na sezamovom dir-u.
clipper.66dejanr,
-> #64, vili>> 1. WRITE FIRST IN EASY-TO-UNDERSTAND PSEUDO-CODE, THEN TRANSLATE INTO
>> CLIPPER CODE
Da li neko od prisutnih to stvarno radi?
Inače, moj najgori greh je što imam običaj da istu promenljivu koristim
za razne stvari :( Recimo, treba mi negde da nešto sačuvam, i prosto mi
nekako žao da za to otvaram novu promenljivu, nego pogledam malo gore
ima li neka koja je odigrala ulogu pa je onda iskoristim. Kažu da je ovo
mnogo ružno međutim meni nikad nije pravilo smetnje.
clipper.67vili,
-> #62, ratman> Sta je pogresno u ovom pgm.u?
Nista. Kod mene radi!
Vili
clipper.68zkrstic,
-> #66, dejanr>>> 1. WRITE FIRST IN EASY-TO-UNDERSTAND PSEUDO-CODE, THEN TRANSLATE
>>> INTO CLIPPER CODE
>
> Da li neko od prisutnih to stvarno radi?
Kuku :)))) Nemam bre ja toliko vremena na bacanje ;)))))
Btw, imam istu knjigu, i ima stvarno dobrih ideja oko načina
pisanja programa. Al' ovo... bilo bi malo previše ;))))
Zkr :)
clipper.69jtitov,
-> #58, ssasa> razocarao nefleksibiloscu samog paketa. Zbog toga se nadam
> u Clip. for Win.
Bolje je da se nadas u FoxPro for Windows. NE samo da je bolji program nego
ga jos i MS razvija...
clipper.70jtitov,
-> #66, dejanr> Da li neko od prisutnih to stvarno radi?
Naravno. Mislim da nema goreg programiranja od programiranja "direktno u
ekran". Lepo prvo u nekakvom pseudo-kodu, pa debug, pa trk u source. Inace
sto se tice koriscenje jedne varijable, mislim da je to ostalo iz vremena
"slabih" masina (dzepni Sharp, Spectrum,...) kada je svaki byte bio vazan.
Danas dajem prednost citljivom kodu nego ustedi od par (kilo)bajtova.
clipper.71andrejl,
-> #66, dejanr>│ Inače, moj najgori greh je što imam običaj da istu
>│ promenljivu koristim za razne stvari :( Recimo, treba mi
>│ negde da nešto sačuvam, i prosto mi nekako žao da za to
>│ otvaram novu promenljivu, nego pogledam malo gore ima li
>│ neka koja je odigrala ulogu pa je onda iskoristim. Kažu
>│ da je ovo mnogo ružno međutim meni nikad nije pravilo
>│ smetnje.
Da, i ja koristim takve "slave" :) promenljive koje su tu
uvek da urade neki sitan posao.
Najveći problem mi je kako da razmodulišem program. Pre
sam pisao mnogo kratkih modula, a sada manje dužih,
(prevashodno zbog lepšeg rada sa procedurama u Cl 5), ali
uvek mi se čini da grešim.
bye, andrejl
clipper.72bulaja,
Postoji li neki nacin da se funkciji parametri prenesu po imenu
(reference), a da se ona poziva u "normalnom" obliku f(), a ne sa
DO..WITH..?
clipper.73nbatocanin,
-> #52, bulajaAli ako ekran nema simbol Chr(26) (EOF)!
clipper.74nbatocanin,
-> #57, ratman> Mogu li se i kako vrednosti polja u bazi uopste menjati
> pomocu dbedit() bez pomocne-user funkcije (Clp5.01)?
Može, korišćenjem SET KEY K_ENTER TO Change().
clipper.75nbatocanin,
-> #58, ssasa> Ko zna (ili još bolje ima) nešto o Clipperu for Windows.
> Znam samo da se pojavio i da obećava ali ništa detaljnije.
Grafička verzija Clipper-a će se zvati Aspen i koliko znam nije
sigurno da će biti pod Windows-ima, možda će imati svoj sistem za
interakciju. Još uvek je u razvoju.
clipper.76dejanr,
[Odgovor na PC.PROG 5.1013, ndragan]
Malo sam "čačkao" po slovim2.arj ne bi li ih prilagodio za "Bajtove lične
prirode" ali opet ima problema :( Na primer, broj 99 ispiše kao
deveTdeset devet.
clipper.77zkrstic,
-> #75, nbatocanin>> Ko zna (ili još bolje ima) nešto o Clipperu for Windows.
>> Znam samo da se pojavio i da obećava ali ništa detaljnije.
>
> Grafička verzija Clipper-a će se zvati Aspen i koliko znam nije
> sigurno da će biti pod Windows-ima, možda će imati svoj sistem za
Vidiš, ja, ukoliko nisam totalno odlepio, što i neij daleko
od istine ;) sam sto posto siguran da je u najavi za Aspen, stojalo
da radi pod MS Windows-ima.
Btw. još nije izašao. A u istoj najavi se pominje i Clipper
ver 6.0, potpuni kompajler (mali prg = mali exe) kao i potpuna obje-
ktna orijentacija (DJ, samo mi to treba u životu;) ) i još kojekake'
kerefeke. Izdavač: New_guy_in_charge: Computer Associates
Zkr
clipper.78dejanr,
-> #75, nbatocanin>> Grafička verzija Clipper-a će se zvati Aspen i koliko znam nije
>> sigurno da će biti pod Windows-ima, možda će imati svoj sistem za
>> interakciju. Još uvek je u razvoju.
==========
clipper/user.forum #764, from nightfly, 571 chars, Thu Dec 3 01:35:02 1992
----------
TITLE: CA-Clipper 5.2
Today I read an article about CA's new Clipper 5.2.
If you use any other xbase product, you get Clipper 5.2
+ dbFast or Clipper Tools or Clipper/Compiler Kit for JUST 199 bucks.
If you are a registered Clipper user you can get the upgrade (only)
for 149 dollars, and they don't mention any bonus package like Clipper Tools..
Is this a joke or what?
It's cheaper for me to buy Clipper 5.2 + Clipper Tools than getting
an upgrade?
If someone has the time, would you please find out at 1-800-225-5224.
I can't call 800 numbers from Argentina.
Thanks.
clipper.79ndragan,
-> #63, nbatocanin/ Evo 'vako: ideja mi je bila da se na svako polje referišem samo
/ nazivom preko specijalne funkcije (na primer, Get ("SUMA")), a ne sa
Ima gde treba, a ima gde ne. To već ne spada u nekakav rečnik podataka,
ni u to šta treba/može da sadrži, već u onaj drugi deo, lokalizovanje
verzijskih razlika u kritične rutine. Kod nas se, recimo, kod
kalkulacije radi jedno banalno "Repl next 1 velecena with velcena()"; i
to je standardna rutina za upis; rutina velcena.prg se razlikuje od
mušterije do mušterije, i sadrži metod ("šta se koga tiče kako ja
obračunavam").
/ Da čovek ne pomisli da neću namerno da mu odgovorim što ne
/ koristi Clipper ;).
Ma jok, ovo je čista fjordovska obaška :). I ja tako kasnim na neke
stvari, a na neke ne :). NHF, vidim da opet idemo paralelnim ulicama.
clipper.80ndragan,
-> #66, dejanr/ ima li neka koja je odigrala ulogu pa je onda iskoristim. Kažu da je
/ ovo mnogo ružno međutim meni nikad nije pravilo smetnje.
Bitno je da znaš koja je. Kod nas ima jedna, iz istorijskih razloga
nazvana _rc, koja bi mogla da se zove void ili kleenex - ne preporučuje
se da se smatra da je nešto sačuvala duže od tri reda (u svakoj trećoj
rutini se spominje i svuda nešto radi). I to radi.
/>> 1. WRITE FIRST IN EASY-TO-UNDERSTAND PSEUDO-CODE, THEN TRANSLATE
/>> INTO CLIPPER CODE
/ Da li neko od prisutnih to stvarno radi?
Pseudo kod držim u glavi, i to na srpskom (dobro, ajd, foks-lalinski),
a... 'clipper code' nit upražnjavam, nit upunjavam :)
clipper.81bdm.,
-> #72, bulaja## (reference), a da se ona poziva u "normalnom" obliku f(), a ne sa
f(@a, @b)...
BDM.
clipper.82ppekovic,
-> #56, ratman>> append blank
>> go bottom
>> zz=lastinc()
>> replace nopat with zz && STA JE SA OVIM?
>> return 1
Onako usput, šta će ti go bottom posle append blank. Append
blank doda novi zapis na kraj baze i postavi pokazivač baze na
njega.
Paya
clipper.83ppekovic,
-> #57, ratman>> Mogu li se i kako vrednosti polja u bazi uopste menjati pomocu dbedit()
>> bez pomocne-user funkcije (Clp5.01)? Meni se cini da ne.
DbEdit služi samo za pregled sadržaja baze. Ako ti treba nešto
da menjaš imaš više načina. 1. koristi user funkciju pa tamo
menjaj. 2. Koristi browse() funkciju, ona sve sama radi. 3.
najbolje rešenje, koristi TBrowse i zaboravi dbedit.
Paya
clipper.84ppekovic,
-> #62, ratman>> case tip=7 && del:brisi zadnj zapis
>> delete
>> pack && treba li pakovanje?
>> return 2
Zapis nad kojim se izvrši delete nije izbačen iz baze, već je
samo označen kao obrisan. Da bi se izbacio koristi se komanda
pack. Na malim bazama, pack radi skoro trenutno, ali na iole
većim, ovo bi bilo neupotrebljivo sporo. Postoje dva rešenja. 1.
Tek kad izađeš iz dbedit-a (baci dbedit i koristi TBrowse) uradi
pack, dakle, ne posle svakog delete-a, nego posle svih (može i na
izlazu iz programa i sl.). 2. Ja sam uvek koristio onaj mnogo lepi
trik kojim eliminišeš potrebu za pack-om (osim u izuzetnim
slučajevima). Zamisli da imaš bazu sa poljima ime i prezime.
Indeksiraš bazu po imenu, a zatim, kad god obrišeš neki zapis,
umesto da uradiš delete, stavi samo chr(255) umesto prvog znaka u
imenu. Ovaj zapis će logično otići na kraj baze (po indeksu). Kada
hoćeš da ubaciš novi zapis. Prvo kažeš goto bottom, pa proveriš da
li je prvi znak chr(255). Ako jeste, to je obrisani, pa možeš da
prepišeš novi preko njega. Ako nije, dodaš novi. Naravno, prilikom
pregleda baze, obavezno pre stavi filter da je prvo slovo imena
različito od chr(255).
Paya
clipper.85ppekovic,
-> #68, zkrstic>> Btw, imam istu knjigu, i ima stvarno dobrih ideja oko načina
>> pisanja programa. Al' ovo... bilo bi malo previše ;))))
Da, mene su čak učili da prvo radim dekompoziciju pa da pišem
proceduralne apstrakcije, pa pseudo kod, a o kresanju grana,
svođenju algoritama na kanonični oblik, apstrakciji podataka,
šiframa, podšiframa, opisima stuktura i ostalim zezalicama da ne
govorim. Pant, pant, umorih se samo dok sam ih nabrojao, šta bi
tek bilo da sam za konkretan problem krenuo sve to i da radim.
:)))
Paya
clipper.86snemcev,
-> #65, banex>> Takođe, obrati pažnju na bug za savescreen() i restscreen(),
>> imaš file negde na sezamovom dir-u.
Tražih, al ne nađoh. Help me!
clipper.87ciki,
Ho!
Evo jedno pitanjce oko indeksa i to UNIQUE.
Recimo da imam bazu koja se sastoji od sledecih
polja:
****************
* PPXXXXXX.DBF *
****************
DATUM D 8
SIFRA N 5
S_JEL N 5
KOLICI N 5
Indeksi P1XXXXXX.NTX dtos(datum)+str(sifra,5)
P2XXXXXX.NTX str(sifra,5) ali UNIQUE
XXXXXX - To je nastavak koji dobija svaka datoteka u zavisnosti
o kojoj se RJ radi.(RJ je predstavljena sa 6 cifara,
PP100.DBF , PP923112.NTX ...)
I sada kada vrsim neko "knjizenje", za zadati datum, prvo otvorim
datoteku recimo (Use &dat_ime INDEX &ind_ime2) i to sa indeksom
p2xxxxxx.ntx ne bih li dobio sifre onih ljudi koji su radili toga
dana.Na osnovu toga formiram niz sa AADD ljudi koji su radili.
Zatim sledi zatvaranje svih datoteka, pa ponovo otvaranje sa svim
indeksima.
E sada nastaju problemi.Nekada jednostavno sve radi OK.
Ali nekada prosto prijavi gresku BASE/1132 usled velicine
niza. NE nisam napisao nesto kao declare aniz1Š0Ć, ali
sta je tu je.
P.S. Ako ste razumeli, a vi pokusajte da pomognete, a ako ne
zlo i nije.
Pozdrav Ciki!
clipper.88bulaja,
-> #86, snemcev││Takode, obrati paznju na bug za savescreen() i restscreen(),
││imas file negde na sezamovom dir-u.
│└───
│Trazih, al ne nadoh. Help me!
└───
R:\IBMPC\CLIPPER\
----------------------
cl5103 zip 31385 Spisak bugova u Clipperu 5.01 (Nantucket)
Koliko se secam, za savescreen() i restorescreen() ne pise da imaju
bagova, vec da nije navedeno da su njihovi default parametri (0, 0,
maxrow(), maxcol()).
clipper.89snemcev,
Probao sam Clipper preview iz Računara broj 07? i isti mi se
jako dopao. Pade mi na pamet ideja da se za prikaz na ekranu
iskoriste i extended VGA modovi (132 x nešto).
Koliko se ja razumem u asembler, sve se svodi na to da treba u
programima SAYTXT.ASM i VIEW.ASM konstante 160 zamenuti sa 264
(132*2). E, al sad prikaz neće korektno raditi u 80x25 modu.
Znači, treba ubaciti jedan if koji će ispitati koliki je max
broj kolona na ekranu, i u zavisnosti od toga dodeliti korektnu
vrednost ne-znam-ni-ja-kom-registru (nešto slično kao u
Clipper-u kad napišeš ax := 2 * MAXCOL()).
Sve je to lepo i krasno, al ja nemam apsolutno nikakva iskustva
u praktičnom radu sa bilo kojim asemblerom. Zato je moj predlog
da autor (nbatocanin) ili neko drugi ko ima i volje i vremena (i
dozvolu autora) uradi ovu izmenu u programu.
clipper.90korvin,
-> #85, ppekovic> Da, mene su čak učili da prvo radim dekompoziciju pa da pišem
> proceduralne apstrakcije, pa pseudo kod, a o kresanju grana,
Videćete vi, šprotivnici pseudo-koda kada se na divljem zapadu zaposlite
u nekoj programerskoj firmi (ovde treba isključiti Microsoft pošto tamo
samo igraju odbojku u hodnicima, pa se posle žale da im su im WIN puni
bagova :) pa kada vam budu tražili da vaš program treba da radi na pet šest
raznolikih mašina. Ovako mi se iskukao kolega koji se vratio iz
Johanesburga. žovek otišao da programira a nije napisao ni red u C-u,
Clipperu, Pascalu. Sve sam go pseudo-kod. Kad god pomislim na to naježim se
:))
clipper.91snemcev,
-> #88, bulaja>> cl5103 zip 31385 Spisak bugova u Clipperu 5.01 (Nantucket)
To već imam ;) Mislio sam da je nešto drugo u pitanju.
clipper.92snemcev,
Kad već spomenuh perview, dešavalo mi se na jednom 286 računaru
da program izvesno vreme radi OK, ali posle nekog vremena
prilikom izbora opcije koja poziva preview, Clipper javlja
grešku u stilu 'Can't open file'. Kod mene na 386 sve radi ok.
Da, config.sys ima dovoljno files-a (40) a program pozivam bez
onog //f=xx
clipper.93nbatocanin,
-> #66, dejanr> Kažu da je ovo mnogo ružno međutim meni nikad nije pravilo smetnje.
Meni ne samo da nije ružno, nego mislim da je mnogo lepše i bolje kad
se promenljiva deklariše tu gde se koristi. Naravno, ako već postoji
od ranije, što se ne bi koristila :)
clipper.94nbatocanin,
-> #72, bulaja> Postoji li neki nacin da se funkciji parametri prenesu po
> imenu (reference), a da se ona poziva u "normalnom" obliku
> f(), a ne sa DO..WITH..?
Clipper i ne pravi neku naročitu razliku između funkcija i procedura.
Može sa F (@x, @y), ako si na to mislio.
clipper.95petrovics,
-> #84, ppekovic>> prepises novi preko njega. Ako nije, dodas novi. Naravno, prilikom
>> pregleda baze, obavezno pre stavi filter da je prvo slovo imena
>> razlicito od chr(255).
Nadam se da nisi mislio na SET FILTER.
Ako si mislio, izem ti ustedu na PACK kad rasipas vreme na SET FILTER ;))
clipper.96zkrstic,
-> #90, korvin> raznolikih mašina. Ovako mi se iskukao kolega koji se vratio iz
> Johanesburga. žovek otišao da programira a nije napisao ni red u
> C-u, Clipperu, Pascalu. Sve sam go pseudo-kod. Kad god pomislim na
> to naježim se
Iskukao ???? Pa to je bre najdivnija stvar na svetu, pišeš
program otprilike O;) nema grešaka sem semantičKih i kardinalnih,
ali to se već da srediti :) Neću te pitati zašto se vratio, niti
ću komentarisati eni mor' imam nezgodne stavove ;))))
Da se dogovorimo: Ja koristim svoj neki metod (prepametna
glava;) da sve što je tutinski tučem iz malog mozga, da ne kažem,
koristim maximalno cut&paste i sličNo iz nekih drugih svojih so(R)-
seva, ali kad dođe do neke kritične obrade ili tako nekog zameša-
teljstva, onda direktno u prg ubacujem kao komentar nešto tipa pse-
udo kod. Jednostavno, teram po stavkama 1, 2, 3... sa podstavkama,
kad zatreba, šta i kako raditi. Sve to radim veoma opisno, da bih
znao kroz pola sata šta sam hteo :) Na taj način čuvam ideje :)))
A i to je jedini spas, obzirom da 80% programa pišem u saradnji sa
bratom, paralelno na dva računara, često puta, tako da zna da bude
veoma ;) zanimljivo kada jedan ili drugi zaboravimo da napišemo ta-
ko nešto. Zanimljivo do bola ;)))) Ali... prateća pojava je da su
nam sorsevi ogromni... :)))
Zkr :)
clipper.97snemcev,
-> #88, bulaja>> cl5103 zip 31385 Spisak bugova u Clipperu 5.01 (Nantucket)
To već imam ;) Mislio sam da je nešto drugo u pitanju.
clipper.98snemcev,
Kad već spomenuh perview, dešavalo mi se na jednom 286 računaru
da program izvesno vreme radi OK, ali posle nekog vremena
prilikom izbora opcije koja poziva preview, Clipper javlja
grešku u stilu 'Can't open file'. Kod mene na 386 sve radi ok.
Da, config.sys ima dovoljno files-a (40) a program pozivam bez
onog //f=xx
clipper.99snemcev,
-> #89, snemcevJoš jedno pitanje u vezi sa preview-om.
Recimo ovako. U programu imam 2 izveštaja i za oba hoću preview.
Izaberem prvi izveštaj, pogledam ga, pritisnem npr. <End> ili
<Tab> da bih video i ostatak izveštaja, odustanem od štampanja,
posle izvesnog vremena izberem taj ili onaj drugi izveštaj, kad
ono, umesto da preview počne od prve kolone, on počinje od one
kolone za koliko sam pomerio prikaz prilikom pregleda prethodnog
izveštaja. Jest' da zvuči zakukuljeno, al ko je probao,
shvatiće.
Dakle, trebalo bi mi da preview uvek počne od prve kolone.
Probao sam sa jednim KEYBOARD CHR( K_HOME ) pre poziva procedure
Prt3(), ali to ne rešava problem. Help me.
clipper.100jtitov,
-> #85, ppekovic> Da, mene su cak ucili da prvo radim dekompoziciju pa da
> pisem proceduralne apstrakcije, pa pseudo kod, a o
> kresanju grana,
.....
> tek bilo da sam za konkretan problem krenuo sve to i da
> radim.
Dobro je kolega, sedam.
clipper.101ndragan,
-> #52, bulaja/ da ih trpas u memo polja, mada ne znam gde bi ti trebao SaveScreen()
/ vezan sa slogovima baze :).
Ja sam to radio prošle godine. Tako se pravi demo - slikaš lepo šta ti
aplikacija radi, a snimljene ekrane trpaš u bazu; posle samo vrtiš to
u nekom razumnom tempu, ubaciš u autoegzek da se poziva demo i onda
ostaviš to u izlogu. Superiška - čak su one velike bele ptice (*) u
knjižari uspevale da pokrenu stvar i da se vrti ceo dan.
Bue_ Ndragan, patents pending
(*) nisu labudovi
clipper.102ndragan,
-> #73, nbatocanin/ Ali ako ekran nema simbol Chr(26) (EOF)!
Prvo sam se zablezeknuo ugledavši ovo, a onda sam se setio da pričamo o
kliperu. Sorry, folks. Rešavajte to na neki drugi način, u foks prou je
normalno da se bilo_kakav_fajl ili bilo_kakav_niz_bajtova
proizvoljne_dužine (ne veći od diska, naravno) može strpati u memo, pa
makar sadržavao ne znam koju količinu nezgodnih znakova.
clipper.103ndragan,
-> #70, jtitov/ Danas dajem prednost citljivom kodu nego ustedi od par (kilo)bajtova.
Kamo lepe sreće. Tih par kilobajta su obično sa rednim brojevima 524.,
525. i onda ti sve pukne jer obično nemaš 526. Zato i mislim da nije
loše imati dve-tri promenljive za višestruku jednokratnu upotrebu.
clipper.104ndragan,
-> #71, andrejl/ uvek mi se čini da grešim.
Možda uvek i grešiš :) ? Drži se nekog načela, recimo "jedan posao,
jedna rutina"; "ako ovo ponavljam već u trećoj rutini, vreme je da ga
izbacim u potprogram", "ove dve rutine se razlikuju samo u tri bajta; da
napravim jednu pa da se samo poziv razlikuje po parametru više".
Dužina rutine mislim da nije kritična, ali bilo šta što je duže od tri
ekrana je zgodno za izbegavanje.