clipper.203neman,
-> #166, gari> Da li je neko uspeo da predje "bezbolno" sa 5.2b na 5.2c
Jesam :), a kod druga i sa 5.2 -> 5.2c
neman
clipper.205bulaja,
-> #196, gari│p.s. Ovo mi je dosta hitno jer sam vec promenio u svojoj biblioteci staru
│funkciju za prikaz fajla pa sada ne mogu da instaliram korisnicima nove
│verzije software-a...
└───
Greska ti je banalna :). U bulaja.prg u liniji 27 stoji
FB:skipBlock := { |n| FT_FSkip(n+1) }
^^^
a treba (n) umesto (n+1) :), tj.
FB:skipBlock := { |n| FT_FSkip(n) }
clipper.206dr.grba,
Mnogi progameri, u koje spada većina nas, su skloni da preskaču drugarske
sugestije kojih ima na tone po raznim tutorijalima, NG i Hypertext fajlovima,
istovremeno se ljuteći zašto "baš ovo nedostaje u jeziku, kakva glupost,
sad moram to sam da rešavam....."
Ponekad su, naravno, krive i razne anomalije čiji uzrok može biti različit.
Najgore je kad postoji neki feature koji nije dokumentovan, a može mnogo da
znači.
I tako.... koliko puta ste se ljutili što je alert prozor crven? Koliko
puta ste pobesneli što se na mono VGA monitorima ne razaznaje trenutno
aktivna opcija?... I što ovo ne možete da promenite?.... STOP!
Možete da promenite....
Naravno, niste znali za (omaškom nedokumentovanu) opciju funkcije ALERT()
kojom možete promeniti boju alerta. Konkretno:
═══════ Clipper 5.01 vs 1.29 Anomalies (#03) > Menu > Anomalies > ... ════
────────────────────────────────────────────────────────────────────
ALERT() Undocumented features.
Clipper Version 1.29 dtd 04/15/91.
Problem Statement
ALERT()'s prompt is limited to 4 choices. There is also an
undocumented third parameter, cColorString, which may be a color
pair such as "W/N".
Cause
Documentation omission.
────────────────────────────────────────────────────────────────────
Poreklo podatka je NG fajl sa Compuserve mreže. Na Sezamu se ovaj fajl može
naći pod generalijama R:ĐIBMPCĐCLIPPERĐCL5103.ZIP
Skinite ga i (ne kao ja ): ) pročitajte, biće nečeg i za vas... RTFM! (;
clipper.207nbatocanin,
-> #204, neman> Ipak je prijavio gresku. Ispisivao je na praznom ekranu
> -1, a kad uradi sve ok ispisuje 0. Ko je razumeo, shvatio
> je :)
al' je vidljivo ;) Ma to sam i ja video, al nije mi jasno što ne kaže
srpski šta mu fali :)
clipper.208aquarius,
-> #206, dr.grba<> ═══════ Clipper 5.01 vs 1.29 Anomalies (#03) > Menu >
<> Anomalies > ... ════
<> ───────────────────────────────────────────────────────────────
<> ALERT() Undocumented features.
<>
<> Clipper Version 1.29 dtd 04/15/91.
...
<> Documentation omission.
--> Report Name: CL5103 ==> Report Date: 08/22/91
Author: Compiled by Jo W. French dba Practical Computing of La Canada
Ovo je bila godina '91, a sad je '93, CA i dalje mudro cuti. I sto je
najgore CL5103.NG ne sadrzi sve. A sta je sa CA-Clipper 5.20 (a,b,c).
"Documentation omission" se malo ofucalo ! :))))
LOCAL n
n := ALERT( "Radi li CA-Clipper 5.20c pouzdano", ;
{ "Da", "Ne", "Mozda", "Cekamo CA 5.20d" }, ;
"GR+/R", ;
)
Koliko je n ?
~AquariuS~
clipper.209dr.grba,
-> #208, aquarius>> Koliko je n ?
Valjda je po defaultu 1. Jeste? Nije? ):
clipper.210vision,
Hi.
Koristim Clipper '87 i interesuje me da li neko zna kako da
kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
iskljucenĘ).
Pozdrav.
clipper.211bulaja,
-> #210, vision│Koristim Clipper '87 i interesuje me da li neko zna kako da
│kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
└───
Nije nikakav problem napisati funkcije za to, imas ih npr. u Nanforum
Toolkit-u (za Clipper 5.x).
│I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
│iskljucenĘ).
└───
SetCursor() bez argumenata vraca stanje kurzora (0 - off, 1+ - on).
clipper.212dejanr,
-> #210, vision>> I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
>> iskljucen).
Kažeš A=SETCURSOR() i vrati ti stanje kurzora.
>> Koristim Clipper '87 i interesuje me da li neko zna kako da
>> kontrolisem bitove bajta, kao ono u 'C'-u '&', '|' i '^'.
Teško će to ići a da bude iole brzo. No, mogu se napraviti fini mali
asemblerski potprogramčići koji to rade. Meni je nedavno trebao AND pa
ti šaljem njega (doduše, za clipper 5):
PAGE ,132
NAME razno
include extenda.inc
CODESEG RAZNO
DATASEG
CLpublic <LTEST>
; *********************************************************
; Sintaksa: rez = ltest(broj, maska) : log
;
CLfunc log ltest <int broj, int maska>
CLcode
mov ax,broj
mov bx,maska
mov cx,false
and ax,bx
jz lor_end
mov cx,true
lor_end:
CLret ax
END
clipper.213dr.grba,
-> #210, vision>> I drugo, kako da testujem stanje CURSOR-a (da li je ukljucen, ili
>> iskljucenĘ).
setcursor(0) - nema kursora
setcursor(1) - normalan, underscore
setcursor(2) - pola bloka
setcursor(3) - pun blok
clipper.214snemcev,
-> #211, bulaja>> Nije nikakav problem napisati funkcije za to, imas ih npr. u Nanforum
>> Toolkit-u (za Clipper 5.x).
Iste su čudo od sporosti! Još jednom potvrđeno pravilo - ako hoćeš
matematiku u Clipper-u, uradi je u C-u.
PS C ne znam!
clipper.215eotek,
H E L P ! :)
Moze li mi neko pomoci oko sledeceg:
- treba da se u okviru clipper aplikacije omoguci slanje
podataka faks-modemom na drugi racunar (dakle, prikaz izvestaja
pored opcija:ekran,stampac,fajl I NA TEL. BROJ). Dakle trebalo
bi da se podaci mogu poslati na MODEM I/ILI na FAKS. Pri tome
ne dolazi u obzir da se koriste drugi programi (telix ili sl.).
Najlepse je - pri tome - ( >>) ) sto to jos treba da radi u
pozadini (dakle korisnik nastavlja sa radom, a u pozadini se
bira(ju) broj(evi), salje i na kraju se prikaze nekakav
izvestaj).
- Ovo bi trebalo da bude moguce uz neke dodatne LIB (da li ?,
pregledao sam ih dosta, ali su vise nego traljave, a u opisu
jedne (cini mi se EXPAND 3.0) stoji i : pogledajte u drugim LIB
koje to bolje rade !!)).
- Ili je moguce napisati u C, ako da - koje LIB i koji C
(DOS only please). Ne upucujte me - pls - na ASM.
Zahvalan do neba (a i sire)
eotek
clipper.216gari,
-> #205, bulaja║ │p.s. Ovo mi je dosta hitno jer sam vec promenio u svojoj
║ │biblioteci staru funkciju za prikaz fajla pa sada ne mogu
║ │da instaliram korisnicima nove verzije software-a...
║ └─────────────────────────────────────────────────────────
║Greska ti je banalna :). U bulaja.prg u liniji 27 stoji
║
║ FB:skipBlock := { |n| FT_FSkip(n+1) }
║ ^^^
║a treba (n) umesto (n+1) :), tj.
║
║ FB:skipBlock := { |n| FT_FSkip(n) }
╚════════════════════════════════════════════════════════════
Greska mi NIJE NIKAKO banalna, nego je u pitanju to sto
sam u tom trenutku trazio resenje da bi ovo proradilo!
Posto sam zaboravio da posaljem staru verziju, onda si
dobio ovu RADNU. Ako bi stavio po tvome to bi davalo
kriminalne rezultate.
U medjuvremenu (posto niko nije dao nista valjano za ovo)
evo resenja koje SASVIM RADI:
Umesto:
FB:skipBlock := { |n| FT_FSkip(n) }
Treba:
FB:skipBlock := { |n| FILE_LINE_SKIP(n) }
I dalje:
FUNCTION FILE_LINE_SKIP( nSkip )
LOCAL retVred := FT_FRecno()
FT_FSkip( nSkip )
RETURN ( FT_FRecno()-retVred )
pozdrav, Gari.
p.s. Nadam se da ce ovo bar nekom pomoci, a izvinjavam se
onima koji su cekali na resenje jer sam imao frku
na poslu cca nedelju dana...
clipper.218nbatocanin,
-> #215, eotek> - treba da se u okviru clipper aplikacije omoguci slanje
> podataka faks-modemom na drugi racunar (dakle, prikaz
> izvestaja pored opcija:ekran,stampac,fajl I NA TEL. BROJ).
Nemam iskustva sa slanjem faksova iz Clipper-a. Ali, čini mi se da je
jedno od prihvatljivih rešenja DesqView. Tako bi se ratosiljao veoma
zeznutog posla pisanja programa koji radi u pozadini.
clipper.217nbatocanin,
-> #212, dejanr> (doduše, za clipper 5):
>
> PAGE ,132
> NAME razno
> include extenda.inc
Extend sistem je potpuno kompatibilan u verzijama S'87 i 5.x.
clipper.219hercog,
Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Sale
clipper.220dr.grba,
-> #219, hercog>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Nisam siguran da li razumem pitanje, ali dovoljno je navesti ih na vrhu
.LNK fajla. Na primer:
BLINKER DEMONSTRATION DATE 1993/12/31
BLINKER DEMONSTRATION MINUTES 15
kaže da moj demo program možeš koristiti 15 minuta u cugu, a do kraja
godine. Naravno, ispituje se sistemski datum.
clipper.221gari,
-> #220, dr.grbaDa, a postoje i funkcije BliDemMin(), BliDemDte(),... koje
citaju koliko je ostalo minuta, dana i poziva procedura do
kraja demonstracije, a ako ih pozoves sa parametrom,
onda se to povecava, za br. minuta, dana iili poziva.
Naravno, treba da znas da ako hoces te funkcije da
koristis u programu, onda MORAS da se opredelis definitivno
za Blinker, da vodis racuna da u .LNK fajlu za svaku od
tih funkcija mora da postoji i komanda za linkovanje
(vidi poruku 11.220), a ukoliko se pojavi nova verzija
Clipper-a koju Blinker koji imas nece moci da izlinkuje,
onda ti je jasno da moras ili da cekas novu verziju Blinker-a,
ili da menjas sve sto ti zavisi od njega...
Moj ti je savet da Blinker koristis SAMO u razvoju aplikacije i
izradi DEMO verzija programa, a izvrsne verzije da pravis
sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
a korisniku ipak dajes verziju programa koja zahteva manje
RAM memorije od verzije linkovane Blinker-om.
pozdrav, Gari.
clipper.222v.nesic,
Imam Clipper 5.2, i Blinker 2.0 koji bih da koristim sa njim.
Da li rade zajedno, ili mi treba neki noviji B ?
clipper.223dejanr,
-> #219, hercog>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i DATE?
Dosta jednostavno, samo u link fajlu kažeš BLINKER DEM DATE 1993/10/01 i
program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola sata.
Mislim da je to sve dosta detaljno i lepo opisano u Norton Guide-u koji
ide uz Blinker.
Preporučujem takođe prikaz Blinker-a iz "Računara 90" koji je napisao
nbatocanin - u okviru njega diskutuju se i te zanimljive nove opcije.
clipper.224dejanr,
-> #222, v.nesicRade zajedno, bar koliko sam ja primetio.
clipper.225dejanr,
-> #221, gari>> Moj ti je savet da Blinker koristis SAMO u razvoju aplikacije i
>> izradi DEMO verzija programa, a izvrsne verzije da pravis
>> sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
>> a korisniku ipak dajes verziju programa koja zahteva manje
>> RAM memorije od verzije linkovane Blinker-om.
Možda, ali tako si se lišio nekih lepih BLINKER opcija kao swpruncmd...
Ja već duže vreme sve linkujem Blinker-om, samo u konačnim verzijama
stavim INCREMENTAL OFF. Do sada nije bilo problema (kuc-kuc :). Mislim
da sam RTLINK čak obrisao sa diska.
clipper.226snemcev,
-> #219, hercog>> Kako iskoristiti blinkerove funkcije DEMONSTRATION MINUTES, CALLS i
>> DATE?
U .lnk fajl ubaci (po želji)
BLINKER DEMONSTRATION MINUTES n
BLINKER DEMONSTRATION DATE dd/mm/yy
BLINKER DEMONSTRATION CALLS n
Blinker sam vodi računa da ovi limiti budu ispoštovani za vreme rada
programa.
clipper.227nesa,
Dobio sam "Blink Ink", The Newsletter of Blinker.
Možda već znate ali ću ipak prepisati par redaka:
Blinker 3.0 Details
-------------------
■ Povećana brzina linkovanja
■ Dinamic overlay
■ Integrisan memory swap i 286 DOS extender
(with no runtime royalities)
(Dakle, nakon linkovanja prevazilazimo magičnu brojku DOS
limita od 640 kb)
DOS Extender izvršava programe u protected modu povećavajući memoriju
("adresibilnu" :)) od 1Mb do 16Mb!
Program linkovan Blinkerom 3.0 automatski detektuje da li mašina
ima 286 mikroprocesor i memorije da radi u protected modu. Ako nema
izvršiće se klasično (ko do sada, prim.prev. :))) ) upotrebom
dinamic overlaj-a.
Blinker 3.0 kreira Microsoft Windows - kompatibilne .EXE brzo
i lako za programe pisane u Microsoft Visual C++, C, C++, Assembler,
Fortran, Pascal, Watcom C, Symantec C++, CA Clipper 5.x
(koristi Clip4Win), Borland C, C++ i Assembler.
^^^^^^^^
|||||||| da li je to moguće :)))
Blinker 3.0 podržava CodeView 4.x. Tu je i uputstvo na 400
strana i NG naravno.
Ako vas interesuje, mogu izdvojiti i neka pitanja i odgovore
vezane za probleme sa dosadašnjom verzijom.
Lično se nadam da će nbatocanin ili bulaja uskoro dati neki
prilog o 3.0 Blinkeru!
clipper.228snemcev,
-> #226, snemcev>> BLINKER DEMONSTRATION DATE dd/mm/yy
Sorry, u žurbi pogreših. Tačno je
BLINKER DEMONSTRATION DATE yyyy/mm/dd
clipper.229snemcev,
-> #227, nesa>> Lično se nadam da će nbatocanin ili bulaja uskoro dati neki
>> prilog o 3.0 Blinkeru!
Lično se nadam da će isti ubrzo stići do nas :))))
clipper.230mickeyl,
-> #221, gari=> sa RtLink-om. Tako ces sigurno maksimalno ubrzati svoj rad,
=> a korisniku ipak dajes verziju programa koja zahteva manje
=> RAM memorije od verzije linkovane Blinker-om.
Ne bih se složio sa ovom tvrdnjom. Moji programi linkovani s
BLINKER-om ne zahtjevaju više od 150 KB RAM-a.
Primjera radi EXE verzija je dugačka preko 750 KB, a program
linkovan sa BLINKER-om zahtjeva samo 127 KB RAM-a. Naravno
koristim CL...MAX.LNK pri linkovanju.
clipper.231hercog,
-> #223, dejanr**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola
**> sata.
Meni prijavljuje invalid input command, tj grešku 1103
Sale
clipper.232bulaja,
-> #231, hercog│Meni prijavljuje invalid input command, tj gresku 1103
└───
Bug. O:)
clipper.233dr.grba,
-> #227, nesa>> Ako vas interesuje, mogu izdvojiti i neka pitanja i odgovore
>> vezane za probleme sa dosadašnjom verzijom.
Sad sledi brdo mail poruka tipa "E, a da ti pošaljem diskete i papir
za kopiranje..." (((:
clipper.234hercog,
-> #223, dejanr**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i radi pola
**> sata.
Meni prijavljuje invalid input command, tj grešku 1103
Sale
clipper.235snemcev,
Ima li neko LLIBCA.LIB? Pa još da je voljan da mi ga bači i mail...
clipper.236bulaja,
-> #235, snemcev│Ima li neko LLIBCA.LIB? Pa jos da je voljan da mi ga baci i mail...
└───
He he, treba i meni :). Bas sam ga pre neki dan video u spisku fajlova
na Hekom BBS-u (znaci mozda je PD!?:), pa ce se valjda dovuci odatle :).
clipper.237snemcev,
-> #234, hercog>> Meni prijavljuje invalid input command, tj grešku 1103
Ajd' napiši šta si tačno otkucao, pa da vidimo gde je greška.
clipper.238arazumenic,
Da li neko zna kako da u MEMOEDIT() funkciji ograničim broj redova?
Naime, potrebno mi je da u zavisnosti od nekih parametara maksimalni
broj redova bude odredjen broj (zbog formatizovanja štampe).
Saša
clipper.239mickeyl,
Imam MSC5.0 i hoću da napravim funkciju u c-u za clipper. Kompajliram
kako mi piše u knjizi, ali problem se javlja pri linkovanju. Naime
linker mi traži LLIBCA.LIB, koju ja namam (imam LLIBCE i LLIBCR), ali
od ove ni traga. Inače koliko znam trebao bi da imam kompletan MSC ver
5.0, ali eto nama ove LIB datoteke. Je li dođe ova datoteka uz MSC ?
clipper.240milanv,
Prilikom prevoda nekih svojih starih programa sa C'87 na
5.01 naišao sam na dve nekompatibilnosti, o kojima do sada nisam
ništa čuo iz iskustva drugih:
1. Sledeća, pojednostavljena, konstrukcija, koja je sasvim
OK radila na 87-ici, u C_5.01 se, uz poruku "Error BASE/1077
Argument error: .NOT.", zakucava u prvoj dole prikazanoj liniji:
--------------------------------------------------
IF .NOT. Stamp_ok()
Alarm(tra-la-la)
ELSE
Stampaj(tra-la-la)
ENDIF
FUNCTION Stamp_ok
IF ISPRINTER()
RETURN (.T.)
ELSE
č 0,40
? CHR(7)
č 0,50 SAY 'Proverite stampac !'
INKEY(15)
IF LASTKEY() = 27
č 0,50 SAY ' '
RETURN (.F.)
ENDIF
IF ISPRINTER()
č 0,50 SAY ' '
RETURN (.T.)
ELSE
? CHR(7)
INKEY(15)
IF LASTKEY() = 27
č 0,50 SAY ' '
RETURN (.F.)
ENDIF
IF ISPRINTER()
č 0,50 SAY ' '
RETURN (.T.)
ENDIF
ENDIF
ENDIF
-----------------------------------------------------
Zašto
2. Sledećih 15 redova ne staje u svaki red ekrana, već u
svaki drugi.
DISP OFF NEXT 15 Left(neko_polje,79)
Naravno, postoji rešenje da se dužina ispisa skrati na 78
karaktera. Zašto?
clipper.241bulaja,
-> #240, milanv│ 1. Sledeca, pojednostavljena, konstrukcija, koja je sasvim
│OK radila na 87-ici, u C_5.01 se, uz poruku "Error BASE/1077
│Argument error: .NOT.", zakucava u prvoj dole prikazanoj liniji:
│ IF .NOT. Stamp_ok()
└───
Logicno :). Uleti u CLD pa pogledaj za koju ti to vrednost argumenta
tj. funkcije Stamp_Ok() (koja ce inace moze napraviti mnogo lepse:)
javlja greska, ali unapred pretpostavljam da je to jedan NIL. Ako
pogledas funkciju Stamp_Ok(), videces da je moguce da se prodje kroz
sve IF-ove a da ni jedan od uslova ne bude zadovoljen (ako si cekao
30 sekundi ili dva puta pritisnuo taster, a pri tome je stampac
ostao jos uvek off line), sto znaci da funkcija vraca NIL. Ako ti je
ovo kompletna funkcija, bice to dovoljno da na kraj dodas RETURN
(.F.) (u principu funkcija uvek treba da vraca neku default vrednost
:), ili da dodas taj return u ELSE u poslednjem IF. Pretpostavljam
da je u ovome problem, a ti proveri :).
clipper.242nbatocanin,
-> #227, nesa> Lično se nadam da će nbatocanin ili bulaja uskoro dati
> neki prilog o 3.0 Blinkeru!
I oni se nadaju ;)
clipper.243cnenad,
-> #234, hercogŁŁŁ**> program radi do 1. oktobra. Ili BLINKER DEM MINUTES 30 i
ŁŁŁ**> radi pola
Startujem takav program, radim s njim pet minuta, znaci ostaje jos 25 ?
clipper.244gari,
-> #243, cnenad> Startujem takav program, radim s njim pet minuta, znaci ostaje
> jos 25
Ne, nego SVAKI put kada se startuje program imas 30 min.
Ako mislis da je to previse da das korisniku
kao demo verziju, a onda mu ti daj 2 min. ;)
pozdrav, Gari.
clipper.245toma,
Mali problem.
Kako u Clipper-u pročitati iz kog direktorijuma je program učitan?
clipper.246magician,
-> #245, toma=> Kako u Clipper-u pročitati iz kog direktorijuma je program učitan?
Za slične stvari koristim funkciju iz Nanforum-a 'FT_ORIGIN()'. Ona
ti vraća drive, dir i filename.
clipper.247snemcev,
-> #243, cnenad>> Startujem takav program, radim s njim pet minuta, znaci ostaje jos 25 ?
Jok, u svakoj seansi imaš po 30 minuta. Posle isteka tog vremena,
program prekida sa radom.
clipper.248ndragan,
-> #238, arazumenic/ Naime, potrebno mi je da u zavisnosti od nekih parametara maksimalni
/ broj redova bude odredjen broj (zbog formatizovanja štampe).
Da li si razmišljao o drugačijem metodu štampanja memo polja? Zašto ne
bi memo polje imalo neograničenu dužinu?
clipper.249snemcev,
-> #246, magician>> Za slične stvari koristim funkciju iz Nanforum-a 'FT_ORIGIN()'. Ona
>> ti vraća drive, dir i filename.
I Expand 3.0 ima odgovarajuću funkciju - XPmyName()
clipper.250jtitov,
-> #227, nesa> Dobio sam "Blink Ink", The Newsletter of Blinker.
DOBIO? Hoces reci pozajmio. Nadam se da ce vlasnik to dobiti nazad... :)
clipper.251d.petrovic,
Jel vam poznato kako izgleda funkcija za pakovanje u jedrenjaku?
E, pa u jednom programu koji ima cija se baza sastoji od 11 .DBF i
jednog .DBT fajla ta funkcija pravi 11 .DBF i 11 .DBT fajlova.
Eeeeee, ali nisam ja to zabrljao. To se desava na 486/50 i jos nisam
ustanovio zbog cega, ali kad se ocisti autoexec i config onda vise ne
brljavi. QEMM 7.01 ili nesto drugo... videcu pa cu vam javiti
clipper.252arazumenic,
-> #248, ndragan-> Da li si razmisljao o drugacijem metodu stampanja memo polja? Zasto ne
-> bi memo polje imalo neogranicenu duzinu?
Evo zasto:
Kod stamapnja ponude za bilo sta (robu, usluge itd.) znam da mi zaglavlje
zauzme 12 - 20 redova. Onda u zavisnosti od toga sta se stampa, moze se
zauzeti jos 4 - 30 redova. Dodaj na to gornju i donju marginu od po 6 redova
(jedini fiksni broj), ispadne da je broj redova koji se stampaju 30 - 62,
sto zanci da mi ostaje jos mesta za 10 - 42 redova. E, sada mi treba da se
doda jos neki tekst u taj prostor. Ako stavim neograniceni broj redova, pa
operator pretera sa spisateljskim mogucnostima, ode stampanje strane na dva
lista, a to bas hocu da sprecim.
Ako imas resenje, pomagaj!
Sasa
clipper.253bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
This file contains LLIBCA.LIB of the MS-C 5.1 Compiler, which works fine
with C (also when using MS-C 6.0). If you are using MS-C 6.0 please make
sure to use the /FPa /Gh AND don't use /Zi. Please pay attention to
the file LLIBCA.TXT, which contains the original disclaimer of
MicroSoft.
clipper.254bulaja,
**** new file ****
R:\IBMPC\CLIPPER\*.*
----------------------
rpcxlb10 zip 195663 RPCXLib: Clipper lib sa grafickim funkc. (prikaz PCX)
RPCXLib is a CLIPPER LIBRARY with GRAPHIC FUNCTIONS.
Features :
* RShowPCX function to display a PCX graphic file :
- very FAST !
- of UNLIMITED SIZE
- on a SPECIFIC screen location
- on EGA/VGA and SUPERVGA screens
- up to a resolution of 640 x 480 x 256 (SUPERVGA)
- with AUTOMATIC DETECTION and USE of almost all SUPERVGA adapters
- with support of the INTERNATIONAL VESA STANDARD
* Functions to mix ones own CLIPPER COLOURS
YOU CAN COMPOSE 262.144 DIFFERENT COLOURS !
* Functions to slowly DIM the screen
* Functions to determine the GRAPHIC CONFIGURATION of a PC :
Is there a EGA, VGA, MCGA or SUPERVGA adapter available ?
When there is a SUPERVGA adapter available you can, in most
cases, determine the brand
* A NORTON GUIDE with a description of all functions in the library
clipper.255bulaja,
-> #254, bulaja│RPCXLib: Clipper lib sa grafickim funkc. (prikaz PCX)
└───
Biblioteka inace i nije nesto (u stvari nije nista mnogo vise od obicnog
PCX viewer-a), al' mozda nekom dobro dodje :). Inace ce ovih dana biti
nekih upotrebljivih Clipper biblioteka u dir-u, treba samo da izvrsim
selekciju sta valja od ovoga sto smo skinuli (jos davno:).
clipper.256snemcev,
-> #253, bulaja>> R:\IBMPC\CLIPPER\*.*
>> ----------------------
>> llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
Ovo je stvarno bilo ekspresno! Svaka čast!
PS Još samo da proradi...
clipper.257jtitov,
-> #227, nesa> Dobio sam "Blink Ink", The Newsletter of Blinker.
DOBIO? Hoces reci pozajmio. Nadam se da ce vlasnik to dobiti nazad... :)
clipper.258toma,
-> #249, snemcev■> I Expand 3.0 ima odgovarajuću funkciju - XPmyName()
Jes vala, i to radi! Izvukao sam je posebno iz lib-a i
dobio .obj od svega 226 byteova.
Idemo dalje, novo pitanje glasi:
Kako datoteci dodeliti atribut 8 (volume label). Funkcija XPfattr()
iz Expand-a 3.0 odbija poslušnost kad je u pitanju broj 8.
ps. treba za neku malu zaštitu, tu datoteku ne kopira ni jedan program.
Nije neka al je zaštita.
clipper.259vision,
-> #211, bulajaIzvinjavam se sto nisam ranije pisao (prosla mi pretplata i tako te
zajebancije:). Nego da predjem na stvar:
Pod jedan: Simulirao sam nekako '&' operaciju clipperom i to napravio sam
petju od 0 do 7:), pa sam dati broj uvek delio sa 2 i tako to znate ono
'skolski':) ali je sporo, ali sta je tu je:).
Pod dva: KORISTIM S'87 i nema SetCursor() :(. Oce li neko da mi prebaci lib
sa setcursor-om, ili pa da napravi mali asm:).
Hvala 'ni za sta':)
clipper.260d.petrovic,
-> #251, d.petrovicĂ> Eeeeee, ali nisam ja to zabrljao. To se desava na 486/50 i jos
Ă> nisam
a ko bi drugi, jelte... ;)
kad se izbaci share radi lepo :). Nedostajala je jedna linija koja
glasi
CLOSE __TEMP
i neću više da pišem ništa u jutarnje sate :)
clipper.261mickeyl,
-> #253, bulaja=> llibca arj 121042 LLIBCA.lib, MSC 5.1 lib za povezivanje Clipper -> C
Super, to sam upravo tražio!
clipper.262toma,
Jel može kratak tekst > Kako sam povezao Clipper i C < ?
Sve što mi je palo na pamet sam probao, ali ništa, ustvari, program
se linkuje bez i jedne greške, e sad što posle neće da radi...
ps. MSC 5.1
clipper.263bulaja,
-> #262, toma│Jel moze kratak tekst > Kako sam povezao Clipper i C < ?
│Sve sto mi je palo na pamet sam probao, ali nista, ustvari, program
│se linkuje bez i jedne greske, e sad sto posle nece da radi...
└───
Aj' posalji primer sta nece da radi, pa da vidimo sta nevalja :).
clipper.264toma,
-> #263, bulaja■> Aj' posalji primer sta nece da radi, pa da vidimo sta nevalja :).
Aiii, ma nemam ja pojma o povezivanju, probao sam čisto da
vidim kako se to radi. Problem je i što nemam "Jedrenjaka", čini
mi se da je u njoj bilo govora o tome...
Probao sam nešto trivijalno:
proba.prg
Stampaj()
c.c
#include "\clipper5\include\extend.h"
CLIPPER stampaj()
{
printf("Toma");
}
Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
neki poseban postupak... Neznam ništa :(
clipper.265ndragan,
-> #252, arazumenic/ operator pretera sa spisateljskim mogucnostima, ode stampanje strane
/ na dva lista, a to bas hocu da sprecim.
/ Ako imas resenje, pomagaj!
Korisnik je uvek u pravu, kakav god da je konj. Ja im omogućim da
štampaju koliko god hoće, a ako su baš toliko ludi, oni to i urade.
Jeste da u duši navijam za zelene, pa imam grižu savesti što sam toliko
šume uništio, ali s druge strane sam đavo zna koliko sam šume spasao -
ta faktura je ranije bila pet drugih papira, koji su se prepisivali na
dva tri mesta, i ko zna koliko je to onda trošilo.
clipper.266hercog,
Ajd nek mi neko lagano objasni šta sve treba uraditi da bi se
iskoristila blinkerova funcija DEMONSTRATION...
Šta gođ da sam pokušavao nije telo da radi. Zato otkuckajte sve
lepo, svaki korak :)
Sale
clipper.267arazumenic,
-> #265, ndragan-> Korisnik je uvek u pravu, kakav god da je konj. Ja im omogucim da
-> stampaju koliko god hoce, a ako su bas toliko ludi, oni to i urade.
O.K. Slazem se da je korisnik uvek u pravu, pa makar bio i konj. A ti
isti konji su zapeli da im stampa ide na jedan list posto poto, jer u
protivnom, stampa ode preko memoranduma.
Sasa
clipper.268mickeyl,
-> #262, toma=> Jel može kratak tekst > Kako sam povezao Clipper i C < ?
Evo kako sam ja izvorni kod DUG_IDE u c-u prilagodio svojim
potrebama i sve to spojio s clipper aplikacijom.
----------------------------------------------------------------------
#include <extend.h> <----- Ovo sam ja dodao, inače ta linija
treba obavezno da stoji
#include <stdlib.h>
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <bios.h>
char *getascii (unsigned int in_data ŠĆ, int off_start, int off_end);
/*void main (void)*/
CLIPPER control() <---- Ovde sam deklarisao ime kako će se
funkcija koju će Clipper aplikacija
zvati
š
unsigned int dd Š256Ć; /* DiskData */
unsigned int dd_off; /* DiskData offset */
unsigned int loop; /* Loop variable */
int num_drv; /* Number of Hard disks */
char *prenos; <----- Ovde sam dodao svoju varijablu ciju
vrednost iz c programa zelim da
vratim u clipper program
union REGS registers; /* Used for Interrupt for BIOS data */
unsigned int bios_cyl Š2Ć, bios_head Š2Ć, bios_sec Š2Ć; /* Cylinders, Heads,
Sectors */
/* How many disk drives & parameters */
num_drv = 1; /* Byte at Segment 40H Offset 75H
*/
for (loop = 0; loop < num_drv; loop++) /* Loop through drives */
š
/* Get IDE Drive info */
while (inp (0x1F7) != 0x50) /* Wait for controller not busy */
;
outp (0x1F6, (loop == 0 ? 0xA0 : 0xB0)); /* Get first/second drive */
outp (0x1F7, 0xEC); /* Get drive info data */
while (inp (0x1F7) != 0x58) /* Wait for data ready */
;
for (dd_off = 0; dd_off != 256; dd_off++) /* Read "sector" */
dd Šdd_offĆ = inpw (0x1F0);
/* Get BIOS drive info */
registers.h.ah = 0x8; /* Get drive info */
registers.h.dl = 0x80 + loop; /* Drive is 80H for Disk 0, 81H for Disk
1 */
int86 (0x13, ®isters, ®isters);
if (! registers.x.cflag) /* All OK if carry not set */
š
bios_head ŠloopĆ = registers.h.dh + 1; /* Heads are from 0 */
bios_sec ŠloopĆ = registers.h.cl & 0x3F; /* sec is bits 5 - 0 */
bios_cyl ŠloopĆ = ((registers.h.cl & 0xC0) << 2) + registers.h.ch +
2; /* +1 because starts from 0 and +1 for FDISK leaving one out */
ć
prenos=getascii (dd, 10, 19);
ć
_retc(prenos); <---- I ovde sam iskoristio makro iz
extend.h za vracanje stringa u
clipper aplikaciju
ć
char *getascii (unsigned int in_data ŠĆ, int off_start, int off_end)
š
static char ret_val Š255Ć;
int loop, loop1;
for (loop = off_start, loop1 = 0; loop <= off_end; loop++)
š
ret_val Šloop1++Ć = (char) (in_data ŠloopĆ / 256); /* Get High byte */
ret_val Šloop1++Ć = (char) (in_data ŠloopĆ % 256); /* Get Low byte */
ć
ret_val Šloop1Ć = 'Đ0'; /* Make sure it ends in a NULL character */
return (ret_val);
ć
------------------------------------------------------------------------
U clipper program staviš recimo : var=CONTROL(), nakon čega
u ovom mom slučaju var dobija vrednost serijskog broja IDE
diska.
Da bi kompajlirao program u c za clipper upotrebi sledeću
sintaksu:
CL /c /AL /Zi /Oalt /FPa /Gs <ime datoteke>.c
Eto to je moje prvo iskustvo C+Clipper i odmah mi je
proradilo, čim sam nabavio LLIBCA.LIB.
p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
poruke.
clipper.269magician,
-> #268, mickeyl=> p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
=> poruke.
Ma, šta ti pada na pamet ;)
clipper.270toma,
-> #264, toma■> Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
■> neki poseban postupak... Neznam ništa :(
STOJ!
Radi, sad znam da povezujem! Nabavio sam "Jedrenjaka" ali ni tad
nije išlo glatko jer sam naviknut na Clipper <ime_fajla> [opcije]
kucao: cl <ime_fajla> [opcije] !!!!!
toma = Turbo DILEJA 16v injection!!!!!
clipper.271gari,
-> #266, hercogEvo ti brate korak po korak:
U komandnoj liniji ide: BLINKER @BLINK.LNK
U fajlu BLINK.LNK treba da ide otprilike ovo:
FILE E:\LD
OUTPUT E:\LD
BLINKER DEMONSTRATION MINUTES 2
LIB CLIPPER, EXTEND, ML
E, pa ako ne bude sa ovim radilo (naravno prilagodis
svojim potrebama vrednosti iza FILE, OUTPUT i LIB)
onda imas ili verziju blinker-a od pre hrista ili
se nalazis u Zoni sumraka ;)
Nadam se da ce ti ovo pomoci,
pozdrav, Gari.
clipper.272snemcev,
-> #268, mickeyl>> p.s. Nadam se da se drugi neće ljutiti zbog obimnosti
>> poruke.
Ljutiti? More, čitao bih ja i megabajtne poruke, samo da su korisne
koliko tvoja. Jedan primer govori više od hiljadu reči.
clipper.275mickeyl,
-> #266, hercog=> Ajd nek mi neko lagano objasni šta sve treba uraditi da bi se
=> iskoristila blinkerova funcija DEMONSTRATION...
Evo ti sadržaj mog DEMO.LNK-a. Kroz primjer ćeš najlakše da
središ stvar.
BLINKER DEMONSTRATION DATE 1993/12/31
BLINKER DEMONSTRATION MINUTES 120
BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F25;V006;
BLINKER OVERLAY OPSIZE 100
BLINKER OVERLAY UMB OFF
BLINKER EXECUTABLE SERIAL #DEMO_VER
OUTPUT DEMO.EXE
FILE demo
#
BEGINAREA
....
ENDAREA
čCL87MAX.LNK
Linkuješ sa BLINKER č<ime LNK fajla>
clipper.276neman,
U mreznoj aplikaciji koristim sledeci niz naredbi
IF reclock( 10 ) .AND. chkrec()
REPL polje WITH vrednost
DBCOMMIT(); UNLOCK
ENDIF
gde reclock(n) zakljucava slog, a chkrec() proverava da li je doslo
do promene vrednosti od strane drugog korisnika sloga za vreme
izmene podataka.
Ideja je bila da pri svakoj promeni bilo kog sloga izvrsim i DBCOMMIT()
da bi podaci bili UPISANI na disk. Za UNLOCK u NG kaze da kada se
izvrsi ta komanda promene budu vidljive i ostalim korisnicima, ali bez
snimanja na disk.
Testirajuci brzinu aplikacije uvideo sam da DBCOMMIT() dosta usporava
izvrsenje aplikacije, cak i na jednokorisnickoj masini.
Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika, a samim
tim i moje licne :), to jos nisam uradio.
Dakle, interesuju me tudja iskustva u vezi ovog problema.
P.S.
Resenje tipa
USE ...
REPLACE
UNLOCK
CLOSE
je jos sporije.
neman
clipper.277ppekovic,
-> #264, toma>> Nemam pojma ni koje opcije da dam CL-u (MSC 5.1) ni da li je potreban
>> neki poseban postupak... Neznam ništa :(
Prvo je potrebno da program prevodiš u Large modelu (/AL) a
valjalo bi da se isključi i optimizacija (/Od).
Paya
clipper.278dejanr,
-> #276, neman>> Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika, a samim
>> tim i moje licne :), to jos nisam uradio.
Meni je mehanizam sa RLOCK...UNLOCK uvek lepo radio, nikada nije bilo
potrebno koristiti DBCOMMIT.
clipper.279neman,
-> #278, dejanr> Meni je mehanizam sa RLOCK...UNLOCK uvek lepo radio,
> nikada nije bilo potrebno koristiti DBCOMMIT.
Hm, ovo me je zaintrigiralo pa sam uradio neke testove, doduse
na mom PC-ju, ne i na Novell mrezi.
JEDINI (siguran) nacin da podaci budu snimljeni na disk je da se uradi
DBCOMMIT(). To ne vazi ako je kesirano upisivanje na disk.
Opet napominjem da zatvaranje datoteka i ponovno otvaranje nije
resenje zbog sporosti te operacije.
Kriticne su operacije npr. dugotrajno azuriranje podataka bez napustanja
maske za unos ( tada bi se zatvorile datoteke i podaci bi bili snimljeni ),
zatim svodjenje stanja sa upisom u datoteku i jos po nesto. Nestanak struje
u takvoj situaciji je KATASTROFA, pogotovu kod azuriranja.
Resenje je naravno UPS, ali nije bas jeftino obezbediti UPS za svaki
racunar u vecoj mrezi.
Sto se Novell-a tice, resetovanjem servera igracu se narednih dana.
Sada pretpostavljam da nisi imao problema sa RLOCK() i UNLOCK zato sto
Novell sam u odredjenim vremenskim razmacima vrsi snimanje podataka
( vreme se moze zadati ) na disk.
Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
ranije pomenute situacije. Nanfor i Netto imaju neku podrsku za to.
Imali iskustva sa koriscenjem TTS-a ?
neman
clipper.280dejanr,
-> #279, neman>> Kriticne su operacije npr. dugotrajno azuriranje podataka bez napustanja
>> maske za unos ( tada bi se zatvorile datoteke i podaci bi bili snimljeni)
>> zatim svodjenje stanja sa upisom u datoteku i jos po nesto. Nestanak
>> struje u takvoj situaciji je KATASTROFA, pogotovu kod azuriranja.
Mislim da to samo po sebi i nije tolika katastrofa. Naime, ako neko radi u
masci i tu usred rada nestane struje, nekako je "blisko pameti" da će to
što je u toj masci radio morati da uradi ponovo. Nisam primetio da se
korisnici za to bune ;) Ono što jeste katastrofa je da više prethodnih
intervencija na slogovima ne bude upamćeno, ne samo zato što bi to trebalo
ponovo raditi, nego zato što ne može čovek da popamti šta je sve radio i
gde je intervenisao. Recimo, na Sezamu backup konferencija itd radimo
povremeno, ali backup korisničke baze mora da se radi jako, jako često -
da ona (daleko bilo) pukne, silna nevolja bi bila dovesti je ponovo u red :(
>> Resenje je naravno UPS, ali nije bas jeftino obezbediti UPS za svaki
>> racunar u vecoj mrezi.
Da... ali je dosta da se obezbedi UPS za server. Transakcije koje su
ranije izvršene će tada svakako biti realizovane, a tekuća... šta da
se radi.
>> Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
>> END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
>> ranije pomenute situacije.
Nisam znao da to ima dBASE IV, to je sjajna stvar. Video sam da je to
osnova BTrieve rada, i mislim da je jako dobra ideja.
clipper.281v.nesic,
Traži se !
Negde sam video programčić koji zamenjuje standardni GET rider i
omogućava da se brojne vrenosti unose kao na digitronu.
Ako ga neko ima, ili zna gde sam ga video...
clipper.282neman,
-> #280, dejanr> sto je u toj masci radio morati da uradi ponovo. Nisam
> primetio da se korisnici za to bune ;) Ono sto jeste
> katastrofa je da vise prethodnih intervencija na slogovima
> ne bude upamceno, ne samo zato sto bi to trebalo
Pre dve godine, postavio sam aplikaciju u jednom video klubu. Objasnio sam
vlasnici kako se unose podaci. Sutradan sam dosao i pitao kako ide a ona rece
da je unela oko 150 clanova. Ja pogledah - ono nista, ni traga ni glasa od
podataka. Objasnim joj ponovo sve - sutra ista pesma. I onda se upali
sijalica. Ona UOPSTE nije izlazila sa maske za unos po celi dan :((((((
Sutradan sam ja podmetnuo svoje prste i zavrsio oko 700 clanova. Od tada
sam na svakih pet unetih stavki zatvarao i ponovo otvarao datoteku. A onda
sam saznao za COMMIT :))))))))) Ko prizna pola mu se doda ;)
> Da... ali je dosta da se obezbedi UPS za server.
> Transakcije koje su ranije izvrsene ce tada svakako biti
> realizovane, a tekuca... sta da se radi.
Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke. Kod
sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi ubrzalo
obradu a ako i dodje do pada sistema - Jovo nanovo.
clipper.283neman,
-> #281, v.nesic> Ako ga neko ima, ili zna gde sam ga video...
Potrazicu na svojim disketama .... evo ga :)
neman
ngetdemo.prgclipper.284.bale.,
-> #280, dejanr> Da... ali je dosta da se obezbedi UPS za server. Transakcije koje su
> ranije izvršene će tada svakako biti realizovane, a tekuća... šta da
> se radi.
"Seci uši, krpi dupe" filozofija. E... :( A tolika nauka o bazama
podataka i sistemima otpornim na otkaze, čemu? Dokle bi stigao SDK
kad bi koristio Clipper?
(Ne moraš da odgovaraš, nije bitno, znam da imaš odgovor :)
clipper.285d.petrovic,
-> #276, nemanĂ> Pokusao bih da izbacim DBCOMMIT() ali zbog sigurnosti korisnika,
Ă> a samim tim i moje licne :), to jos nisam uradio.
Ă> Dakle, interesuju me tudja iskustva u vezi ovog problema.
Zdravo je ubaciti ga povremeno i nije mi jasno gde se to
toliko gubi vreme, valjda možeš da izvršiš upis na disk kada korisnik
završi sa jednom promenom. Aplikaciju ti praviš i ti treba da odlučiš
kada treba ubaciti dbcommit().
Ja sam u nenadov ninkey() ubacio da se kod neaktivnosti
tastature od n sekundi izvrši upis na disk, a svuda gde treba
izvršiti upis umesto dbcommit() postavljam promenljivu koja
kontroliše upis na .T. . Može neko da pita:"Šta, ako nestane struje,
a korisnik je neprekidno radio prethodnih sat vremena". Odgovor:"Još
ne videh tako ažurnog srbina da ne pusti tastaturu na miru na 2-3
sekunde" ;>>
clipper.286dejanr,
-> #284, .bale.>> "Seci uši, krpi dupe" filozofija. E... :( A tolika nauka o bazama
>> podataka i sistemima otpornim na otkaze, čemu?
Sva nauka kaže da ne postoji sistem koji je potpuno otporan na otkaze,
može se samo napraviti sigurniji ili manje siguran sistem. UPS na serveru,
program koji redovno piše na disk i redovan backup, po meni, čine dovoljno
siguran sistem za većinu primena. Ako je nekome baš velika frka, može da
napravi mirroring diska.
>> Dokle bi stigao SDK kad bi koristio Clipper?
Prvo, SDK koristi Clipper programe, hvala na pitanju. Na PC računarima.
Drugo, softver koji koristi SDK na većim mašinama se ubija od sigurnosti,
a baze podataka koje su napravili (imena i računi firmi) ne vrede pet
para (iako ih prodaju, ili su ih prodavali, za hiljadu maraka). Pa opet
nekako funkcionišu, kao što se vidi.
clipper.287.bale.,
-> #286, dejanr> Drugo, softver koji koristi SDK na većim mašinama se ubija od
> sigurnosti, a baze podataka koje su napravili (imena i računi firmi)
A koji su oni u RC-u? PTT ili SDK? Na kraju, kako hoće, za mene je to
i dalje "seci uši, krpi dupe" ;-))) Vidiš da sam nedokaziv, lepo sam
ti rekao da se ne trudiš odgovarajući...
clipper.288v.nesic,
-> #283, neman> Potrazicu na svojim disketama .... evo ga :)
Hvala :)
clipper.289mickeyl,
-> #282, neman=> Pre dve godine, postavio sam aplikaciju u jednom video klubu. Objasnio
=> sam vlasnici kako se unose podaci. Sutradan sam dosao i pitao kako ide a
=> ona rece da je unela oko 150 clanova. Ja pogledah - ono nista, ni traga
=> ni glasa od podataka. Objasnim joj ponovo sve - sutra ista pesma. I onda
=> se upali sijalica. Ona UOPSTE nije izlazila sa maske za unos po celi dan
=> :(((((( Sutradan sam ja podmetnuo svoje prste i zavrsio oko 700 clanova.
=> Od tada sam na svakih pet unetih stavki zatvarao i ponovo otvarao
=> datoteku. A onda sam saznao za COMMIT :))))))))) Ko prizna pola mu se
=> doda ;)
E pa tu mi nešto smrdi :(. Nije ti disk buffer toliki da bi
čuvao sve vreme te podatke, a da se pri tom ne piše na disk.
Po meni, tvoj program nije bio dobar. Kakve veze ima unosna
maska sa snimanjem podataka na disk? Ako je tvoj program
radio APPEND BLANK i REPLACE, moralo je u bazi od 150
članova, da bude njih preko 100 unesenih i sačuvanih na
disku. I da je na kraju završila isključivanjem računara, a
ne regularnim izlaskom iz programa, moralo bi nešto da
ostane. U najgorem slučaju bila bi datoteka zeznuta, a ne
prazna.
=> Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke. Kod
=> sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi ubrzalo
=> obradu a ako i dodje do pada sistema - Jovo nanovo.
Nije mi jasna ta tvoja tvrdnja COMMIT usporava obradu. To
više mogu da shvatim teoretski, jer u praksi to se i ne
primjeti. To iz ličnog iskustva. Naravno ako ga staviš na
pravo mjesto tj. posle svakog unosa novih podataka.
clipper.290neman,
-> #289, mickeyl> E pa tu mi nesto smrdi :(. Nije ti disk buffer toliki da
> bi cuvao sve vreme te podatke, a da se pri tom ne pise na
> disk. Po meni, tvoj program nije bio dobar. Kakve veze ima
> unosna maska sa snimanjem podataka na disk? Ako je tvoj
> program radio APPEND BLANK i REPLACE, moralo je u bazi od
> 150
He he, meni mozes svasta da kazes ali da mi program ne radi,
e to me tangira zestoko. Elem, iskljuci eventualni kes program,
ukucaj i prevedi sledeci program ( ja imam trenutno Clipper 5.2c )
CLS
USE test
FOR i := 1 TO 1000
APPE BLANK
@ 24, 0 SAY i
NEXT
Baza test recimo ima samo jedno polje npr P tipa Character duzine 10
Pre nego sto pokrenes isprazni bazu. Kada pokrense program, pusti ga da
izbroji do recimo 200-500 pa RESETUJ racunar dok radi program. Kada se
racunar pokrene pogledaj koliko slogova u bazi. Videces da od onih 100
slogova imas samo 00 tj 0 slogova ;>. Ako ubacis DBCOMMIT() u FOR - NEXT
petlju imaces 200-500 slogova u bazi.
Sto se tice Clipper-ovog bafera za podatke on je velik 64KB. ( barem )
DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog programceta
sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
clipper.291ndragan,
-> #267, arazumenic/ isti konji su zapeli da im stampa ide na jedan list posto poto, jer u
/ protivnom, stampa ode preko memoranduma.
Šta? Hoćeš reći da ne odštampaš novo zaglavlje za novu stranu (makar
bilo i prazno tamo gde dođe moremandum)? Ako se račun nastavlja na drugu
stranu, mora da ima makar skraćeno zaglavlje. Nema teorije da se dozvoli
da neka štampa pređe preko ivice papira.
clipper.292ndragan,
-> #279, neman/ Pada mi napamet da u DBASE IV postoje naredbe BEGIN TRANSACTION,
/ END TRANSACTION i ROLLBACK koje bi trebale da efikasnije kontrolisu
U FP2.+ postoji bibliotetka netware.plb; nismo se još sigrali s otim,
ali nameravamo u dogledno vreme. Trebalo bi da radi upravo te stvari,
jer se funkcije otprilike tako i zovu.
clipper.293cnenad,
-> #289, mickeylŁŁŁ => ona rece da je unela oko 150 clanova. Ja pogledah - ono
ŁŁŁ nista, ni traga => ni glasa od podataka. Objasnim joj ponovo
ŁŁŁ sve - sutra ista pesma. I onda
Jes da DBASE IV nije CLIPPER ali i meni se nesto slicno dogadjalo u
pocetnickim danima kad sam unosio podatke u bazu i umesto CLOSE DATA,
QUIT jednostavno i efikasno pritiskao crveno dugme na kojem pise OFF !
I normalno ono sto je unoseno od zadnjeg snimanja sa CTRL-END nije
bilo snimljeno, u stvari ti slogovi su postojali i na njih su bili
duplirani podaci koji su ranije uneti ali se njima nije nikako moglo
pristupiti vec samo izvrsiti brisanje tih slogova i pack cele baze.
Eh, koliko sam podataka bez veze po nekoliko puta unosio :( !
clipper.294nesa,
-> #288, v.nesic>> Potrazicu na svojim disketama .... evo ga :)
Može li se dobiti! :))
clipper.295snemcev,
Jel zna neko TAžNO kako se Clipper kompajler ponaša pri kompajliranju
funkcija koje su u okviru kodnih blokova?
Interesuje me da li ih pretprocesor ikako menja. Npr, kako će posle
kompajliranja izgledati .ppo datoteka za ovaj kod?
---------------------------------
#command Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
---------------------------------
clipper.296toma,
-> #290, neman■> DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog
■> programceta sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
Evo ti rešenje.
Pod jedan, smem da se kladim da nigde u svojim programima nemaš
ovako nešto, jer je jednostavno nepotrebno. Razlika u brzini se najviše
vidi u delu programa kad se polja popunjavaju/dodaju automatski,
znači bez intervencije operatera. Tu i ako se izgube podaci nije uopšte
strašno, jednostavno se opet "sami" izračunaju.
Pod dva, situacija kada operater radi, t.j. kad je bitno da podaci
sačuvaju za kasnije.
1. Izedituj getsys.prg, tu imaš linije:
// apply keystrokes until exit
while ( get:exitState == GE_NOEXIT )
GetApplyKey( get, Inkey(0) )
end
2. Umesto inkey(0) stavi ninkey(0), a u njemu, kao što reče
gosn.Dejan Petrović:
■> Ja sam u nenadov ninkey() ubacio da se kod neaktivnosti
■> tastature od n sekundi izvrši upis na disk, a svuda gde treba
■> izvršiti upis umesto dbcommit() postavljam promenljivu koja
■> kontroliše upis na .T. . Može neko da pita:"Šta, ako nestane struje,
■> a korisnik je neprekidno radio prethodnih sat vremena". Odgovor:"Još
■> ne videh tako ažurnog srbina da ne pusti tastaturu na miru na 2-3
■> sekunde" ;>>
btw, Dejane, možemo li da dobijemo ninkey(). Sa tvojim dodacima,
obavezno!
clipper.297arazumenic,
-> #291, ndragan-> Sta? Hoces reci da ne odstampas novo zaglavlje za novu stranu
-> (makar bilo i prazno tamo gde dode moremandum)? Ako se racun
-> nastavlja na drugu stranu, mora da ima makar skraceno
-> zaglavlje. Nema teorije da se dozvoli da neka stampa prede
-> preko ivice papira.
Pa upravo je o tome i rec, da se ne dozvoli da da stampa predje preko
ivice papira. Inace, cela stamapa jednostavno mora da stane na jednu
stranu (takvi su "konjski" zahtevi). Zato mi i treba da se memoedit
ogranici na odredjen broj redova.
Sasa.
clipper.298mcgoran,
-> #295, snemcevcase 1
======
1) trtmrt.prg:
#command Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Trt(5) })
case 2
======
1) trtmrt.prg:
#translate Trt( <a> ) => Mrt( <a> )
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Mrt( 5 ) })
case 3
======
1) trtmrt.prg:
#define Trt(a) Mrt(a)
Eval({ || Trt(5) })
2) clipper trtmrt /s/p
3) trtmrt.ppo:
Eval({ || Mrt(5) })
Any question... !?
clipper.299toma,
-> #281, v.nesic■> Negde sam video programčić koji zamenjuje standardni GET rider i
■> omogućava da se brojne vrenosti unose kao na digitronu.
■>
■> Ako ga neko ima, ili zna gde sam ga video...
Ovo me je konačno "dotuklo"! Seo sam i realizovao plan star cca
1.god. Dakle uz poruku je zakačen getsys.prg koji omogućava ovo što se
traži i to po sledećim pravilima:
- normalno, reaguje samo na numeričke vrednosti
- radi sve dok se ne "stisne" neki taster koji je različit
od +-1234567890 i backspace, posle toga prelazi u normalan
mod, i omogućava editovanje
Sve ovo je urađeno za veče (cca 1 ipo sat) i možda ima i grešaka,
ali zato ste vi tu!
getsys.zipclipper.300d.petrovic,
-> #296, tomaĂ> btw, Dejane, možemo li da dobijemo ninkey(). Sa tvojim dodacima,
Ă> obavezno!
Samo da ubacim komentare i izbacim nepotrebno. Ako ga nema za par
dana podseti me opet :)
clipper.301d.petrovic,
-> #296, tomaEvo kad si zapeo :)
Screen Saver mora isto da štampa
ko kaže da ti treba keš kad voziš kliper program ? ;)))
ninkey.zipclipper.302nesa,
-> #292, ndragan> / Pada mi napamet da u DBASE IV postoje naredbe BEGIN
> TRANSACTION, / END TRANSACTION i ROLLBACK koje bi trebale da
> efikasnije kontrolisu
>
> U FP2.+ postoji bibliotetka netware.plb; nismo se još sigrali s
> otim, ali nameravamo u dogledno vreme. Trebalo bi da radi
> upravo te stvari, jer se funkcije otprilike tako i zovu.
Kasno sam se priključio! Može li dodatno objašnjenje?! :(
clipper.303snemcev,
-> #298, mcgoran>> case 2
>> # translate Trt( <a> ) => Mrt( <a> )
>> Any question... !?
Jeah! Ovo mi rešava problem. Nigde u .NG nisam mogao da nađem razliku
između #commnad i #translate. Tamo su dati kao sinonimi.
clipper.304mickeyl,
-> #290, neman=> He he, meni mozes svasta da kazes ali da mi program ne radi,
=> e to me tangira zestoko. Elem, iskljuci eventualni kes program,
Nisi me dobro razumio, mada ni ja tebe nisam najbolje
razumio. Mislio sam da ti nešto kod unosa nije valjalo,
pošto mi se takva stvar nikad nije desila. Ja obično
prvo što objasnim nekom duduku jeste da računar smije
isključiti samo kad je u DOS promptu. Mada me čudi da
Clipper toliko mnogo čuva podataka u baferu. Ja sam
mislio da uvijek čuva u baferu par zadnjih slogova,
dok one u međuvremenu snima na disk.
=> Pre nego sto pokrenes isprazni bazu. Kada pokrense program, pusti ga da
=> izbroji do recimo 200-500 pa RESETUJ racunar dok radi program. Kada se
=> racunar pokrene pogledaj koliko slogova u bazi. Videces da od onih 100
=> slogova imas samo 00 tj 0 slogova ;>. Ako ubacis DBCOMMIT() u FOR - NEXT
=> petlju imaces 200-500 slogova u bazi.
Tačno. Ali je si li ti njoj rekao da kad završi unos tek
tako isključi računar ili da regularno izađe u DOS, pa tek
onda da ga isključi. Dakle ovo se moglo desiti samo da je
nestalo struje ili ona zbog svog neznanja isključila računar
prije vremena :(. Izgleda da se ovo drugo i desilo.
=> DBCOMMIT() UUSSPPOORRAAVVAA obradu. Izmeri vreme izvrsenja ovog
=> programceta sa i bez DBCOMMIT(). Razlika je dRRRRRasticna.
Ma u pravu si, samo nisam u prvi mah skonto šta ti znači ono
pri sekvencijalnoj obradi. Ja posle svakog unosa imam COMMIT
i u tom slučaju se ne čeka mnogo, tj. uopšte se ne primjećuje
da dolazi do nekog drastičnog usporenja.
Pozdrav i ne ljuti se.
clipper.305mickeyl,
-> #289, mickeyl=>=> Cini mi se da je najbolje resenje DBCOMMIT() pri unosu svake stavke.
=>=> Kod sekvencijalne obrade moglo bi da se izostavi COMMIT() sto bi
=>=> ubrzalo obradu a ako i dodje do pada sistema - Jovo nanovo.
=>
=> Nije mi jasna ta tvoja tvrdnja COMMIT usporava obradu. To
=> više mogu da shvatim teoretski, jer u praksi to se i ne
=> primjeti. To iz ličnog iskustva. Naravno ako ga staviš na
=> pravo mjesto tj. posle svakog unosa novih podataka.
Vođe sam se ja za*ebao :(((. Nisam dobro shvatio šta si
podrazumjevao pod onim sekvencijalna obrada :(. U pravu si
pravo rješenje i jeste da posle svakog unosa staciš COMMIT.
Kod sekvencijalne obrade, ako izostaviš COMMIT, može da ti
se desi da se neke promjene snime na disk i u tom slučaju,
ne možeš Jovo nanovo :((.