clipper.416dusanp,
-> #414, ppekovic=> driver-e za Paradox i FoxPro koji omogućuju CA-Clipper-u
=> da čita i
Doslo im u glavu...
clipper.417nbatocanin,
-> #412, snemcev> Pa i ne mora (ili mora?). Možda bi rešenje bilo u
> zadavanju problematičnog GET-a kao
>
> oGet := GetNew()
Naravno, ali koliko sam shvatio Dejana, njemu treba nešto da ne menja
postojeće programe. Inače, ja koristim sledeću definiciju:
#command @ <row>, <col> GETD <var> ;
OPTIONS <arr> ;
[VALID <valid>] ;
[WHEN <when>] ;
;
=> SetPos( <row>, <col> ) ;
; AAdd( ;
GetList, ;
_GET_( <var>, <(var)>, , <{valid}>, <{when}> ) ;
) ;
; ATail(GetList):cargo := <arr> ;
; ATail(GetList):reader := { |o| xRead(o) }
#command @ <row>, <col> SAY <sayxpr> ;
[<sayClauses,...>] ;
GETD <var> ;
[<getClauses,...>] ;
;
=> @ <row>, <col> SAY <sayxpr> [<sayClauses>] ;
; @ Row(), Col()+1 GETD <var> [<getClauses>]
i tako dobijam mogućnost za unos vrednosti koje uzimaju vrednost iz
nekog skupa. Na primer, ovako:
@ 0,0 SAY "DATUM..." GET m_dat
@ 1,0 SAY "PREGLED." GETD m_preg OPTIONS {"Ekran","Stampac","Datoteka"}
@ 3,0 SAY "DATUM..." GET m_dat
READ
Funkcija xRead učitava ovakvu vrednost.
clipper.418bulaja,
-> #414, ppekovic│Cene:
│CA-Clipper - za ograniceno vreme $149, posle $795.
└─── ^^^
Nazalost :( nije bas tako (a taman sam resio da ga kupim :) -
cena od 149 USD vazi samo za upgrade registrovanih korisnika.
> List priced at $795, CA-Clipper 5.2 is available to registered
> CA-Clipper developers for a limited time at $149.
clipper.419toma,
-> #365, petrovics■■>> Ma znao sam ja sta je, problem je sto se ne brisu sve (neke se
■■>> brisu a neke ne).
Ukoliko se program startuje iz jednog, a završava se u drugom
direktorijumu na disku, i uz to sve nije rečeno clipper-u
koji mu je SWAPPATH, mođe da dodje do pomenute situacie.
■■>> ... Najveci problem je sto se javljaju i LOST
■■>> klasteri koje moras da sredjujes sa NDD. Inace ovo se desava jos
■■>> jednom mom prijatelju, ovde u Nisu.
U jednom delu programa je pisalo:
use gl_knj
index on DATUM to gl_knj
reindex
use
u slucaju da .NTX ne postoji, indexiranje se radi dva puta, i ako
je pri tome .DBF malo veći, clipper pravi neku svoju privremenu
datoteku i posle toga se javljaju LOST klasteri. Nije pomoglo ni
postavljanje environment promenljive TEMPPATH ali je zato
pomoglo:
ferase("gl_knj.ntx")
use gl_knj
index on DATUM to gl_knj
use
Probaj pa javi.
clipper.420dejanr,
Imao sam jedan problemčić sa Clipper-om, pa reko' možda još nekoga muči...
a možda i otkrivam toplu vodu :) Naime, ja nekako ne volim da se izlaskom iz
poslednjeg GET-a sa Enter READ završi, imam utisak da se to prečesto dešava
slučajno, i zato volim da READ stavim u petlju, a da se izlazi nekim
funkcijskim tasterom ili sa Esc. U tom slučaju Enter u poslednjem polju
naprosto "baca" u prvo polje i tako u krug.
Problem je nastao kada se dogodilo da, zbog raznih READ ... WHEN uslova,
program dođe u situaciju da ne treba da izvrši ni jedan GET (recimo, slog
je "storniran" i nisu moguće izmene). Po mojoj logici, trebalo bi da tada
ispiše masku i da čeka, da korisnik lupi svoje F10 ili Esc ili ne znam šta.
Zaista program ispiše masku, ali nema izlaska (osim sa Alt C ;) nego sve
ostaje u mrtvoj petlji.
Pitah na BIX-u i evo (efektnog!) rešenja koje nudi moderator konferencije
Clipper:
==========
clipper/tech.questions #2708, from irae, 198 chars, Wed Mar 3 01:23:07 1993
Comment to 2707.
----------
I'd make the do while loop dependent on the when conditions or possiblt
exit on lastkey() = 0
do while .t.
keyboard chr(0)
inkey()
read save
if lastkey() = 0
exit
endif
enddo
clipper.422ndragan,
-> #411, oki./ Domaći urađen :) :
Odličan, 5 za tromesečje, sedi :)
clipper.423bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
nflib21 arj 171327* Clipper NanForum Toolkit biblioteka ver 2.1
Nisam jos gledao :) sta je promenjeno u odnosu na verziju 2.0.
Nazalost, jos nismo nabavili i source za ovu verziju, tako da
se do daljeg ostati u dir-u kompletna verzija 2.0 (lib, source,
ostalo).
clipper.424mandrejevic,
Radim izvesno vreme sa Clipper 5.01a Update (Computer Associates)
i danas me je iznenadila po prvi put poruka :
MS Run-Time Library - Copyright (:
^^ i ovo je deo poruke !
uz zaglavljenje...
Da li da brisem ovaj Update ??
clipper.425zkrstic,
-> #424, mandrejevic>>Radim izvesno vreme sa Clipper 5.01a Update (Computer Associates)
>>i danas me je iznenadila po prvi put poruka :
>>MS Run-Time Library - Copyright (:
>> žž i ovo je deo poruke !
>>uz zaglavljenje...
>>Da li da brisem ovaj Update ??
čekaj, morao je još neki broj da ti da ili nešto slično ? U svakom slu-
čaju, pokušaj da se setiš ili da ga nateraš ponovo na isto, da bar znamo šta
piše tačno, a u pitanju je očito nešto interno do samog Clippera, pošto je
on pisan u MSC-u (nisu imali 16-a posla;) )
Ne brini i ne briši ga, zakucavam ga ja svaki bogovetni dan, pa ga još
uvek nisam kazniJo sa nedim del. /s/z ;)
Zkr
clipper.426mjevta,
Voleo bih da ovo prokomentarisu iskusniji Sezamovi
Clipperasi:
Nedavno sam napisao komandu koja je trebalo da predstavlja
jednostavnu implementaciju Check - boxa a la FOX u Clipperu
a izgledala je otprilike ovako:
#command @ <row>, <col> CHECKGET <var> ;
[TEXT <text>] ;
[VALID <valid>] ;
[WHEN <when>] ;
[COLOR <color>] ;
=> AAdd( GetList, ;
GetNew( <row>, <col>, ;
{|| IF( <var> ,"[X] ", "[ ] " ) + #<text> }, , , ;
IIF( #<color> == "", "W/N,N/W", <(color)> ) ) ) ;
; ATail(GetList):reader := { |o| chkRead( o, @<var> ) } ;
; ATail(GetList):preBlock := <{when}> ;
; ATail(GetList):PostBlock := <{valid}>
Medjutim, kompajler mi je uporno prijavljivao gresku
"Incomplete statement or ... " iako je bilo ocigledno da u kodu
nema niceg sintaksno neispravnog. Na kraju se, posle DOSTA
peripetija, ispostavilo da je problem u direktnom
"dodeljivanju" markera pretvaranja u blok (naknadno sam utvrdio
da je isti slucaj i sa ostalim result markerima IZUZEV glupog
- #<...> )
Naime, kada sam, probajuci razne varijante, zadnje dve linije
naredbe zamenio sa:
; ATail(GetList):preBlock := IF(LEN(#<when>) != 0,<{when}>,) ;
; ATail(GetList):PostBlock:= IF(LEN(#<valid>)!= 0,<{valid}>,)
sve je radilo kako treba. Dugo resenje bilo je:
; ATail(GetList):preBlock := TransMark( <{when}> ) ;
; ATail(GetList):PostBlock := TransMark( <{valid}> )
gde je:
FUNC TransMark( block )
RETURN block
Pa, posto u NG - u nisam primetio nikakvo upozorenje
oko dodeljivanja r. markera odn. rezultujuceg teksta koji mu
odgovara a od literature za Clipper imam samo Strejlijevu
"bibliju" za S87 voleo bih da mi neko pojasni da li su za
ovako neobicno ponasanje Clipperovog pretprocesora krivi
gremlini ili sam ja nesto zabrljao u postavci komande.
Pozdrav, Jevta.
clipper.427d.petrovic,
Može li nekako da se izbriše, poništi, MENU TO naredba ?
Ako imam negde set key pa i pritisnem inkriminisani key treba da se
poništi ta menu to naredba. Evo osakaćenog primera, valjda će biti
jasno ...
č 24,30 say "Press Esc to exit..."
do while .t.
do while .t.
setcursor(0)
mm:=2
bek()
č red,21 prompt " In "
č red,29 prompt " Out "
menu to mm && Šta ako ovde pritisne F-10 ???
do case
case mm==0
close databases
return
case mm==1
vrsta_t:=.t.
case mm==2
vrsta_t:=.f.
endcase
setcursor(1)
if vrsta_t
č red,42 clear to red,48
č red,21 get qty_t picture "9999999" valid ravno(qty_t)
č red,38 get dest_t picture "!XX" valid uscrec(6,dest_t)
else
č red,29 get qty_t picture "9999999" valid ravno(qty_t)
č red,38 get dest_t picture "!XX" valid uscrec(6,dest_t)
č red,42 get uc_t picture "!XX" valid uscrec(1,uc_t)
č red,46 get rc_t picture "!XX" valid uscrec(2,rc_t)
endif
č red,54 get wc_t picture "!XX" valid uscrec(4,wc_t)
read
if lastkey()==27
close databases
return
endif
č 24,27 say "Press F-10 to save / Esc to exit..."
setcursor(0)
tt:=inkey(0)
do case
case tt==27
close databases
return
case tt==-9
do magunossn
exit
otherwise
set key -9 to MagunosSn
endcase
enddo
enddo
close databases
return
*******************
proc magunossn
set key -9 to
clear gets
* ovde dodati nešto što će sa menu to da uradi isto što i clear gets
* sa naređanim get-ovima ??? ima li nešto takvo ?
append blank
replace...
replace...
return
clipper.428mandrejevic,
-> #425, zkrstic>│ cekaj, morao je jos neki broj da ti da ili nesto slicno ? U
>│ svakom slu- caju, pokusaj da se setis ili da ga nateras ponovo
>│ na isto, da bar znamo sta pise tacno, a u pitanju je ocito
>│ nesto interno do samog Clippera, posto je
Pise tacno kako sam prepisao...
; odnosno,
Prepisao sam tacno kako je pisalo...
; a i obrisao sam ga ...
clipper.429mjevta,
-> #426, mjevta
>ĆĆ Medjutim, kompajler mi je uporno prijavljivao gresku
>ĆĆ "Incomplete statement or ... " iako je bilo ocigledno da u
Uh, zatrcao sam se sa pitanjem. U stvari nema tu niceg
spornog. U NG-u lepo pise da ukoliko nema ulaznog teksta result
markeri nece sadrzati nista ( izuzimajuci dumb r.m. koji ce u tom
slucaju biti zamenjen praznim stringom - ""). Tako da ako u
gorepomenutoj naredbi klauzule WHEN i/ili VALID nisu upotrebljene
rezultat njenog pretprocesiranja bice:
Varijabla:= //(nista!=(NIL==sto_sam_ja_ko_zna_zasto_ocekivao))
Nije ni cudo sto se prevodilac bunio.
Pardonirajte na neopravdanom opterecivanju PAD - a.
Jevta.
clipper.430mbulat,
Ako neko moze ,bio bi mu veoma zahvalan, da mi napishe kako bi
otprilike trebalo da izgleda koriscenje funkcije MEMOEDIT i naravno
mogucnost da se podaci osim da se gledaju mogu i da unesu u memo polja
ja sam pokusavao ali nesupevam da ih unesem Ě...
Unapred hvala ..
mb :)
clipper.431ppekovic,
-> #427, d.petrovic>> menu to mm && Šta ako ovde pritisne F-10 ???
Ništa. Ako hoćeš da F10 ima nekog efekta onda definiši
set key K_F10 to proc_f10
a u proceduri postavi neko fleg kako bi kasnije mogao da
ispitaš da li si izašao sa f10 i udari jedno keyboard(27).
Paya
clipper.432pjankovic,
-> #430, mbulat> otprilike trebalo da izgleda koriscenje funkcije MEMOEDIT
> i naravno
Za pocetak probaj jednostavno:
replace memofield with memoedit(memofield)
Memofield je naziv memo polja u bazi. Unos zavrsavas sa <Ctrl>+<W>.
clipper.433nbatocanin,
-> #415, ndragan> Ne znam na šta misliš, možda na sintaksu baza.polje umesto
> baza->polje; ili na SQL kursor, koji je nekakva virtuelna
> baza (ne postoji, ali radi)
Ako te ne mrzi, kaži po nekoliko reči o svemo nabrojanom.
> ili... može da ispadne da si mislio na nešto što je uvedeno još u mfox+?
Ne preteruj ;)
clipper.434nbatocanin,
Beše neko pitao šta znači poruka "Rules not found in EXE"? E, to se
dobije kada se CLIPPER.EXE obradi sa SCAN /AV.
clipper.435d.petrovic,
-> #430, mbulatĂ> Ako neko moze ,bio bi mu veoma zahvalan, da mi napishe kako bi
Ă> otprilike trebalo da izgleda koriscenje funkcije MEMOEDIT i
Ă> naravno
memoedit(ime_baze,2,2,23,77,.t.)
========= =
prozor .t. <= čitanje i pisanje
.f. <= samo čitanje
clipper.436d.petrovic,
-> #431, ppekovicĂ> Ništa. Ako hoćeš da F10 ima nekog efekta onda definiši
Ă>
Ă> set key K_F10 to proc_f10
Khm, sad će me teraš da pogledam šta sam poslao ;). Pa to treba
da radi tek kad prođe jednom kroz petlju i onda se vrti ponovo, tj.
neko vrši ispravku onog što je uneo greškom.
Ă> a u proceduri postavi neko fleg kako bi kasnije mogao da
Ă> ispitaš da li si izašao sa f10 i udari jedno keyboard(27).
E, to mi je trebalo, samo mi nije palo na pamet, mada..., već
ispitujem:
if lastkey==27 && Odustaje od unosa
close databases
return
endif
Hvala za ideju, iskombinovaću nešto takvo samo... kako da znam dali
sam u proceduru koja snima otišao iz te linije gde je MENU TO ili gde
je bio inkey(0) ? Nije mi baš praktično da prenosim broj linije, ne
smem da menjam ništa ispred te linije.
clipper.437dejanr,
"Zanimljiv" problem koji mi večeras uze dva sata vremena :(((
Imam program koji radi u mreži, pri čemu su u principu sve datoteke
otvorene sa USE ... SHARED, po potrebi se posle zaključavaju slogovi
kad se koji menja. Međutim, u jednoj grani programa mora da se obezbedi
da korisnik bude sam na mreži, kako bi se izvršilo reindeksiranje i
neko regenerisanje podataka (operacija "daBogda_nikad_ne_zatrebala").
žinilo mi se najjednostavnijim da to obezbedim ovako:
SELECT(aUsers)
USE users EXCLUSIVE
IF NetErr()
tralala, ne moz to tako
RETURN(.f.)
END IF
indeksiraj šta treba itd
SELECT(aUsers)
USE users SHARED
RETURN(.t.)
USERS je fajl koji inače sve kopije programa neprekidno drže otvoren
jer im stalno treba. Ideja je bila da, ako ima bar jedan korisnik, neće
uspeti USE users EXCLUSIVE i rešena stvar.
Dok je bilo na jednom računaru, lepo je radilo ali kad ga stavih na Novell,
pustim jednog korisnika, pustim drugog, uđem u ovu opciju kad ono TRAS,
kaže Open Error na onoj USE liniji, do IF NetErr() ni ne dođe. MajkuMu.
Probam samo program od opisanih 10 linija, radi lepo. U mom "velikom"
programu, ne radi. Šetao sam to po raznim modulima, i ispadne da radi
samo ako je pri početku, a nigde u radnom delu neće :(
Posle silnog lupanja glave, setim se da sam u program instalirao svoj
error handler, kao da sve izgleda ozbiljnije i da posle greške ispiše
poruku i ostane u programu, a ne da izleti u DOS. Isključim error handler,
kad ono radi :) Tu mi već sine da malo pročešljam uputstvo za Clipper, kad
ono baš negde na strani 6-3 a oni opisuju moj slučaj, kaže error handler
treba da izgleda otprilike ovako:
FUNCTION MyError(e)
IF e:genCode== EG_OPEN .AND. e:canDefault .AND. NetErr()
RETURN(.f.)
END IF
... ostalo tretiranje greške
RETURN NIL
Sreći nigde kraja, stavim ja ovo u program kad ono... ista meta, isto
odstojanje :(((( Pogledam debagerom, kad dođe u MyError a ono jeste
e:genCode == EG_OPEN i jeste čak i e:canDefault ali NetErr je .F.
MajkuMu^2 :( Ništa, 'ajmo da probamo da ga vratimo iz error procedure
ako je greška nastupila na liniji broj XXXX a na toj liniji je rečeno
USE users EXCLUSIVE (ovo bi bilo mnogo ružno rešenje jer bih posle svake
dodate linije morao da menjam i ovu proceduru, ali programirao sam ja
na TI-59 sa apsolutnim adresiranjem pa sam i to preživeo ;)) Đavola,
zaista se vrati u red iza USE ali je i tamo NetErr()=.f. pa se ne može
uočiti greška.
Tu sam već u totalnoj komi počeo da pregledam one primere koji idu uz
Clipper, reko' možda odnekud nešto iskoči. I voila, u nekakvom
direktorijumu .SYS (koji je, naravno, na samom dnu stabla e da bi ga
čovek poslednjeg pregledao ;) nađem nešto što se zove ERRORSYS.PRG
a ono tamo... kako se tretiraju greške ;) Magija je u tome da se na
početak error procedure stavi:
if e:genCode == EG_OPEN .and. e:osCode == 32 .and. e:canDefault
NetErr(.t.)
return (.f.)
end if
Kad već stavljate to, ćušnite i sledeće, tamo takođe stoji pa je
valjda potrebno za sličan fenomen kod append blank:
if e:genCode == EG_APPENDLOCK .and. e:canDefault
NetErr(.t.)
return (.f.) // NOTE
end if
Posle te "sitne" izmene, program radi baš kao što sam želeo. Sreća
što je onaj što je pisao uputstvo negde u Americi, inače bi mu...
da ne kažem šta ;>
clipper.438dr.grba,
-> #426, mjevta
>> [WHEN <when>] ;
>> [COLOR <color>] ;
>> => AAdd( GetList, ;
>> GetNew( <row>, <col>, ;
>> {|| IF( <var> ,"[X] ", "[ ] " ) + #<text> }, , , ;
>> IIF( #<color> == "", "W/N,N/W", <(color)> ) ) ) ;
Namerno sam ovako isekao quote.
U knjizi Rick-a Spence-a (topla preporuka!) se puno govori o ovakvim
i slicnim konstrukcijama. Nisam posebno verziran, ali mi se cini da ti
u desnoj strani opisa komande nedostaje promenljiva <when>. Mislim da
postojanje promenljivih komande mora biti tacno upareno na obe strane,
a da redosled nije bitan (mozda se jave bolji poznavaoci oblasti, izvinjavam
se ako gresim). Cinjenica je da opis komande prestaje onim IIF za boju...
Nadam se da ces namirisati pravi trag.
Pozdrav, dr ÔpŰa
clipper.439ppekovic,
-> #436, d.petrovic>> Hvala za ideju, iskombinovaću nešto takvo samo... kako da znam dali
>> sam u proceduru koja snima otišao iz te linije gde je MENU TO ili gde
>> je bio inkey(0) ? Nije mi baš praktično da prenosim broj linije, ne
>> smem da menjam ništa ispred te linije.
Uvedi neki flag kojem ćeš da postavljaš različite vrednosti
ispred MENU TO i ispred inkey(0).
Paya
clipper.440mbulat,
probacu on-line
mrzi me da pishem reply na one poruke u Ęvezi memoedit aliÝ
hvala u svakom slucaju :)
Problem je u sledecem
Kad ocu da zapishem znaci nesto u taj memo koristim se sa CRTL-W
ali problem je u tome sto bar meni to nepolazi sa rukom bilo da
je oblik Ć-î
memoedita
memoedit(polje,x1,y1,x2,y2)
ili
memoedit(polje,x1,y1,x2,y2,.t.)
Plasim se da sve to ima veze sa ĐWeonim objektima za tbrowse
jerbo mi se i ti unosi nalaze u takvoj jendoj proceduri
jerbo kad je u nekom posebnom programu bez toga pokrenem radi
a ovako nece :((
Nadam se da sam bio bar malko jasÂAšan
mb.
clipper.441petrovics,
-> #419, toma>> u slucaju da .NTX ne postoji, indexiranje se radi dva puta, i ako
>> je pri tome .DBF malo veci, clipper pravi neku svoju privremenu
>> datoteku i posle toga se javljaju LOST klasteri. Nije pomoglo ni
>> postavljanje environment promenljive TEMPPATH ali je zato
>> pomoglo:
>>
>> ferase("gl_knj.ntx")
>> use gl_knj
>> index on DATUM to gl_knj
>> use
>>
>> Probaj pa javi.
Mora da je to. Do duse nisam stigao da probam ali mislim da se i
meni problem javlja u istoj situaciji.
Hvala na objasnjenju.
clipper.442d.petrovic,
-> #439, ppekovicĂ> Uvedi neki flag kojem ćeš da postavljaš različite vrednosti
Ă> ispred MENU TO i ispred inkey(0).
Dogovoreno! :)
clipper.443bulaja,
Evo jedne biblioteke za malo lepse menije u Clipper-u.
Pravljena je da bude funkcionalni ekvivalent PROMPT...MENU TO sistemu,
ali uz poboljsanje da se moze definisati proizvoljan hot-key unutar
prompta (a ne samo da to moze biti prvo slovo) i da se on lepse
(istaknuto) prikazuje.
Btw ima u NanForLIB slicnih funkcija, ali ove moje su bolje :) (pise u
dokumentaciji i zasto). Ovo je tek prva verzija, treba da dodam jos neke
stvari, ali ko hoce nek uzme i pogleda.
Probajte, besplatno je :), a prilozen je i izvorni kod (source).
bumenu10.arjclipper.444bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
num2str zip 3290 Konverzija brojeva u slovni oblik (Clipper 5 & FoxPro)
Num2Str - Numeric To String
U arhivi se nalaze dve funkcije za konverziju brojeva u slovni oblik.
Funkcije su namenjene programskim jezicima Clipper 5 i FoxPro. Za
eventualne komentare se obratite autorima ili u odgovarajucu temu
Sezamove konferencije PC.PROG. Evo nekih informacija o funkcijama:
Datoteka Jezik Autor Sezam
──────────── ───────── ─────────────── ──────────
NTOC.PRG Clipper 5 Nenad Batocanin nbatocanin
SLOVIMA.PRG FoxPro MPA Zrenjanin ndragan
SEZAM, 03/93
clipper.445bulaja,
-> #444, bulaja│num2str zip 3290 Konverzija brojeva u slovni oblik (Clipper 5 & FoxPro)
└───
Zaboravih da kazem da su u arhivi i NTOC i SLOVIMA najnovije verzije
(novije od onih koje su bile okacen ovde) sa ispravljenim bugovima.
clipper.446nbatocanin,
-> #427, d.petrovicSET KEY K_F10 TO Break()
BEGIN SEQUENCE
...
MENU TO
...
END SEQUENCE
clipper.447nbatocanin,
Uočio sam neke loše strane Blinkera:
Prvo, desilo mi se na jednom 286 računaru da program linkovan
Blinkerom jednostavno zaglavljuje računar. Stvar je sigurno u
linkeru, jer isti program linkovan RTLinkom radi bez komplikacija.
Drugo, inkrementalno linkovanje rezultuje kodom koji nemilosrdno
troši memoriju: znači >>obavezno<< finalnu verziju prevodite sa
INCREMENTAL OFF.
clipper.448dusanp,
-> #443, bulaja=> Probajte, besplatno je :), a prilozen je i izvorni kod
=> (source).
Lepo.
Nego... jel si namerno na 2 mesta napisao "kopjuteri"???
Doradi jos onih par stvari pa salji.
clipper.449dusanp,
-> #447, nbatocanin=> Drugo, inkrementalno linkovanje rezultuje kodom koji
=> nemilosrdno troši memoriju: znači >>obavezno<< finalnu
=> verziju prevodite sa INCREMENTAL OFF.
Ili sto je jos bolje, finalnu verziju prevodite RTLinkom.
clipper.450zkrstic,
-> #449, dusanp> => Drugo, inkrementalno linkovanje rezultuje kodom koji
> => nemilosrdno troši memoriju: znači >>obavezno<< finalnu
> => verziju prevodite sa INCREMENTAL OFF.
>
> Ili sto je jos bolje, finalnu verziju prevodite RTLinkom.
Ni slučajno! Pa glavna dobit kod Blinkera je u Swapovanjima i upra-
vljanju OVL-ova.
Nego, daj *.lnk fajl tog programa koji ti pravi haos, tačnije, re-
ci mi šta koristiš od "tuđih" .OBJ i .LIB ? Ima nekih libova i čuda koji su
u dokumentaciji obeleženi kao ne-overlejabilni (jebote*_koja_reč) ;)
Zkr
clipper.451ndragan,
-> #433, nbatocanin/ Ako te ne mrzi, kaži po nekoliko reči o svemo nabrojanom.
Hm. Duga priča. Svodi se na to da mi se sad bilo kakav izveštaj (tj. prg
koji ga pravi) skrati na dva ekrana:
pootvaraj - desetak redi
pitaj korisnika odakle dokle, kojim redosledom, u kom formatu hoće -
još desetak redi
Select to_i_to (polja, izrazi tipa sum(), iif(), avg(), max(), cnt()
itd) from... baza1, baza2... where uslov1 and uslov2 itd...
... order by polje1, polje2...
(ili) ... group by baza1.polje1, baza1.polje2... (grupisanje za sum() itd)
into cursor / table (dbf) / šta_ono_beše
(Ako postoje strukturni indeksi za (neka) polja koja se spominju u Where
opciji, radi stravično brzo. Imao sam 15MHz 286 server u RPTI mreži (486
je bio u kvaru ;( ), i izvadio je bruto bilans iz 80000 stavki za minut
ipo, a za to vreme je sa sprata niže knjižilo još dvoje.)
Repo form taj_i_taj
Pozatvaraj, pozdravi se i javi da si gotov.
Programi koji su ranije bili duuugački (čak do 5-8K) sad su se sveli
na 1-3K, a i to zato što više volim jedan program koji radi tri srodna
izveštaja (uz par parametara radi ovako ili onako), nego tri programa sa
po jednim - kad treba nešto čačkati, čačka se samo jednom.
Evo jednog primera za Select:
select Prom.VD, Prom.KUPAC, Prom.KONTO,;
Prom.DATDOK, Prom.DUG, Prom.veza,;
sum(IZNOS*IIF(DUG,1,0)) as izndug, sum(IIF(DUG,0,IZNOS)) as iznpot;
FROM Prom;
WHERE Prom.KONTO = _konto;
AND Prom.datdok <= _dn2 ;
and Prom.kupac betw _k1 and _k2 ;
GROUP BY Prom.KUPAC, Prom.KONTO, Prom.datdok ;
into curs pku
Ovo je priprema za izveštaj o prometu kupaca i/ili dobavljača od
šifre do šifre (_k1 do _k2), na dan _dn2 (posle se razdvaja na pre _dn1
i od _dn1 do _dn2 i to u samom riportu - ima lokalne promenljive), za
zadati konto (može i prazan - trimuje se, pa se dobija više konta).
Ako je neko raspoložen da pogleda na šta je isti program ličio
ranije, pa da se zajedno zgražavamo. Radilo je i ono, ali ovo RADI.
/> ili... može da ispadne da si mislio na nešto što je uvedeno još u
/> mfox+?
/ Ne preteruj ;)
Svaki Ciga svoga konja... a ove priče o kobolu i foksu (vidi neku od
prethodnih tema) me podsećaju na mog drugara iz firme, kad je prešao sa
kobola na foks. Kaže 'osećam se kao klinac u poslastičarnici, lepo ne
znam šta prvo da probam. I onda ne znam sintaksu, znam neke moguće
varijante, probam intuitivno, kako bi bilo kad bih ja pisao sebi
interpreter, ... kad ono radi baš to što sam ja smislio'.
clipper.452dusanp,
-> #450, zkrstic=> Ni slučajno! Pa glavna dobit kod Blinkera je u
=> Swapovanjima i upravljanju OVL-ova.
Da li si 100% siguran da je tako? Koliko sam ja
nacuo, blinker dosta trapavo pravi overleje, a RTL
to radi kako treba.
Mislio sam da je glavna prednost blinkera brzina,
a kad ono...
clipper.453zokidr,
Juce sam podigao Nanforum 2.1 i malo ga testirao. Ispostavilo se
da neke funkcije ne rade! FT_XBOX(), na primer, nisam mogao da
nateram da napravi ram i sl. Dok je u prethodnoj verziji sve bilo o.k.
Da li jos neko ima slicna iskustva?
Zoran
clipper.454bulaja,
-> #448, dusanp│Nego... jel si namerno na 2 mesta napisao "kopjuteri"???
└───
Jok :), imam obicaj da pri veoma brzom kucanju (a uputstva kucam vrlo
brzo jer me mrzi da ih mnogo smisljam i trosim vreme :) ispustam ili
permutujem slova :). Doradicu BuMenu ovih dana (nije neki vremenski
zahtevan posao), poslacu kad zavrsim.
clipper.455nbatocanin,
-> #440, mbulat> Plasim se da sve to ima veze sa ĐWeonim objektima za
> tbrowse
Nije 100%. Mora da je stvar u nečem drugom.
clipper.456nbatocanin,
-> #450, zkrstic> Nego, daj *.lnk fajl tog programa koji ti pravi haos,
> tačnije, re- ci mi šta koristiš od "tuđih" .OBJ i .LIB ?
> Ima nekih libova i čuda koji su u dokumentaciji obeleženi
> kao ne-overlejabilni (jebote*_koja_reč) ;)
Nema ništa tuđe sve sam go Clipper ;) i moj ASM koji radi u svim
programima. Zašto bi isti program linkovan RTLinkom radio besprekorno
već 2 godine?
clipper.457zkrstic,
-> #452, dusanp> => Ni slučajno! Pa glavna dobit kod Blinkera je u
> => Swapovanjima i upravljanju OVL-ova.
>
> Da li si 100% siguran da je tako? Koliko sam ja
> nacuo, blinker dosta trapavo pravi overleje, a RTL
> to radi kako treba.
Veruj mi na reč :) žak je najveći deo prateće knjige posvećen OVLovima
i radu sa njima. Ja sam prezadovoljan kako mi to sve radi. Uzgred, ni one opci-
je tima "DEMO CALLS" ili "DEMO DATE" ili čak "DEMO MINUTES" nisu na bacanje.
Zkr
clipper.458zkrstic,
-> #456, nbatocanin> Nema ništa tuđe sve sam go Clipper ;) i moj ASM koji radi u svim
> programima. Zašto bi isti program linkovan RTLinkom radio
> besprekorno već 2 godine?
Kratko i jasno: Inat & maler & baksuzluk (čitaj:Marfi) :)
Ne, zaista neznam u čemu je onda štos? Na žalost, nisam imao pri-
like da probam na 286-ici. Mogu ti reći da si me sada malko poplašio.
Zkr
clipper.459bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
pkv4 zip 14841 Clipper source za pregled i raspakivanje ZIP 2.0 arhiva
This utility is for:
~~~~~~~~~~~~~~~~~~~~
1. Searching a ".ZIP" file to see whats inside of it.
2. Viewing files within a PKzip file
3. Extracting files from a PKzip file
The utility has been only tested with PKZIP version 2.nn and should
work on prior version.
clipper.460dejanr,
-> #459, bulaja>> The utility has been only tested with PKZIP version 2.nn and should
>> work on prior version
Ala to brzo ide... još da nabavimo PKZIP za Clipper i rešen problem
backup-a.
Ja sam sad za jedan program eksperimentalno napravio BACKUP kao
SwpRunCmd("PKZIP -Pr&f A:BACKUP "+AllTrim(cdir)+"\*.DBF", 300, "", "")
i za sada lepo radi, jedino moram da pozatvaram sve fajlove u cdir-u jer
ih ZIP izgleda otvara ekskluzivno (nemam ideju šta mu to treba) pa pod
Novellom puca ako neku i Clipper drži.
clipper.461dejanr,
==========
clipper/tech.questions #2709, from akarna, 371 chars, Sat Mar 13 11:31:48 1993
----------
I'm thinking about picking up a copy of Clipper 5.2, esp. with the good
"competetive upgrade" price. I was just wondering, however:
I know that I can call a C fcn from within Clipper, but can I go in the
other direction? For example, if I write a Clipper fcn, can I call it
from within a C fcn?
Also, does the C linking capability support Borland's compilers?
Thanks!
==========
clipper/tech.questions #2710, from irae, 165 chars, Sat Mar 13 23:52:23 1993
Comment to 2709.
----------
C from Clipper is easy, Clipper from C is possible. The Borland
compilers will work within some limits, one of which is no floating
point stuff can be used.
==========
clipper/tech.questions #2711, from scousins, 622 chars, Wed Mar 17 17:49:20
1993
Comment(s).
----------
TITLE: clipper52 problms
I just got the 5.2 upgrade and am having problems with some functions (like
indexord() and dbskip() when using an alias in fromt of it.
for instance filename->(indexord())
alos when macro evaluating in thi s same way:
nTenp := &cFilename->(indexord())
Do you have any clues?
Also, in general is there a way to get out of using macros in this way, using
code blocks for instance? We use a datadictionary to allow us to make new
databases within the program so this is useful but slow (and now with 5.2 it
is giving us problems).
Any help would be greatly appreaciated.
==========
clipper/tech.questions #2712, from irae, 232 chars, Wed Mar 17 23:55:29 1993
Comment to 2711.
----------
Since you don't tell us what the problems I can't help. I will point
out that you don't need the macro in one of those spots.
nTemp := (cFilename)->(indexord())
ought to work just as well if I remember correctly.
==========
clipper/tech.questions #2713, from scousins, 658 chars, Fri Mar 19 18:13:52
1993
Comment(s).
----------
TITLE: Params and locals
Thanks for answering my last question , the parenthises worked.
Now I am haveing a problem with parameters. When I define the params fo a
function as in: FUNCTION MYFUNC(var1, var2) instead of using a PARAMETERS
call, var1, and var2 should be LOCAL variables. If I then declare LOCAL var3,
sometimes var3 will have the value that var1 should have, and var1 will be NIL
Does this make any sense? If I use the PARAMETERS clall, (making var1 and var2
private) this does not happen. I don't recall this happening with 5.01a. Do
you think it is a 5.2 bug or am I doing something wrong?
Thanks for your help.
==========
clipper/tech.questions #2714, from irae, 80 chars, Sat Mar 20 02:30:51 1993
Comment to 2713.
----------
I'm clueless. Can you put up a short example demonstrating the problem?
clipper.462dr.grba,
Prvi put srecem problem potrebe ispitivanja postojanja poddirektorijuma.
Mislio sam da se moze resiti preko file handle funkcija, ali kraci eksperiment
je urodio neuspehom. Dakle, treba mi funkcija koja ispituje postojanje
direktorijuma ispod tekuceg, pa ako ga nema - da ga kreira.
Da sam verziran u asembleru, (kao sto nisam ): ) valjda bih umeo da resim...
Mozete li mi pomoci?
Pozdrav, dr ÔpŰa
clipper.463mandrejevic,
Hocu da ugradim sat u jednu aplikaciju, pa mi trebe neka dobra
dusa da mi izkompajlira prilozeni .asm kod, koga sam iskopao kod
Tangram BBS-a. Nebi bilo na odmet da se izvuku ofseti za red,
kolonu i boju sata.
sat_asm.arjclipper.464d.petrovic,
-> #462, dr.grbaĂ> Prvi put srecem problem potrebe ispitivanja postojanja
Ă> poddirektorijuma.
Pogledaj funkciju ft_tree() iz nanfor biblioteke. Vraća u niz SVE
direktorijume i subdirektorijume.
clipper.465bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
objectcl arj 175383 Objektno orijentisana biblioteka za Clipper 5.01 (#1/4)
objectcl a01 175175 Objektno orijentisana biblioteka za Clipper 5.01 (#2/4)
objectcl a02 175321 Objektno orijentisana biblioteka za Clipper 5.01 (#3/4)
objectcl a03 173080 Objektno orijentisana biblioteka za Clipper 5.01 (#4/4)
OBJECT.LIB
high level object oriented library for Clipper v5.01
Basic features:
~~~~~~~~~~~~~~~
- object oriented (classes,heredity,...)
- user task swapping
- "Windows - like" user interface
- multithreading is enabled
- event driven programming support through the philosophy of the library
- data driven programming capability and design
- generated code is true network capable
- user defined reports
- user defined filters
- user defined indexes
- unlimited paswords, user privileges individual to every menu item,
every database field
- automatic generated help system with context help
- user defined help system
- all graphical cards text mode support
(CGA,EGA,VGA,HGC,laptops,monochromVGA,...)
- clipper language enhancements
- dramatical shortening of a aplication developement time, aplication
length in 200 to 2000 (for very large apps.) source code lines
- basic functions of a program can be presented to the user in the very
first time consulting his problem
- simple program maintenance
- documentation in a form of "norton guide" in a file OBJECT.NG
The library is 420kB of source code with 330kB of documentation,
consists of 450 functions, methods or procedures and many new commands.
clipper.466dr.grba,
-> #464, d.petrovicHvala ti na odgovoru. Pomogao je posredno.
Naime, dok sam (najzad pazljivo!) prelistao NANFOR.NG, trazeci FT_TREE(),
ugledah na istom ekranu i FT_EXIST(), koji radi upravo ono sto trazim.
Marfi : Ako ne uspe drugacije, procitaj uputstvo... (:
Pozdrav, dr ÔpŰa
clipper.467dr.grba,
-> #463, mandrejevicASM programom CLOCK sam uspeo da resim sat na interfejsu, koji vrlo
uspesno resava sva pitanja koja si postavio.
PAZNJA : program je malo agresivan, jer zahteva da otkacis interapt
pre napustanja glavnog programa. U protivnom - sistem se zakucava...
Pozdrav, dr ÔpŰa
P.S. E, jos da uspem da zakacim fajl uz poruku, nemam neko iskustvo...
clock.arjclipper.468dr.grba,
Meni za vezbu attach, a svima koje interesuje, kacim profiler za ugradnju u
programe koje prepustate na milost i nemilost korisnicima. Shareware koji
sam davno skinuo sa RHINOCEROS BBS-a...
HINT : Ako vec budete ugradjivali izlaz u neku datoteku PROFIL.DAT ili slicno,
setite se, pa ispitujte duzinu datoteke. Ako prelazi neku unapred odredjenu
velicinu, rename u PROFIL.OLD, pa kreirajte novu. Ovo je samo prenosenje
iskustva programera koga je Marfi dosada prebio na mrtvo ime ):
Nije mi bilo svejedno kad sam obisao prvu aplikaciju kod korisnika koji
je imao profiler - PROFIL.DAT 2543098 .... ili tu negde, debelo preko 2 MB
): (((:
Press <CTRL>-<ALT>-<DEL> to continue ...
profiler.arjclipper.469mandrejevic,
-> #467, dr.grba>│ ASM programom CLOCK sam uspeo da resim sat na interfejsu, koji
>│ vrlo uspesno resava sva pitanja koja si postavio.
Resio sve probleme. Mnogo ti hvala !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
clipper.470dr.grba,
-> #469, mandrejevicMolim, i drugi put.
Pozdrav, dr ÔpŰa
clipper.471ndragan,
-> #462, dr.grba/ direktorijuma ispod tekuceg, pa ako ga nema - da ga kreira.
Da znaš. Snalazio sam se tako što sam pokušavao da napravim .tmp fajl u
njemu, pa ako ne ide, to je zato što nema ni direktorija.
clipper.472enter,
Imam´ko problema sa APPEND FROM komandom. Program je koristi za spajanje ┼vise
datoteka ist╗┼čvUeí$6Ţ>Ń strukture u jednu zajednicku. ║BeÚĆz ikakvog pravila
nekad ih spoji nekad ne. Postoji mogucnost da clipper kada pravi
swţbapQ'Ż╔╦1ďžmp╣╔I7Ä.H"š#fajloćŇ>Ç>/m$ĽDNďÝíĆX╗XĐůC ôčŠ4úGÚ ¤ve izgubi
informacije o strukturi datoteka i ne prebacuje sva polja ???Đ
clipper.473nbatocanin,
-> #467, dr.grba> PAZNJA : program je malo agresivan, jer zahteva da otkacis
> interapt pre napustanja glavnog programa. U protivnom -
> sistem se zakucava...
Nisam baš siguran da je ovo pravo rešenje - sam si rekao zašto. Ja već
dugo koristim čist Clipper sistem koji sam opisao u jednom broju
"Računara": jednostavno se napravi nova procedura za skaniranje
tastature i eto sata, gašenja ekrana posle N sekundi i sl. Sve u
Clipper-u i potpuno bezbedno!
clipper.474dejanr,
-> #472, enterPoruka je dosta uništena đubretom, pa nisam najbolje razumeo pitanje.
Za početak, da nije datoteka iz koje radiš APPEND FROM otvorena?
Obavezno je zatvori sa CLOSE
clipper.475snemcev,
>> Ovo je dušu dalo za rutine koje treba da skoknu u drugu bazu da nešto
>> urade, pa da se vrate u prvu - rutina uopšte ne mora da zna koja baza
>> je bila selektovana na početku.
A šta bi sa onim drugi_alias->(radi())?
clipper.476mbulat,
Zanima me al bilo ovde reci o indexiranju baze kada su u upotrebi i nasa
slova tacnije YASCII set i zamena za komande isalpha() valjda │:) i slicne cake
kada su u pitanju i nasa slova i + da li su slati ovde neke datoteke
sa konkretnim primerima
online
mb
clipper.477dejanr,
Danas sam imao problema sa Blinker-om, otprilike problema onog tipa
koje pominje nbatocanin. Imam neko čudo od programa koje nisam ja
pisao, i koje radi pod Clipper S'87. Imalo je nekih .OBJ fajlova
kojih nisam imao source, a pošto danas i to pitanje reših (da ne
pričam kako ;) reko' da probam da to sve prebacim na 5.x. Napravim
.LNK, make itd, prevedem, malo problema ovde-onde, i najzad sredim
da radi. Lepo sve, ali čim uđe u dbedit pukne, ponekad QEMM javi
da je izvršena nepostojeća instrukcija pa se zaglupi, a ponekad se
zaglupi i bez pomoći QEMM-a.
Kada se linkuje sa BLINKER INCREMENTAL OFF, sve u redu. Probao sam
da smanjujem ono INCREMENTAL PAD sa 128 na 60, 40, 10, i pojavljuju
se izvesne razlike - dbedit ispiše deo ekrana (što manje broj stavim
u INCREMENTAL PAD, to više ispiše) ali nikako ne može da stigne do
dna ekrana, i uvek se zaglupi :(
Ne znam može li tu išta da se pokuša osim da se uvek linkuje sa
incremental off?
clipper.478nbatocanin,
-> #476, mbulatJa mislim da sam poslao sve što treba za to. Ako nisam, kažite da
šaljem :)
clipper.479nbatocanin,
-> #477, dejanr> Ne znam može li tu išta da se pokuša osim da se uvek
> linkuje sa incremental off?
Problem je u korišćenju memorije: treba probati da mu se isključi EMS
i XMS memorija. Imaju direktive za to.
clipper.480dejanr,
-> #479, nbatocanin>> Problem je u korišćenju memorije: treba probati da mu se isključi EMS
>> i XMS memorija. Imaju direktive za to.
Kome, BLINKER-u ili prevedenom programu?
clipper.481ndragan,
-> #463, mandrejevic/ Hocu da ugradim sat u jednu aplikaciju, pa mi trebe neka dobra
Za foksovce koji to još nisu probali:
SET CLOCK ON
SET HOURS TO 24
SET CLOCK TO 24,69 (ili neke druge koordinate)
clipper.482ndragan,
-> #474, dejanr/ Za početak, da nije datoteka iz koje radiš APPEND FROM otvorena?
/ Obavezno je zatvori sa CLOSE
U FoksPro 2.0 ovo više nije obavezno.
clipper.483ndragan,
-> #475, snemcev/ A šta bi sa onim drugi_alias->(radi())?
Nije mi jasno šta u stvari pitaš. Konstrukcija kakvu navodiš nije baš
ona na koju sam navikao; štos je da FP2 obožava imenske izraze (name
expression) tako da možeš uvek da strpaš naziv bilo čega (polja, baze,
aliasa, prozora, rutine, proceduralnog fajla) u promenljivu, i onda ga
navedeš u zagradi. Recimo, za indeks za jednokratnu upotrebu koristim
obično ovaj postupak:
tmp=sys(3)+'.idx' && ovo .idx je bitno samo za kraj
index on &dex to (tmp) for &uslov
* indeksni pojam i filter nemaju imena, ide čista makro zamena; da je
* indeksni pojam jedno polje, mogao bih da stavim
* index on (dex) to (tmp) for &uslov
.....
* pozatvaram i brišem indeks
if file(tmp)
erase (tmp)
endif
Na sličan način mogu da negde iskonstruišem ovako nešto
polje='baza.polje1'
....
č red,kolona get (polje)
Za konstrukciju tipa baza.(izraz) nisam siguran da će da radi, treba
probati.
clipper.484mbulat,
-> #478, nbatocanin č> Ja mislim da sam poslao sve što treba za to. Ako nisam,
č> kažite da šaljem :)
Ma dobro to je ok :) Nego posto nepratim bas redovno ovu temu
interesuje me gde si to slao i koje su to otprilike poruke ili datoteke :)
clipper.485dejanr,
-> #476, mbulat>> Zanima me al bilo ovde reci o indexiranju baze kada su u upotrebi i nasa
>> slova tacnije YASCII set i zamena za komande isalpha() valjda :) i
>> slicne cake kada su u pitanju i nasa slova
Pogledaj "Računare 74", strana 59 - tekst se zove Clipper sa kvačicama i
rešava (bar meni ;) sve probleme tog tipa. Autor je NBatocanin.
clipper.486dejanr,
-> #463, mandrejevic>> Hocu da ugradim sat u jednu aplikaciju, pa mi trebe neka dobra
Ubedljivo najlakši način (nisam znao za njega, ali ga juče nađoh u nekom
programu koji prepravljam) je linkovati FUNCKY.LIB (postoji i FUNCKY87
i FUNCKY 50) i onda samo koristiti CLOCK24(y_koordinata, x_koordinata).
Jedini problem je što ga ispisuje crno-belo (možda ima i neki način da
se setuju boje?)
Uzgred, taj FUNCKY.LIB ima lepih stvari, što više na njih nailazim u tom
programu to mi se više sviđaju. Šteta jedino što uz taj source i sam
FUNCKY.LIB nisam "nasledio" i dokumentaciju, a navodno je kupljena :((
FoxPro to ima "u samom sebi", samo kažeš set clock to y,x (sorry ako
sam pogrešio sintaksu, ali u svakom slučaju nešto jako slično tome)
clipper.487draganf,
-> #476, mbulat> Zanima me al bilo ovde reci o indexiranju baze kada su u
> upotrebi i nasa slova tacnije YASCII set i zamena za
> komande isalpha() valjda │:) i slicne cake kada su u
> pitanju i nasa slova i + da li su slati ovde neke datoteke
> sa konkretnim primerima
Bilo je toga, a ako ne nađeš , javi se pa ću nešto od toga da ti
spakujem. Samo treba da znaš da funkcije koje to rade su dosta spore
ako su rađene u clipperu.
Dragan
clipper.488rboskovic,
Da li je neko imao ovakav problem: na tri mesta imam instaliranu mrezicu
NovellLite 1.1. Svi programi uglavnom lepo rade, osim programa pisanih u
Clipperu i to prilikom stampanja. Unos podataka tece normalno, a kada se predje
na stampu obavezno dolazi do brljanja podataka u datoteci koja se stampa. Preko
slogova se upisuje neki budibogsnama kakav sadrzaj. Pri tome sam radio probe:
kada je stampac ukljucen pojava je slucajna, ali kada je iskljucen (a print job
treba da ode u buffer) onda je to pravilo. Nije mi jasno da stampa iz Winworda,
Corela i slicnih grafickih programa ide normalno, da isto tako ide normalno i
DOS, a da pukne na programima za knjigovodstvo ili bibliotecku evidenciju.
Svaka pomoc koja bi mi omogucila da ovo resim je dobrodosla.
Pozdrav, Rade
clipper.489zkrstic,
-> #488, rboskovic> Svaka pomoc koja bi mi omogucila da ovo resim je dobrodosla.
Novell ne preporučUje upotrebu naredbi PRINT (DOS) ili nekih sličnih
za ovo: (u to spada i SET DEVICE TO PRINTER / č SAY ... )
Rešenje:
- sva štampa treba prvo da ide u fajl
- u prg (Clipper) se samo štampanje izvoditi sa
"NET PRINT <ime_fajla> <ime_mrežnog_printera>"
To mora da radi :)
Zkr
clipper.490bulaja,
-> #485, dejanr│Pogledaj "Racunare 74", strana 59 - tekst se zove Clipper sa kvacicama
│i resava (bar meni ;) sve probleme tog tipa. Autor je NBatocanin.
└───
Pogledah i nema toga u RSOFT dir-u. Nenade, moze li upload? :)
clipper.491dusanp,
Posto snap gresi kada se radi sa vise modula, a i nije
mi bila potrebna ona gomila informacija, napisao sam svoju
verziju doc programa, koja samo lepo odvoji funkcije i
procedure - vecini korisnika je i to dovoljno.
Isprobajte programce koje ide uz poruku - extra sto dajem
i sors pa kome se ne svidja moze da se igra dalje.
doc.arjclipper.492rboskovic,
-> #489, zkrstic>>NWLITE...
Hvala na proptnoj informaciji. Probacu danas-sutra da to napravim, pa ako
prodje imas pice. (piche). More i jos ponesto, jer ce to da me spase
reinstalacije nekih 550 Mb podataka i programa!
Pozdrav, Rade
clipper.493mpeti,
E narode !!!!!
Evo još jednog BUG-a u Clipperu 5.01.
Radi se o sledećem:
Imam .FRM datoteku u kojoj je opcija PAGE EJECT AFTER GROUP postavljena
na yes. U starom (Summer '87) Clipperu i Dbase III+ ovo jako lepo radi.
Odštampa subtotal za grupu, predje na novu stranu, odštampa zaglavlje
strane, i tabele, pa štampa sledeću grupu.
ALI - i tu počinju moji problemi - novi Clipper radi sve samo što ovaj
flag ignoriše pa mi štampa ceo izveštaj tako, da ne počinje novu grupu
na novoj strani nego jednostavno nastavlja na tekućoj.
Da li je neko već primetio ovo, ili još bolje da pitam, da li je neko
već ISPRAVIO ovo. Pretpostavljam da je greška u FRMRUN.PRG, i da bi on
trebao malo da se pročačka, ali još nisam stigao da ga pogledam. Pa
narode ako neko ima neku ideju, javite se.
clipper.494zkrstic,
-> #493, mpeti>>Imam .FRM datoteku u kojoj je opcija PAGE EJECT AFTER GROUP postavljena
>>na yes. U starom (Summer '87) Clipperu i Dbase III+ ovo jako lepo radi.
>>Pa narode ako neko ima neku ideju, javite se.
Ideja & savet:
Batali bre FRM fajlove, koji će ti to andrak' u životu. To je pra-
vljeno za tupe Amere koji ne umeju sami da naprave izveštaj za štampu. Pra-
vi lepo svoju rutinicu koja će ti raditi štampu i nema greške.
Da su oni u Nantucketu normalni, davno bi to izbacili kao što su NDX
izbacili, premda, videh sinoć da ga ima na nekom stranjskom BBS-u.
Zkr
clipper.495nbatocanin,
-> #490, bulajaYUpper, YLower, YtoABC i YtoAZB za indeksiranje po azbuci i abecedi.
yucl.zipclipper.496nbatocanin,
-> #480, dejanr>>> Problem je u korišćenju memorije: treba probati da mu se
>>> isključi EMS i XMS memorija. Imaju direktive za to.
>
> Kome, BLINKER-u ili prevedenom programu?
Prevedenom programu (BLINKER CACHE). Mislim da je tu problem, ali
nije sigurno. U svakom slučaju, mislim da stvar nije za uzbunu pošto
se pri korišćenju EMS-a redovno pojavljuje problem kompatibilnosti.
Na primer, ni WP ne radi OK na svim pločama.
clipper.497d.petrovic,
Odgovor na 10.96 valeksa
------------------------
Ă># Pitanje: Kako bez:
Ă># if file("pkzip.exe")
...
Ă> evo ti jedan moj batch file, mada je za DR.DOS 6.
Sada radim:
If .not. file("pkzip.exe") .and. .not. file("ĐutilĐpkzip.exe")
DevOut("nece moci, blabla")
else
*pozovem ga odande gde se nalazi sa parametrima...
endif
Mene interesuje može li da se jednostavno pozove iz clipper programa
pa, ako je završio posao sve je u redu, ako nije bio na stazi
(svejedno gde se nalazio, šta me pa to briga ko će gde da drži
pomoćne programe i šta će mu biti na stazi) da znam da nije završio
posao i da ispišem na ekranu šta_mi_se_ćefne.
Za proveru flopija imaš u nanfor.lib funkciju ft_floptst (valjda se
tako zove) pomoću koje možeš da napraviš lepe svoje funkcije. Obrati
pažnju, povezi računa, za tu funkciju postoji ispravka, funkcija koja
se nalazi u biblioteci se uvek obraća flopiju "A", kad je zameniš
može da ispituje i "B".
clipper.498ndragan,
-> #494, zkrstic/ Batali bre FRM fajlove, koji će ti to andrak' u životu.
FRM su ogavno loši izveštaji. Tek je FRX ono pravo.
clipper.499tarva,
-> #460, dejanr Í─────────────────
║> SwpRunCmd("PKZIP -Pr&f A:BACKUP "+AllTrim(cdir)+"Đ*.DBF", 300, "",
║> "")
║>
║> i za sada lepo radi, jedino moram da pozatvaram sve fajlove u
║> cdir-u jer ih ZIP izgleda otvara ekskluzivno (nemam ideju šta mu
║> to treba) pa pod Novellom puca ako neku i Clipper drži.
Ë─────────────────────────────────────
Probao sam ovo sa SwpRunCmd(...etc...) i ne radi. Mogući uzrok.
1. Nabavljen na probu samo BLINKER.EXE
2. Možda treba setovati neku opciju dodatno?
U vezi s tim tri pitanja:
1. Gde sa može kupiti orginal "BLINKER".
2. Da li treba dodati još neki parametar
3. Ili nešto treće?
Pozdrav, Tibor.
clipper.500gari,
Odgovor na 5.223 i 5.226 iz conf. PC.PROG
Problem je u tome sto mi ColorRect oboji samo deo linije
na kome su ispisana polja, a ostanu crne rupe izmedju dva
polja.
Sto ne probas sa sledecim MARK-om:
SetColor (Invert)
@ Row(), Col() SAY Polje1 + " " + Polje1 + ...
ili nesto slicno.
Evo, ja sam relativno nov na Sezamu, pa dok nisam procitao sve
diskusije
sada sam tek stigao da malo prilagodim svoju funckiju T_Edit. :)
Inace ova funkcija ima tridesetak parametara, ovo je kraci izvod, ;)
pa
ako ima zainteresovanih, ja cu je poslati celu (oko 1200 linija).
...
tbMark(TB,.T.,Polja) && Polja == Niz sa poljima iz datoteka ili
f-cijama
nKey := INKEY(0)
tbMark(TB,.F.,Polja)
...
FUNCTION tbMark( TB , Osvetli , KojaPolja )
LOCAL broj_kolona:=0, brojac:=0, efektivna_sirina:=0, sadrzaj:=""
LOCAL uk_prazno:=0, levo_prazno:=0, temp2:={}
PRIVATE temp, bojica:=setColor()
if Osvetli
set color to i
broj_kolona := TB:rightVisible - TB:leftVisible + 1
efektivna_sirina := broj_kolona - 1 && Broj separatora
for brojac := 1 to TB:freeze
efektivna_sirina += TB:ColWidth(brojac)
temp := KojaPolja[brojac]
aadd(temp2,{len(sadrzaj),&temp})
sadrzaj += space( TB:ColWidth(brojac) ) + TB:colSep
next
for brojac := TB:leftVisible to TB:rightVisible
efektivna_sirina += TB:ColWidth(brojac)
temp := KojaPolja[brojac]
aadd(temp2,{len(sadrzaj),&temp})
sadrzaj += space( TB:ColWidth(brojac) ) + TB:colSep
next
sadrzaj := left( sadrzaj , len(sadrzaj) - 1 )
uk_prazno := TB:nRight - TB:nLeft + 1 - efektivna_sirina
levo_prazno := int( uk_prazno / 2 )
@ TB:nBottom - TB:rowCount + TB:rowPos - 1, TB:nLeft ;
say space(levo_prazno) + ;
sadrzaj + ;
space(uk_prazno-levo_prazno)
for brojac := 1 to len(temp2)
@ TB:nBottom - TB:rowCount + TB:rowPos - 1, ;
TB:nLeft + levo_prazno + temp2[brojac,1] say ;
temp2[brojac,2]
next
set color to &bojica
else
TB:RefreshCurrent()
endif
RETURN NIL
**********************************************************************
*****
Imam sledeci problem kod iste, a to je kako da sledece redove
ubacim u bilo kakvu petlju (sve sam pokusavao, ali nista).
Usput dajem i parametre za tu moju funkciju pa ocenite... :)
**********************************************************************
*****
* FUNKCIJA T_EDIT
*
* KojaDatoteka ............. Naz. datoteke (C) difolt=trenutno
aktivna
* KojaPolja ................ Nazivi Polja (A) difolt=Sva polja
* Zaglavlja ................ Naz. zagl. za svako polje (A) dif=Prazno
* Koordinate ............... (A) G.red (3), L.kol(10), D.red(18),
D.kol(70)
* Friziranje ............... Koliko se kolona 'zamrzne' na ekranu (N)
dif=0
* Okvir .................... Kakav je okvir (1-single , 2-double) (N)
dif=2
* Senka .................... Da li ima senke ( .T. / .F. )
difolt=.T.
* Zagl ..................... Sadrzaj zaglavlja T_Edita (C) difolt=""
* Futer .................... Niz naz. za sadrz. futera T_Edita (A)
dif={""}
* MojeFunkcije ............. Niz Funk. koje sam definisao (A)
difolt={""}
* MojiTasteri .............. Niz defin. tast. za moje funkcije (A)
dif={""}
* Uslov .................... Uslov prema kome se vrsi preg (C)
dif="!EOF()"
* Trazi .................... Pozicionir. po ind na slog u bazi (C)
dif=""
* Dobar .................... Koristi SET FILTER (SPORO !!!) (C)
difolt=""
* Odakle ................... Skok po ind na prvi zeljeni slog (C)
difolt=""
* Dokle .................... Skok po ind na zadnji zelj. slog (C)
dif=""
* Pikture .................. Vrednosti za PICTURE (A) difolt=@X
* Validi ................... Vrednosti za VALID (A) difolt=.T.
* Venovi ................... Vrednosti za WHEN (A) difolt=.T.
* Riplejs .................. 2D niz sa vred. za naknadni REPLACE (A)
dif={}
* NPR. Riplejs[1] :=
{"VRED","IZNOS*KOLICINA"}
* Zastita .................. Dozvole za rad (C)
* E - izmena podataka (K_ENTER),
* kada ga nema onda izlazi i vraca
rekord
* A - dodavanje slogova (K_INS)
* AA - automatsko dodavanje slogova
(K_INS)
* D - brisanje slogova (K_DEL)
* N - vraca se na slog gde je i bio kada
izlazi
* MaleProc ................. Korisnicke funkcije (A=4)
* 1 - Prilikom kretanja kroz datoteku
* 2 - Posle unosa, menjanja i brisanja
* 3 - Pre unosa, menjanja i brisanja
* 4 - Na taster ESC
* 5 - Posle unosa
* 6 - Posle menjanja
* 7 - Posle brisanja
**********************************************************************
*****
........
FUNCTION NapuniObjekte(Temp_Browse,KojaPolja,Zaglavlja)
LOCAL BrojPolja:=len(KojaPolja)
temp_browse:addColumn(TBColumnNew(Zaglavlja[1],{|| &(KojaPolja[1])
}))
IF BrojPolja == 1
RETURN NIL
ENDIF
temp_browse:addColumn(TBColumnNew(Zaglavlja[2],{|| &(KojaPolja[2])
}))
IF BrojPolja == 2
RETURN NIL
ENDIF
temp_browse:addColumn(TBColumnNew(Zaglavlja[3],{|| &(KojaPolja[3])
}))
IF BrojPolja == 3
RETURN NIL
ENDIF
........
temp_browse:addColumn(TBColumnNew(Zaglavlja[30],{|| &(KojaPolja[30])
}))
IF BrojPolja == 30
RETURN NIL
ENDIF
RETURN NIL
***************************************** The_End()
Sorry na zamaranju vaseg PAD-a (142 linije), ali valjda ce vredeti...
Pozdrav, gari.
clipper.501bstevan,
-> #467, dr.grba I' ja zahvaljujem na CLOCK.ASM - ali si me malo,
namucio sa onim public casovnik.
---POZDRAV---
---BSTEVAN---
clipper.502bstevan,
-> #473, nbatocanin Pa' ako se pravilno upotrebi CLOCK.ASM,
nevidim da nije bezbedan.I ja sam imao resenje iz CLP,
ali sam se u ovom slucaju opredelio za CLOCK.ASM .
I veruj mi u aplikaciji je to jedina procedura,
koja nije u CLP.Rekoh aj da probam da je povezem jer do sad to nisam
probao, kad ono radi i nije agresivno ako se pravilno postupi.
Da se ispravi- pravilno UPOTREBI.
---POZDRAV---
---BSTEVAN---
clipper.503d.petrovic,
Ă>│ ako stampam na stampac, a stampac ne koristi beskonacni papir i
Ă>│ ne promenim papir za 3-4 sekunde izbaci ono crveno na sred
Ă>│ ekrana. Ja normalno strelicu na desno pa kazem da nastavi i
Ă>│ nastavi normalno. Gde sam zabrljao ???
Ă> └───
Ă> IsPrinter()
Ma to proveravam pre nego što počnem da štampam, neću valjda posle
svake strane? To se nije dešavalo na TOM štampaču ranije. Ne znam šta
se u međuvremenu promenilo, jedino što su sada baze otvorene shared,
ali ne verujem da to može da ima neke veze.
clipper.504bulaja,
-> #503, d.petrovic││IsPrinter()
│└───
│Ma to proveravam pre nego sto pocnem da stampam, necu valjda posle
│svake strane?
└───
Posle svake strane? :) Pa treba da proveravas IsPrinter() skoro *posle
svakog slova* :), tj. zavisno od toga koliki je bafer stampaca. Nikad se
ne zna na kakvim ce krsh stampacima da radi program, meni se desilo da
ni kontrola posle svakog reda nije pomogla kad je trebalo da se stampa
na nekoj glupoj pisacoj masini sa Centronics interfejsom i baferom od
pola reda.
clipper.505dr.grba,
-> #501, bstevan>> I' ja zahvaljujem na CLOCK.ASM - ali si me malo,
>> namucio sa onim public casovnik.
UFFFFFFFFFFFF! IZVINI!
Izvinjenje dugujem i tebi i svima ostalima koji su probali, pa morali
da traze - nisam napomenuo ):
Nadam se da vise necu ponoviti slicnu omasku. Najvaznije je da je modul
zavrsio posao! Drago mi je ako je pomoglo.
Pozdrav, dr ÔpŰa
--> Let's leave my employer out of this, OK?
clipper.506dr.grba,
-> #502, bstevan>> koja nije u CLP.Rekoh aj da probam da je povezem jer do sad to nisam
>> probao, kad ono radi i nije agresivno ako se pravilno postupi.
E, sad...
Nenad ima cvrste argumente za ono sto tvrdi. Ne pada mi na pamet da mu
protivurecim (:, a jedan od (po meni) kljucnih argumenata je konzistentnost,
zapravo stabilnost aplikacije. Ukoliko postoji razradjena baterija alata
uradjenih u Clipper-u i ukoliko ta baterija operise nad osnovnim operacijama
u programu, tada postoji verovatnoca da ce program raditi stabilno. Da ne
kazem ovako : dok se razvije paket veznih modula, testiranjem u hodu se
mogu uciniti brojna poboljsanja i ubrzanja...
Na primeru inkriminisanog ASM modula za implementaciju casovnika...I must
confess...i ja sam ga izbacio. Najpre sam halapljivo ubacio sat na interfejs.
Pa, dok sam razvijao nove module u aplikaciji, najpre sistematski resetovao
masinu dvadeset puta dnevno... ja sam sampion promasivanja sintakse, u 90%
slucajeva napisem pcount umesto pcount(), pa program zvizne (Nenade, secas
li se one rasprave o "valid"?)... Program izleti, interapt i dalje vezan, ako
ne uradim soft reset odmah, sledi hard reset posle...
Pa sam, radi testa, na vrhu svakog modula u testiranju iskljucivao sat, pa
na izlazu ga opet iskljucivao... ovo je bilo vec sumnjivo, da ne kazem da je
polako prestalo da lici na strukturno programiranje... al ajd' i to, trpeo
sam neko vreme tihi teror sopstvene megalomanije...
Pa sam onda morao da iskljucim svaku teoretsku mogucnost bilo kakvog
nekontrolisanog izlaska iz programa, tipa Alt-C, Ctrl-Break, da bih prisilio
korisnika da prodje kroz regularni izlazni modul da bi se, je li, sat
iskljucio. Tu je vec poceo jedan Grrrrrrr@#$##$%@#erinu, sa lakom tendencijom
da se prekvalifikujem u postara ili odzacara.
Pa sam tek onda dosao na to da mi u par navrata treba ceo cist ekran za
tabelu. Sat je tamo stajao kao piletu sise. Uopste mi nije bila globalna
ideja da sat iskljucujem u finalnoj varijanti. Tad je doslo do pucanja filma.
Zasukao sam rukave, sistematski unistio svaki trag tom satu u razvojnoj semi,
i napisao Clipper modul koji na Alt-T izbaci dan, datum i sat u prozoru, pa
eto korisniku, i neka gleda koliko mu volja. (Kalkulator Alt-K, screen saver
Alt-S i dosta im je.) U nastavku rada, sat nestaje i bonus penis pax in domus.
Eto, kad je Nenad napao ovaj modul, upravo je mislio na to kako bi bilo lepo
izbeci slicna s**nja. Namera mu je sigurno bila najbolja, posto je on dobro
ispekao zanat i zna za ovakve zamke. Vidis, ja sam se naucio na sopstvenom
iskustvu, i samo ja znam koliko mi je problema donelo bazanje po mraku...
Ala se raspisah, eto to je u znak izvinjenja zbog clock <-> casovnik (;
Pozdrav, dr ÔpŰa
clipper.507dr.grba,
-> #503, d.petrovic>> Ma to proveravam pre nego sto pocnem da stampam, necu valjda posle
>> svake strane? ...
Boga mi, hoces! Brini se o integritetu programa, nemoj da se o tome brinu
namazane lujke po preduzecima... Bilo je vec negde u "Racunarima", ali ajd'...
Primeni stos duple petlje, dozvoli neko vreme oporavka stampacu :
...
if !isprinter()
inkey(10) // ovo je vreme koje dajes stampacu da se oporavi
if !isprinter() // HINT - ponovna provera
vristi()
spasavaj_stampu()
ostale_akcije()
... // i ostale akcije za plasenje guski
endif
endif
...
Sad variraj ovu mustru kako te volja, ne moze da skodi...
Pozdrav, dr ÔpŰa
clipper.508dejanr,
-> #504, bulaja>> Pa treba da proveravas IsPrinter() skoro *posle
>> svakog slova* :)
Nešto sam zaboravio, jel beše IsPrinter() testira samo LPT1 štampač?
Vidim da u programima koristim isključivo neku asemblersku proceduru
koja zivka BIOS, mora da sam imao neki razlog za to.
clipper.509dejanr,
-> #506, dr.grba>> ja sam sampion promasivanja sintakse, u 90%
>> slucajeva napisem pcount umesto pcount(), pa program zvizne
Predlog: prevodi programe sa CLIPPER /W. Jeste da "boli" što moraju
da se deklarišu sve promenljive, a naročito "boli" deklarisanje polja
iz baze, ali u suštini spase jako mnogo problema - još u fazi prevođenja
ukaže na većinu pogrešno otkucanih promenljivih (ja, recimo, ne grešim
sa pcount() ali imam običaj da napišem lastkey i recno bez zagrada).
Na žalost, izgleda da ni CLIPPER /W ne primećuje sve probleme sa nizovima,
recimo desi se da neki niz koristiš kao skalar i to primeti tek tokom
izvršavanja programa :( A još kada bi mogla da se kontroliše ispravnost
*dodeljivanja* pa da ne dolaze posle one type mismatch greške... eh...
pusti snovi.
clipper.510dusanp,
-> #491, dusanp=> Posto snap gresi kada se radi sa vise modula, a i nije
=> mi bila potrebna ona gomila informacija, napisao sam
=> svoju verziju doc programa, koja samo lepo odvoji
=> funkcije i procedure - vecini korisnika je i to dovoljno.
Ovo je verzija 1.2 istog programa. Ubijena je jedna buba,
dodat spisak funkcija pri dokumentovanju - isprobajte, mozda
je ovaj program bas ono sto vam treba. Opet ide i sors...
doc12.arjclipper.511d.petrovic,
-> #508, dejanrĂ> Nešto sam zaboravio, jel beše IsPrinter() testira samo LPT1
Ă> štampač?
Zaboravio i ja, ali znam da je samo paraleni.
clipper.512d.petrovic,
-> #507, dr.grbaĂ> Boga mi, hoces! Brini se o integritetu programa, nemoj da se o
Ă> tome brinu
Hvala lepo svima, naročito bulaji za krševe od štampača ;)). Izgleda
da sam do sada imao sreće sa ukupno 10ak program koji su radili na
15-ak štampača max. pa ni jedan nije bio krš. Ni ovaj mali nije krš,
samo zajebava sa zamenom papira.
clipper.513bulaja,
-> #508, dejanr│Nesto sam zaboravio, jel bese IsPrinter() testira samo LPT1 stampac?
└───
Da. Ima u NFLIB funkcija ft_isprinter() (pisana u asembleru) evo sta
pise NG za nju:
Syntax
FT_ISPRINT( [ <cDevice> ] ) -> lResult
Arguments
<cDevice> is optional and is the device to test (LPT2, COM1, etc.).
If omitted, the function will default to the PRN device.
The Clipper IsPrinter() function is somewhat limited because it only
works with LPT1. Furthermore, it talks directly to the hardware, so
if you have redirected LPT1 via the DOS MODE command, the IsPrinter()
function will return erroneous results.
This function offers a better alternative. Instead of talking to the
hardware, it issues a DOS call that checks to see if the device is
ready or not. That gives DOS an opportunity to deal with any
redirections, and since you pass the device name as a parameter, you
can test any device, not just LPT1 (note that the function defaults
to PRN if you fail to pass a valid parameter).
clipper.514bulaja,
**** new file ****
R:ĐIBMPCĐCLIPPERĐ*.*
----------------------
bumenu11 arj 8009 BuMenu 1.1, poboljšani sistem menija za Clipper (bulaja)
BuMenu je zamena standardni Clipper-ov PROMPT .. MENU TO sistem. Potpuno
je kompatibilan sa njim, a sadrzi korisna poboljsanja:
- moze se definisati proizvoljni hot-key za aktiviranje svake od opcija
u meniju - Clipper prepoznaje samo prvo slovo opcije
- moze se definisati i boja hot tastera, tako da on bude prikazan
istaknuto - ovo izuzetno poboljsava preglednost menija i daje
profesionalni look
- nije neophodno "trositi" promenljivu za smestanje rezultata izbora -
ovo je zgodno za neke kratke menije tipa Da-Ne
Promene u odnosu na prethodnu verziju:
- podrska MESSAGE opcije
- uzima se u obzir trenutno stanje Clipper promenljivih SET WRAP i
SET MESSAGE TO <x> ŠCENTERĆ
- poziv funkcije bu_MenuColor() bez argumenata vraca trenutno aktivne boje
- poboljsana kontrola ispravnosti parametara prenetih funkcijama
clipper.515ppekovic,
[reply na baze.podataka/10.125 pjankovic]
>> Evo, bas sam sad probao i naravno da sam uspio. Naime,
>> zadnji put sam to probao prije godinu dana, ustanovio da radi, ali
>> nikada nisam ugradio u svoje programe. Napisao sam C funkciju:
Ovih dana sam po ko zna koji put probao clipper + C i evo do
čega sam došao:
Prvi deo priče, tj. kompajliranje, nikada nije bilo sporno,
dakle C program se iskompajlira u large modelu, s tim što ja za
svaki slučaj isključim i optimizacije.
Drugi deo, linkovanje je uvek bilo problematično i to zbog
čuvenih poruka "symbol defined more than once" ili tako nešto. Ovo
su javljali i MS Linker i RTLink kad god bi se koristile neke
funkcije iz graph.h, stdio.h i još neke. Dakle, najvažnije stvari.
Juče sam probao da linkujem sa blinker-om i sve je prošlo bez
ikakvih upozorenja, grešaka. Probao sam sve i svašta i sve je
radilo osim funkcija iz pgchart lib-a iz msc-a 6.0.
Da ne bih izbaksuzirao, neću reći živeo Blinker. Pravi test
će biti kada napravim ono što sam počeo, a to je backup sistem.
Naime, uzeo sam onaj zip source i pokušavam da ga prepravim da
radi iz clipper-a. Treba mu dodati multi-volume opciju i
eventualno još par sitnih i eto savršenog sistema za backup. Ako
to proradi, ...
Paya
clipper.516nbatocanin,
-> #506, dr.grbaTako si lepo obrazložio argumente, da samo mogu da se složim :))
Inače, čisto subjektivno, ne volim strane predmete u programima - zato
izbegavam sve biblioteke i sl. Mislim da je čista struktura programa
veoma važna (a i lepa). Uvek me je posebno nerviralo kad u nekom
jeziku nešto ne može da se izvede, pa onda moraš da ga povezuješ sa
nekim drugim. Sećam se FORTRAN programa gde je glavni program u C-u,
centralni deo FORTRAN, a koriste se C i ASM potprogrami ;( Kao
kalabalak ;)
E sad: kad već ponegde mora da se pribegne nečem drugom, neka to bude
što čistije. Zato i ne koristim C za Clipper: te fali mu LLIBC, te
dupli simboli, te neće Turbo nego MSC i šta ti ja znam. ASM uradiš i
zaboraviš. Ali, sat, screen saver i sl. (po meni) nije potrebno raditi u
asembleru: ja sve to imam urađeno vrlo jednostavno u Clipper-u. Štos
je preusmeriti sva skaniranja tastature na jednu funkcije i onda imaš
šta oćeš! U suštini, daleko više od sata!
Koga interesuje, evo nove funkcije Inkey:
FUNC nInkey (N)
LOCAL Start := Seconds (), Ch := 0, lFTast
REPEAT
lFTast := .F.
IF N == NIL
Ch := Inkey()
ELSEIF N > 0
WHILE Abs (Start - Seconds()) < N .AND. (Ch := Inkey()) == 0
IF TimeStr <> Time()
TimeStr := Time()
IF TimeVis
SayScreen (TimeStr, 0, 0)
END IF
END IF
END DO
ELSE
WHILE (Ch := Inkey()) == 0
IF TimeStr <> Time()
TimeStr := Time()
IF TimeVis
SayScreen (TimeStr, 0, 0)
END IF
END IF
END DO
END IF
// Ako je pritisnut F-taster, izvrsi ga
IF (bKey := SetKey(Ch)) <> NIL
Eval (bKey, "", 0, ReadVar())
Start := Seconds ()
lFTast := .T.
END IF
UNTIL !lFTast
RETURN Ch
Nije nešto, zar ne?