PCPROG.4

22 Apr 1994 - 05 Jan 1995

Topics

  1. algoritmi (153)
  2. comment (15)
  3. ms.dos (123)
  4. windows (304)
  5. asembler (103)
  6. basic (80)
  7. jezici (196)
  8. pascal (880)
  9. cccc (586)
  10. cpp (157)
  11. clipper (1267)
  12. baze.podataka (525)
  13. razno (529)

Messages - clipper

clipper.926 neman,
Primetio sam da SIX NSX 1.5 prilicno usporava pristup podacima na mrezi kada se upotrebi SET SCOPE komanda umesto kombinacije SEEK & WHILE. Pretpostavljam da se radi o stalnom zakljucavanju & otkljucavanju indeksne datoteke zbog kontrole opsega. Ima li neko slicinih iskustava ?
clipper.927 bulaja, -> #914, aquarius
│Novi NLabSGetReader v2.25, laksi za implementaciju u source. │Ko voli nek izvoli. Ako Bulaja misli da treba moze i u DIR. └─── Može :), prebačeno.
clipper.928 stosic, -> #916, hercog
> Zna li neko kako se koristi cudo zvano Clipper za WIN. Dobih ga na 1 3.5"HD > disketi, instalirah, ali sad ne znam sta cu sa njim. Bilo je o tome u CIP-u, br.3 i 4.
clipper.929 stosic, -> #925, bulaja
>Sramota je da ovo pitanje ostane bez odgovora :) (ja nesto nisam pri >vremenu, ali kad moram..), so evo ga. O ovome sam jednom razgovarao sa Dejanom. Ideja je bila da se pitanja koja ne spadaju u "neozbiljna" ne ostavljaju bez nekog odgovora. Ko bi vodio racuna o tome, stvar je Redakcije. Jesmo li u koraku sa svetom ili mozemo i korak napred?
clipper.930 aquarius,
Ko ima FUNCky II nek proba. Aquarius funsaa.zip
clipper.931 aquarius,
Ko ima FUNCky II nek procita. Aquarius funckyds.zip
clipper.932 jolicm,
Potrebna pomoć Grafička biblioteka za clipper DGE50 Pri štampanju nema veze koji je drajver za štampač učitan štampa pogrešno kodove za broj tačaka u jednoj liniji, prvo je sa originalk drajverom štampao (slao kontrolne karaktere) za duzinu linije obrnuto, prvo high pa zatim low bajt. Kada sam "ručno" izmenuo kodove u drajveru low high bajt dobro pošalje, a u low smesti neku nebulozu. Rezultat je takav da štampač pri štampanju grafike ne dobije prave podatke o broju bajtova koji slede za grafiku u jednoj liniji, pa odštampa deo grafičke linije ispravno , a ostatak kao karakuke. Da li je neko od Vas imao takve probleme sa DGE v5.0 i ako je imao kako ih je rešio ? POMOĆ JE POTREBNA HITNO.
clipper.933 bpekic, -> #932, jolicm
Daj jos neki podatak; - Jesi li isto probao sa DGE 4.0 - Koji stampac biras - STA stampas (grafikon ili nesto drugo - Kakva ti je inicijalizacija stampe, Inace ja koristim FLIPPER, mislim da izmedju ostalog, efikasnije koristi drajvere za stampac. Pozdrav.
clipper.934 jolicm, -> #933, bpekic
>> Daj još neki podatak; Prvi put se susrećem sa DGE rutinama. Drajver za štampač sam probao , sve raspolozive za crno bele štanpače. Sa bilo kojom inicijalizacijom, portrant, landskape .. neće! Inače rešio sam problem štampe na krajnje grub način. Prvo odštampam grafikon u datoteku, a zatim iz datoteke čitam red po red grafike i ispravljam šta se da ispraviti i to tako štampam. >> Inače ja koristim FLIPPER Molim te nabroj mi neke prednosti nad DGE., pa se mozda i ja odlučim za flipper.
clipper.935 dzoric,
Evo jos jednom da ponovim problem, posto mi prosli put niko nije pomogao. Naime, trebam da na A4 formatu stampam izvestaje koji imaju po dvadesetak kolona u redu. To su knjige koje su potrebne za vodjenje STR radnji (knjige rashoda, prihoda, itd...). Do sada sam ih stampao kondenzovano u 3-4 reda, ali su dosta nepregledne kao u prilozenom skracenom primeru: GGG STRANA: 1 Prodavnica: KOMISION 1 KNJIGA RASHODA U periodu od: 01.01.94. do: 11.11.94. ========================================================= 1 Datum Br.dokumenta Opis --------------------------------------------------------- Materijalni trosk. Nematerijalni Obracunate 2 i amortizacija troskovi plate --------------------------------------------------------- Razlika u Obracunati Prodajna vre- 3 ceni porez dnost robe --------------------------------------------------------- UKUPNI Izdaci za hum. Izdaci za re- 4 RASHODI zdravstv. nauku prezentaciju ========================================================= 1 01.05.94 4 ULAZNA KALKULACIJA 2 0,00 0,00 0,00 3 77,56 33,44 405,00 4 294,00 0,00 0,00 ------------------------------------------------------- 1 10.11.94 44 ULAZNA KALKULACIJA 2 0,00 0,00 0,00 3 508,30 356,70 4.397,00 4 3.532,00 0,00 0,00 ------------------------------------------------------- ... ... ... ITD Da li se neko (a sigurno jeste) bavio ovim problemom, i ako moze da mi predlozi neko elegantnije resenje. __Dejan__
clipper.936 bulaja, -> #935, dzoric
│Evo jos jednom da ponovim problem, posto mi prosli put niko nije │pomogao. Naime, trebam da na A4 formatu stampam izvestaje koji │imaju po dvadesetak kolona u redu. To su knjige koje su potrebne │za vodjenje STR radnji (knjige rashoda, prihoda, itd...). └─── Ako se ne varam, sve te knjige su na po dve A4 strane, tako da će najbolje biti da ih štampaš na dva odvojena lista, koja ćeš zatim jednostavno spojiti po sredini i dobiti A3 list sa rasporedom kolona kao u standardnim knjigama. Predlažem ti ovde rešenje koje kompletan izveštaj odnosno štampanje tretira kao da će ići na A3 format i štampa ga u datoteku, a zatim posebna procedura štampa levu i desnu A4 stranu i odvojeno ih štampa - tvoje je samo da posle spojiš strane :). Dole data procedura se oslanja na funkciju Print_String (<cString>) koju ćeš morati sam da napišeš (mada je verovatno već imaš gotovu:) i koja izbacuje na štampač željeni string (u našem slučaju celu stranu), uz sve potrobne kontrole uspelosti štampanja. Da ne bi ovde suviše komplikovao, ova moja procedura za razdvajanje strana ne proverava status koji mu funkcija Print_String() vraća (da li je štampanje uspelo ili ne), tako da ćeš i to trebati da dodaš :). Ovde se podrazumeva da ne koristiš nikakve specijalne kodove za štampač, tj. strana se seče na pola tamo gde si rekao da je margina. Štampanje sa kontrolnim kodovima nije problem ugraditi (proceduri se prosledi i lista svih mogućih specijalnih kodova koje zatim uzima u obzir za odredjivanje realnog mesta podele strane), pa ako ti je to potrebno možeš dodati :). #define FF Chr(12) **** -------------------------------- **** PROC Prn_PolaA3 (cFileName, nSredina) /* Dakle kao argument funkciji proslediš naziv datoteke u koju si smestio izveštaj i broj kolone na kojoj hoćeš da se razgraniči leva od desne strane (npr. 80). */ LOCAL xFile, cLine LOCAL cPage1, cPage2 xFile := FOpen (cFileName, FO_READ) IF Ferror() != 0 Alert ("Greška prilikom otvaranja print datoteke!") RETURN ENDIF cPage1 := "" cPage2 := "" DO WHILE .T. IF FEOF() Print_String(cPage1 + FF) Print_String(cPage2 + FF) EXIT ENDIF cLine := FReadLn (xFile, 1, 255) IF (cLine == FF) // prazan red sa Form Feed-om u izveštaju // bi trebao da znači kraj strane :) Print_String(cPage1 + FF) Print_String(cPage2 + FF) cPage1 := "" cPage2 := "" ELSE /* u slučaju da budeš modifikovao proceduru da uzima u obzir i specijalne kodove za štampanje, ovde bi prvo trebao da proračunaš realnu <nSredina> za dati red. */ cPage1 += Left(cLine, nSredina) cPage2 += Stuff(cLine, 1, nSredina, "") ENDIF ENDDO FClose(xFile) RETURN **** -------------------------------- **** FUNC Print_String (cString) /* U ovoj funkciji treba prosledjeni <cString> proslediti na štampanje bez ikakvog dodatnog formatiranja, samo uz kontrolu uspelosti štampanja (naravno trebalo bi dresirati i prethodnu proc da obradjuje slučajeve neuspelog štampanja:). */ // Place your code here :) RETURN (.T.) /* * Copyright (c) 1994 Jovan Bulajić * Free usage granted for Sezam users * O:) */
clipper.937 mdrazic, -> #935, dzoric
> Evo jos jednom da ponovim problem, posto mi prosli put niko nije > pomogao. Naime, trebam da na A4 formatu stampam izvestaje koji > imaju po dvadesetak kolona u redu. To su knjige koje su potrebne Predlažem dva rešenja. Prvo, online. Izveštaj kada praviš, baferišeš u jedan niz (listu). Kada popuniš broj linija na strani ili završiš izveštaj tada odštampaš otprilike ovako: aeval( aLinije, šđcLinijađ QQout(substr(cLinija, 1, 80)) ć ) aeval( aLinije, šđcLinijađ QQout(substr(cLinija, 81, 80)) ć ) aeval( aLinije, šđcLinijađ QQout(substr(cLinija,161, 80)) ć ) itd. Široka strana ide na nekoliko uzastopnih užih, pa se spoje. Drugo, postprocessing. Izgenerišeš izveštaj u fajl (što svima prepo- ručujem), pa kod štampe koristiš spoljni program (filter) koji seče jednu traku iz dokumenta i štampa je. Recimo: stripfil 1 80 <infile >prn stripfil 81 80 <infile >prn stripfil 161 80 <infile >prn ( isto: type infile đ stripfil 161 80 >prn ) gde ovaj filter radi istu stvar kao prvo rešenje. A i ne mora da je baš filter, može i običan program pa imena fajlova da preuzimaš kroz argumente. Po istoj ideji možeš i da izdvajaš i određeni opseg stranica iz dugačkog dokumenta za dalji postupak (recimo zgužvana jedna strana izveštaja). Milan
clipper.938 neman,
Interesuje me sintaksa funkcije m_aprompt() iz FUNCKY-ja.
clipper.939 bpekic, -> #935, dzoric
Ja sam to resio vrlo jednostavno, stampam te vrste izvestaja u sirini koliko god zelim (kada je bila inflacija 99999999999999 milona i tada nije bilo problema), koristim mali .COM program koji se zove SIDEWAYS.COM. Stampu radim na onoliko kolona koliko zelim a stampam POPREKO na papir i nema problema. Knjige te vrste neko u kancelariji uz kaficu smislja i mi treba da se snalazimo kako znamo.Kod STR je to posebno uocljivo. Dakle predlog = SIDEWAYS ili neki drugi slican program, ako nemas, ostavi poruku - stize :)
clipper.940 dzoric, -> #938, neman
>> Interesuje me sintaksa funkcije m_aprompt() iz FUNCKY-ja. Prvi put cujem da postoji ova funkcija u FUNCky lib-u, pretrazio sam i NG i nema. Napisi gde si naisao na ovu funkciju. BTW, Thanks to bulaja, mdrazic i bpekic na savetima u vezi stampe. __Dejan__
clipper.941 neman, -> #940, dzoric
>>> Interesuje me sintaksa funkcije m_aprompt() iz > FUNCKY-ja. > > Prvi put cujem da postoji ova funkcija u FUNCky lib-u, > pretrazio sam i NG i nema. Napisi gde si naisao na ovu > funkciju. Ima, ima cak i kada je pozovem iz programa, linker ne vristi, vec crkne pri izvrsavanju jer treba zadati parametre ;( Hint : NG -> Apendixes -> Overviews -> Sample UDF-s Kaze da postoji i sors, a problem mi je u tome sto jedna arhiva ( surface ili tako nesto sa prve diskete nije bila ispravna pa sam instalaciju izvrsio bez predmetne.
clipper.942 neman, -> #939, bpekic
> Dakle predlog = SIDEWAYS ili neki drugi slican program, > ako nemas, ostavi poruku - stize :) Imas i Onside u IBMPC\PRINTER, samo sto je prilicno komplikovan ( fontovi, velicine fontova :)
clipper.943 bpekic, -> #942, neman
Probao sam ONSIDE ali sam odmah odustao, SIDEWAYS takodje podesava velicinu fontova i sve neophodne parametre ali je MNOGO jednostavniji i mali pa se po potrebi moze startovati i iz aplikacije (mada ja to ne radim). Poslao sam ti pa probaj.
clipper.944 bulaja, -> #939, bpekic
│Ja sam to resio vrlo jednostavno, stampam te vrste izvestaja u sirini │koliko god zelim (kada je bila inflacija 99999999999999 milona i tada │nije bilo problema), koristim mali .COM program koji se zove │SIDEWAYS.COM. └─── To sam i ja hteo odmah da predložim dzoric-u, ali ipak bolje da prvo razmotrimo Clipper rešenje :).
clipper.945 aquarius, -> #941, neman
<> Kaze da postoji i sors, a problem mi je u tome sto jedna <> arhiva ( surface ili tako nesto sa prve diskete nije bila <> ispravna pa sam instalaciju izvrsio bez predmetne. 1. evo ga source c_m_apro.prg 2. eto sta se desava sa pirat instalacijama :) 3. mozemo li nekako da se organizujemo pa da se na desava ovo pod 2 ? aquarius c_m_apro.zip
clipper.946 dvesic, -> #939, bpekic
>> ostavi poruku - stize :) Ostavljam poruku ! :))
clipper.947 pzivic, -> #943, bpekic
>Probao sam ONSIDE ali sam odmah odustao, SIDEWAYS takodje podesava >velicinu fontova i sve neophodne parametre ali je MNOGO jednostavniji >i mali pa se po potrebi moze startovati i iz aplikacije (mada ja to >ne radim). Poslao sam ti pa probaj. Zeleo bih da probam taj SIDEWAYS.COM, pa ako moze da se dobije, bio bih jako zahvalan.
clipper.948 neman, -> #945, aquarius
> 1. evo ga source c_m_apro.prg Hvala ti :) > 2. eto sta se desava sa pirat instalacijama :) Pa nije pirat nego prijatelj ;) a kako je i u ovom slucaju bio primenljiv postupak instalacije *zguraj_sve_u_isti_dir*, nisam ni trazio ponovno snimanje. Nisam cak morao ni da menjam oznake disketa iz SideKick-a. > 3. mozemo li nekako da se organizujemo pa da se na desava ovo pod 2 ? Sankcije ????
clipper.949 dcolak,
Evo problema za clipperaše bez knjiga o istom, rešenje se traži... Imamo ovakvu situaciju: INDEXNA DATOTEKA ┌─────────┬──────────┐ So, otvorim bazu i željeni index. │Vrednost │ RECNO() │ Krećem od TOP ka BOTTOM. Kako da znam │ │ │ do kog sam indexa po redu stigao. │11 │ 5 │ │22 │ 1 │ Tj. recimo upravo sam ispisao '22' i recno() │33 │ 3 │ mi je vratio '1'. Očigledno to nije prvi Index └─────────┴──────────┘ u nizu i pravi karambol u programu. Treba mi funkcija koja će mi nakon pristupa broju (slogu baze) '22' dati redni broj pointera na njega u indexnoj datoteci. Najkraće: Funkcija koja vraća RECNO() ali za INDEXE, so da znam koliko još imam do kraja il' početka (npr.) Nadam se da sam bio jasan :) P.S. Isključiti fore tipa: broj odakle krećeš etc. jer skačem iz TBrowseDB čitajući samo RECNO() a to ne govori koji je to INDEX (pointer u indexnoj datoteci) po redu... Sledge DAMMIR!
clipper.950 ikordic, -> #949, dcolak
RE: IndexNo () => Evo problema za clipperaše bez knjiga o istom, rešenje se traži... ? => Treba mi funkcija koja će mi nakon pristupa => broju (slogu baze) '22' dati redni broj => pointera na njega u indexnoj datoteci. Imaš par opcija. Najbolja je akrobacija sa kodnim blokovima koji se koriste pri skakanju sa sloga na slog (skipblock) u okviru TBrowse-a. Znači svaki put kada se pomera pokazivač, ne daš mu da to radi avtomacki, nego ubačiš svoje kodne blokove za prelazak na n-ti slog, prelazak na početak i kraj baze. U okviru tog bloka ostvaruješ i preračunavanje pozicije indeksa, obzirom da krećeš sa vrha tabele, ažuriranje brojača je trivijalno. Alternativno, možeš da pogledaš i SIx CDX/NSX biblioteku koja ima funkciju Sx_KeyNo () koja radi upravo to što ti treba. Negotivna varijanta je što moraš da koristiš pomenutu biblioteku koja je jedan od faktora koji izazivaju famozni VMIF. Takođe pogledaj i poruku 10.559 by goxx, tamo se nalazi opis neke osnovne rutine koja radi to. Takođe, misim da ja bulaja slao neko programče koje ima scroll bar, a on mora da radi na istom principu. => Isključiti fore tipa: broj odakle krećeš etc. jer skačem iz TBrowseDB => čitajući samo RECNO() a to ne govori koji je to INDEX (pointer u => indexnoj datoteci) po redu... Ovo baš nisam najbolje razumeo, 'ajde ponovo. Skačeš ODAKLE u GDE? Ako si već u TBrowse-u, opisana metoda ti ne pravi nikakve probleme. Ali ako treba da uletiš u TBrowse sa podatkom koji je redni broj u indeksnoj datoteci, stvar je malko komplikovanija ali ne i nerešiva.
clipper.951 dvesic, -> #950, ikordic
>> moras da koristis pomenutu biblioteku koja je jedan od faktora >> koji izazivaju famozni VMIF. Ne vise, ne vise .... Ziveo Six 2.0 ! :))) Hip hip, hura, hip hip hura .. :))
clipper.952 jolicm, -> #951, dvesic
Zdravo. >> Ziveo Six 2.0 ! :))) Ja sam preko nekih veza nabavio upgrade sa sixnsx 1.5 na 2.0, DVE datoteke sa upozorenjem da je to upgrade 1 i 3, a da mi fali druga potrebna datoteka. Dal mozes da mi napišeš koje datoteke imaš, pa da ti ja dojavim šta mi treba, Pa ako to nije veliko da mi pošalješ na mail. ??? :) :) :) Pozdrav
clipper.953 bulaja, -> #949, dcolak
│ Treba mi funkcija koja će mi nakon pristupa broju (slogu baze) │ '22' dati redni broj pointera na njega u indexnoj datoteci. └─── Najlakše je ukoliko koristiš SIx RDD, imaš njegovu funkciju SX_KeyNo() koja vraća baš to - poziciju (redni broj) trenutnog ključa unutar indeksa. Za standardni DBFNTX rešenje je u pisanju novih funkcija za skakanje po bazi umesto dbSkip(), dbGoTo(), dbGoTop() i dbGoBottom() koje će raditi isto to uz održavanje realnog broja ključa unutar indeksa (posle se te funkcije bez problema ubace u TBrowse).
clipper.954 neman, -> #951, dvesic
>>> moras da koristis pomenutu biblioteku koja je jedan od >>> faktora koji izazivaju famozni VMIF. > Ne vise, ne vise .... > Ziveo Six 2.0 ! :))) Koja verzija 2.00, 2.01.01 2.0x.0x ??? Pa oni su je pacovali za krace vreme vise puta nego bilo sta sto sam do sada video. Ona kobasica sa ispravljenim bagovima prilicno neprijatno deluje :( To je bio glavni razlog da NE ukljucujem tu verziju ( trenutno v 2.01.02 ). A ljudi koji unose podatke navikli su da svremena na vreme iskoci po neki VMIF, razbije im monotoniju ;) Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i da li neko ima iskustva sa takovm kombinacijom ?
clipper.955 st.pol,
╔═══════════════════════════════════════════════════════════════════╗ ║ Zavod za zdravstvenu zastitu studenata ║█ ║ Univerziteta u Beogradu ║█ ║ Proleterskih brigada 57 ║█ ║ BEOGRAD ║█ ║ ║█ ║ raspisuje ║█ ║ ║█ ║ K O N K U R S ║█ ║ ║█ ║ za 1 programera. ║█ ║ ║█ ║ Potrebna predznanja: Mrezno programiranje na Clipper-u, ║█ ║ Rad sa NOVELL NetWare 3.11. ║█ ║ ║█ ║ Pozeljna predznanja: Programiranje na C/C++, ║█ ║ Osnovi projektovanja IS ║█ ║ ║█ ║ Potrebna skola.....: Nepotrebna ;). Ali od toga zavisi ║█ ║ koeficijent, tj. plata ;(, znaci ║█ ║ pozeljan faks, bilo koji, ali ║█ ║ nije uslov. ║█ ║ ║█ ║ Posao je vrlo interesantan, radi se na projektovanju ║█ ║ Zdravstvenog Informacionog Sistema (ZIS), sve su jos ║█ ║ pocetni koraci, nije kasno da se ukljucite. Vlada RS ║█ ║ je odlucila da finansira, izgradnju jedinstvenog ZIS ║█ ║ Srbije, a da ustanove koje su najdalje otisle u raz- ║█ ║ voju vlastitih IS, budu referentne. Nasa ustanova je ║█ ║ jed(i)na ;) od tih, pa izvolite .... ║█ ║ ║█ ║ Sve prijave i dodatna obavestenja na mail st.pol ║█ ║ ║█ ║ Zvanican konkurs ce biti uskoro u Politici, ali ne ║█ ║ nameravam da primim nekoga ko ne prati SEZAM ;) ║█ ║ ║█ ╚═══════════════════════════════════════════════════════════════════╝█ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
clipper.956 d.petrovic, -> #925, bulaja
> TB:skipBlock := š đnSkipđ ; > Skip_Niz (nSkip, čnIndex, Len(aTabela)) ć Dozvoli ljudima da odluče O;) U commands.ch ide: #define AR_SKIPBLOCK(atBro, aIndex, ar, arLen); atBro:SkipBlock := šđn, sađ sa := aIndex,; IIF(aIndex + n > arLen, aIndex := arLen,; IIF(aIndex + n < 1, aIndex := 1, aIndex += n)), aIndex - sać a u program: AR_SKIPBLOCK(ar_Bro, aIndex, chArray, arLen) Ovo sam valjda modifikovao i zaboraavio sam zašto :)) atBro - Objekat aIndex - Indeks niza ar - Niz, ubij me da se setim zašto ga prenosim ;( arLen - Dužina (šta li će ona tu kad je niz već prisutan ?) :)
clipper.957 d.petrovic,
I am back :))
clipper.958 dcolak, -> #950, ikordic
│ baze. U okviru tog bloka ostvaruješ i preračunavanje pozicije indeksa, │ obzirom da krećeš sa vrha tabele, ažuriranje brojača je trivijalno. Da, upravo ovo sam i uradio... Well, neka ga tako :) Nego, još jedno pitanje... Kako da napravim senku ispod svojih BOX-ova? Al' onu lepu, što samo izmeni boje pozadine... Tj. da li postoji restscreen kome se može odabrati samo prenos karaktera ali ne i njihovih atributa (ja mu zadajem boju ispisa)? Sada mi je senka CRNA i neprovidna ;) Sledge DAMMIR!
clipper.959 rccomp, -> #958, dcolak
Probaj sa funkcijom Shadow() . Ima je na Sezamu u ClipTool.arj
clipper.960 mileusna, -> #958, dcolak
Evo ti dan .PRG za senku ispoBOX-a. Srecno! shadow.prg
clipper.961 mdrazic, -> #949, dcolak
> Treba mi funkcija koja će mi nakon pristupa > broju (slogu baze) '22' dati redni broj > pointera na njega u indexnoj datoteci. > > Najkraće: Funkcija koja vraća RECNO() ali za > INDEXE, so da znam koliko još imam do kraja > il' početka (npr.) Manite se ćorava posla ako nećete da prebrojavate zapise od početka do kraja. Jedino rešenje ti je SiX driver ili Comix (slično prethodnom) koji imaju podršku ovoj opciji. Međutim, i dalje problem ostaje položaj u tabeli pod filtrom, ili recimo samo ako imaš brisane zapise i set deleted on. Problem je u tome što u indeksnom fajlu nema informacija koji je zapis brisan a koji nije. Prelistaj temu od juna naovamo, čini mi se da je neko rekao kako takve funkcije iz SiX drajvera rade sporo. Ja ih ne koristim pa to ne mogu potvrditi. Milan
clipper.963 dvesic, -> #954, neman
>> Koja verzija 2.00, 2.01.01 2.0x.0x ??? 2.01.02 >> Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i da li >> neko ima iskustva sa takovm kombinacijom ? Ne, za to se obrati bulaji.
clipper.964 mileusna, -> #949, dcolak
??Kako saznati trenutni broj sloga u aktivnom indeksu?? Jedino rešenje koje ja znam zove se SIXCDX i njegova funkcija SX_KeyNo(). Avaj. Funkcija je vrlo spora, a naročito kada su u pitanju velike baze. Može da posluži ako ti njen rezultat nije često potreban.
clipper.965 cnenad,
Problemčina koju ne mogu da rešim, a tiče se BU_MENU. SET KEY... // vezivanje funkcijskih tastera za određene procedure WHILE lnIz<9 CLS IF lnIz1==1 Tabela() ENDIF WHILE .t. // deo koda za iscrtavanje ekrana @22,1 PROMPT " Unos " HOTKEY 'U' MESSAGE "UNOS OSTALIH PODATAKA" // ovde dolazi još 6 linija za druge izbore CLEAR TYPEAHEAD MENU TO lnMizb // lnMizb deklarisan kao LOCAL numerik. DO CASE CASE lnMizb==1 Prg1() // case za ostale linije ENDCASE END WHILE END WHILE RETURN Nakon aktiviranja programa prvo ide procedura TABELA koja je običan TBROWSE ali iz nje pritiskom na funkcijsku dirku F5 mogu ući u proceduru u kojoj se dodaju novi podaci UNOS() Ako izađem iz TBROWSE (Tabela()) sa ESC, i izaberem prvi izbor iz MENU TO, aktiviram PRG1() za unos nekih drugih podataka koji nemaju veze sa onim iz Tabela() -> F5. Kao proveru ispravnosti unosa podataka u PRG1() nakon GET/READ opet sam stavio petlju WHILE .t. i izbor DA, NE realizovan preko MENU TO odnosno BU_MENU ali pošto koristim BUMENU.CH radim sa 'standardnim' naredbama. Sve se lepo u toj proceduri završi kako treba, vratim se u petlju u glavni program, na F5 aktiviram TABELA(), u njemu opet na F5 proceduru UNOS() (unos podataka), unesem podatke. Opet je tu nakon unosa provera sa MENU TO. Kada ispiše pitanje 'DA' 'NE' u toj proceduri UNOS() i pokrenem strelice levo desno dobijam ispod tog izbora kompletan izbor koji mi se nudi u glavnoj proceduri (dakle onaj koji sam gore naveo). Ako ne izabrem ništa, sa ESC se vraćam u glavnu proceduru i kad pokušam da mrdnem osvetljenje izbora sačeka me poruka: BASE/1132 BOUND ERROR: ARRAY ACCESS Called from Bu_Menuto(236) Called from Test(182) // test je inače moja glavna procedura a linija 182 je ona gde stoji MENU TO lnMizb U nekim slučajevima je dodatno ispisivao i PROMPT(261) ?!?!? Napominjem da je u svakoj proceduri u kojoj je iskorišćeno MENU TO, memorijska promenljiva deklarisana kao LOCAL numerik sa potpuno različitim imenom. Šta se ovo dođavola događa i kako ovo rešiti ? BTW, da li se nekako može izbeći da MESSAGE.. CENTER seče eventualno RAM iscrtan sa n,n1 to nn,nn1 ? Ajde kad već ovoliko napisah da dodam i ovo :) Primer pomoću kojeg Spence rešava problem kod GET/VALID unosa koji je Nenad stavio u zadnji Savetnik ili ima BUG ili je to Feauture :) On normalno radi ono za šta je namenjen jer nakon pritiska na PgUP ili Down na nekom GET polju ako je korektno uneto skače na prvo koje nije kako treba popunjeno. E sad, iz tog polja čak i kad se unese korektna vrednost koju ispituje VALID ne može se strelicama na gore vratiti na prethodna polja nego je moguće ići samo na dole nakon unosa korektne vrednosti i to naravno uz pritisak na taster ENTER. Ima li rešenja za ovo ?
clipper.966 dzoric, -> #955, st.pol
> pocetni koraci, nije kasno da se ukljucite. Vlada RS > je odlucila da finansira, izgradnju jedinstvenog ZIS > Srbije, ... Ako je 2,000 < PLATA < 10,000 eto nas :)
clipper.967 kuki, -> #966, dzoric
> Ako je 2,000 < PLATA < 10,000 eto nas :) a ako je PLATA > 10000 .... pa naučiću kliper za te pare :))))
clipper.968 dpredovic, -> #963, dvesic
>>> Koja verzija 2.00, 2.01.01 2.0x.0x ??? > > 2.01.02 žoveče, odakle ti to? Dal si dobio tako, ili imaš onaj patch 01/08 -> 11/08? Daj da uradimo nešto u svakom slučaju ;), ubi me ono što su "popravili" rad sa memo poljima...
clipper.969 dpredovic, -> #954, neman
> Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i da li > neko ima iskustva sa takovm kombinacijom ? Da, ide sasvim lepo, ne tangiraju se ni 2%.
clipper.970 d.petrovic, -> #950, ikordic
> Imaš par opcija. Najbolja je akrobacija sa kodnim blokovima > koji se koriste pri skakanju sa sloga na slog (skipblock) u > okviru TBrowse-a. Znači svaki put kada se pomera pokazivač, ne > daš mu da to radi avtomacki, nego ubačiš Ne znam zašta njemu treba, ali znam da to meni ne pomaže :( Elem, predefinišem ja skip, ali procedura movekey() koja stoji na otherwise u petlji za tbrowse osim što skipuje može i da potraži "po slovu", ako je takav indeks i ako je pritisnuto slovo. E, kad Seek uradi svoje možeš da zaboraviš di si bio :(
clipper.971 d.petrovic,
Treba mi funkcija u Cl 5.01 koja vraća ima li i koliko ima slobodne XMS i EMS memorije.
clipper.972 dcolak, -> #961, mdrazic
│ Prelistaj temu od juna naovamo, čini mi se da je neko rekao kako │ takve funkcije iz SiX drajvera rade sporo. Ja ih ne koristim pa to │ ne mogu potvrditi. Prvo da se zahvalim svim ljudima na pomoći a onda da nastavim ;) Elem, koristim Clipper 5.01 i nije mi baš najčistije to sa SiX drajverom. Tj. znam da 5.2 ima opciju biranja različitih indexa (sem ntx) no nisam primetio da to ima i 5.0.. So, kako sam ukapirao ostaje mi da koristim neku biblioteku. Koje vi koristite u svakodnevnom radu? Meni nedostaje meni sistem. Sve što sam video ovde (RSOFT) na Sezamu ne zadovoljava :( Dal' da se bacim na izmišljanje tople vode (meniji)? Sledge DAMMIR!
clipper.973 dcolak, -> #964, mileusna
│ Avaj. Funkcija je vrlo spora, a naročito kada su u pitanju velike baze. │ Može da posluži ako ti njen rezultat nije često potreban. Biće poprilično velike... Nego imam još jedan problem. Kada koristim SET FILTER često mi javi error : TOO MANY LABELS. Tj. ide nešto u stilu: set filter to upper(ime) = ime .and upper(prezime) = prezime itd itd.. Očigledno "svari" samo određeni broj stavki u postavljanju filtera. Šta da radim kad bih imao mnogo više polja nego sada? Postoji li u Clipperu nešto kao LIKE u SQL-u ili čemu već? Tj. da uporedi ali "logično?" Sledge DAMMIR!
clipper.974 ikordic, -> #951, dvesic
RE: => Ziveo Six 2.0 ! :))) Priznaj, ovo si namerno napisao, samo da bi milion paćenika udarilo reply na tvoju poruku ;) Ozbiljno, jel' to 101% sigurno? Hoću konačno da pređem na Clipper 5.2 (taman kad izlazi 5.3 :)) i neki SIx, i zanime me neka kombinacija koja stabilno radi. Ako ponovo počnu veselja, ja ostajem na 5.01 a vi se zamajavajte :) Ondak ću opet da probam za pola godine i tako u krug ... :)
clipper.975 ikordic, -> #958, dcolak
RE: Shadow => Kako da napravim senku ispod svojih BOX-ova? Al' onu lepu, što samo => izmeni boje pozadine... => Tj. da li postoji restscreen kome se može odabrati samo prenos => karaktera ali ne i njihovih atributa (ja mu zadajem boju ispisa)? Pa, sa SaveScreen () mu otmeš ekran u neki string. Svaki prvi (neparni) karakter u stringu je znak a svaki drugi (parni) predstavlja atribut tog znaka. Znači, kad pročitaš ekran, napraviš neku petlju u kojoj menjaš postojeći atribut nekim drugim i tako postizavaš senku. Naravno, menjanje atributa sprovodi samo tamo gde treba da se pojavi senka, zbog uštede vremena. Realizacija sopstvenih funkcija je jednostavna.
clipper.976 ikordic, -> #961, mdrazic
RE: IndexNo () => Manite se ćorava posla ako nećete da prebrojavate zapise od početka => do kraja. => Jedino rešenje ti je SiX driver ili Comix (slično prethodnom) koji => imaju podršku ovoj opciji. => Međutim, i dalje problem ostaje položaj u tabeli pod filtrom, ili => recimo samo ako imaš brisane zapise i set deleted on. Problem je u Skačeš sebi u usta :) ipak je jedino rešenje pisanje sopstvenih funkcija za mrdanje po bazi, koje se mogu ukorporirati u kodne blokove u okviru TBrowse-a. Oslanjanje na eksterne biblioteke uglavnom donosi više problema no koristi, pomenuto usporenje je samo jedan od njih. Posle par traumatoznih iskustava, sve više razumem nbatocanina po pitanju odbojnosti korišćenja stranjskih tela u sopstvenim aplikacijama.
clipper.978 ikordic, -> #965, cnenad
RE: Born to code in Clipper ;))) => Problemčina koju ne mogu da rešim, a tiče se BU_MENU. Ja i inače slabo kapiram, al' tvoja poruka je totalna destrukcija :) Reč jednu nisam shvatio, a pročitao sam opis problema par puta i gledao u ono čudo od listinga ;) žisto da poruka ne stoji bez veze, dva kratka saveta: * Koristi malo više razmaknicu pri pisanju programa. Primeti koliko je lepše napisati: IF nIzbor == 1 .AND. lIzlaz == .F. Tabela () ELSE Msg ( "Kraj rada ... ", RED ) END IF nego IF Izb==1.AND.Izl==.F. Tabela() ELSE Msg("Kraj rada...",RED) ENDIF Osim što je lepše, daleko je jednostavnije uočavati tako izdvojene logičke celine u okviru naredbe, čitati i održavati program. Ja sam se jednom davno posle par dana mučenja navikao i NIKAD mi se nije desilo da mi treba neki SNAP ili PR za ulepšavanje sorseva. I davaj bre malo duža imena promenljvama :) * SetKey () izbegavati. Apsolutno ne postoji situacija u kojoj se ova naredba/funkcija ne može zameniti sopstvenom, daleko fleksibilnijom opcijom. žak i da je tako, pokušaj da situaciju realizuješ preko neke CASE petlje (event programming - tako beše?) kao kod TBrowse-a. Na taj način će ti slabo zatrebati pomenuti anahronizam. A i bolje se pripremaš za WinMain () ... :)
clipper.979 d.petrovic, -> #965, cnenad
> Problemčina koju ne mogu da rešim, a tiče se BU_MENU. Otkud ja sad da znam šta je u tim linijama bulajinog menija (ja koristim ver 1.2 izmenjenu po želji O:)) ) Prevedi svoj prg sa "/p" pa vidi kako je to složio pretrpocesor i prati cld-om
clipper.980 dvesic, -> #968, dpredovic
>> Covece, odakle ti to? Dal si dobio tako, ili imas onaj patch >> 01/08 -> 11/08? Daj da uradimo nesto u svakom slucaju ;), ubi >> me ono sto su Patch #1 (Six 2.01.00 -> Six 2.01.01) int201-1.zip
clipper.981 dvesic, -> #968, dpredovic
Patch #2 (Six 2.01.01 -> Six 2.01.02) int201-2.zip
clipper.982 bulaja, -> #961, mdrazic
│Međutim, i dalje problem ostaje položaj u tabeli pod filtrom, ili │recimo samo ako imaš brisane zapise i set deleted on. Problem je u │tome što u indeksnom fajlu nema informacija koji je zapis brisan a │koji nije. └─── Za filter mora da se održava trenutni record pointer, pošto SIx v1.5 funkcija koja bi to trebala da radi - ne radi :) (ne znam da li je ispravljeno u v2.0). Ako se ne varam, u indeksni fajl ne bi trebalo da ulaze obrisani slogovi (ako je setovano Set Deleted On). Inače dobra je praksa (tako bar kažu u SIx dokumentaciji:) da se (kod CDX ili NSX indeksa) uvek drži jedan tag indeksiran po Deleted(). Njega koristi Mach SIx za optimizaciju, tako da i kod Set Deleted On ne dolazi do usporenja prilikom kretanja po bazi.
clipper.983 bulaja, -> #963, dvesic
││ Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i da li ││ neko ima iskustva sa takovm kombinacijom ? │└─── │ Ne, za to se obrati bulaji. └─── Ja još nisam koristio SIx v2.0 (shame on me:), ali usudiću se da ga ubacim umesto v1.5 u neke aplikacije koje koriste i FUNCky, pa ćemo videti :).
clipper.984 bulaja, -> #965, cnenad
│Problemčina koju ne mogu da rešim, a tiče se BU_MENU. │... │BASE/1132 BOUND ERROR: ARRAY ACCESS │Called from Bu_Menuto(236) └─── Pretpostavljam da je u pitanju BuMenu v1.4 i da nisi ništa dirao u osnovnom source-u biblioteke. Onda je linija 236 sledeća: IF EVAL (bUpper, aMenuHotKey[i]) == EVAL (bUpper, CHR(kkk)) odnosno to je deo gde se ispituje da li je pritisnut taster neki od hot key-ova. Bound Error Array Access grešku može javiti jedino pristup nizu (odnosno pokušaj pristupa:) aMenuHotKey[] van njegovog opsega. Pošto se <i> vrti od jedan do <nMax> koji predstavlja broj promptova (odnosno veličinu niza u koji se oni smeštaju), onda je jako čudno kako je moguće da se ovakva greška javi - jedino ako je dimenzija niza promenjena od trenutka izračunavanja <nMax> (a on se izračunava odmah na početku funkcije, pre ulaska u glavnu petlju). Još je čudnije to što se greška javlja prilikom pokušaja "mrdanja osvetljenja izbora" :), pošto se pre mesta greške nalazi kod koji procesira sve tastere za kretanje (kurzori, Home, End, PgUp, PgDn, Enter) i Esc, tako da se prilikom "mrdanja" taj deo i ne izvršava (nalazi se u OTHERWISE delu glavnog CASE iskaza. Takodje se pre toga i izvrše sve eventualne Set Key procedure. Ono što mi se čini da bi mogao biti uzrok problema (i pored svih misterija:) je da se još jedan bu_MenuTo() (odnosno standardni MENU TO korišćen sa BuMenu.ch) poziva iz neke od procedura koje su nakačene na SET KEY. Pošto BuMenu trpa sve u STATIC promenljive (biće skoro verzija sa objektima:), znači da se ne može rekurzivno pozivati pre nego što se završi prethodna instanca glavne funkcije (bu_MenuTo()) i resetuju STATIC-i (a to se radi prilikom svakog izlaska iz bu_MenuTo() odnosno izlaza iz menija na bilo koji način). Dakle proveri da li se BuMenu poziva rekurzivno iz neke od SET KEY procedura, pa ako to nije problem (a meni se sve čini da ipak jeste:) videćemo štaćemo dalje.
clipper.985 bulaja, -> #972, dcolak
│ So, kako sam ukapirao ostaje mi da koristim neku biblioteku. Koje │ vi koristite u svakodnevnom radu? Meni nedostaje meni sistem. Sve │ što sam video ovde (RSOFT) na Sezamu ne zadovoljava :( └─── Imaš BuMenu kao pristojnu O:) zamenu za standardni MENU TO sistem (\ibmpc\clipper\bumenu14.zip). Ako misliš na kompletan dobar sistem pull-down menija, onda to nije baš lako pronaći (iako to nije neki naročiti programski problem). Ja imam lep :) poluzavršeni sistem pull-down menija koji koristim za internu upotrebu, ali već godinu dana nikako da stignem da ga upristojim za javnost. Iskreno, poslednjih nekoliko meseci čekam da vidim šta će CA da uradi, pošto je jedan od najavljenih noviteta u Clipper-u 5.3 (trebao bi da izadje do kraja godine) objektno orijentisan sistem menija.
clipper.986 dcolak, -> #970, d.petrovic
│ Elem, predefinišem ja skip, ali procedura movekey() koja stoji na │ otherwise u petlji za tbrowse osim što skipuje može i da potraži │ "po slovu", ako je takav indeks i ako je pritisnuto slovo. E, kad │ Seek uradi svoje možeš da zaboraviš di si bio :( Isti problem. Any Solution? Nekako mi je bezvezno da nema rešenja :) Osim onog SIX ili kako već? :) Jel' to biblioteka? Sledge DAMMIR!
clipper.987 cnenad, -> #965, cnenad
ŁŁŁ Problemčina koju ne mogu da rešim, a tiče se BU_MENU. Problemčina rešena :))) Caka je bila u glupo postavljenoj konstrukciji programa. Naime, u glavnoj proc. pojavljuje se prvi put MENU TO. Iz tog stanja čekanja stavio sam da na funkcijsku dirku poziva TBROWSE, a iz njega opet na istu dirku neku levu proceduru u kojoj se koristi opet MENU TO ali sa drugom mem. promenljivom. E sad, on kad natrči na MENU TO lnMiz, pokaže onaj MENU TO lnMizb iz glavne procedure. Kad sam programu uveo sankcije sve je proradilo. :)
clipper.988 dcolak, -> #985, bulaja
│ nekoliko meseci čekam da vidim šta će CA da uradi, pošto je jedan od │ najavljenih noviteta u Clipper-u 5.3 (trebao bi da izadje do kraja │ godine) objektno orijentisan sistem menija. Da, nikako da naletim na neki kompletan PullDownMenu kao u FoxPro... Još uvek se lomim da li da pređem na FoxPro... Nervira me to što nemam NG za FoxPro ;)) Sledge DAMMIR!
clipper.989 neman, -> #963, dvesic
>>> Koja verzija 2.00, 2.01.01 2.0x.0x ??? > > 2.01.02 Pa da, greska ;) >>> Inace, da li koristis FUNCKY II biblioteku uz SIX 2, i >>> da li neko ima iskustva sa takovm kombinacijom ? > > Ne, za to se obrati bulaji. bulajo, prozvan si ;)
clipper.990 dpredovic, -> #954, neman
> sada video. Ona kobasica sa ispravljenim bagovima prilicno > neprijatno deluje :( To je bio glavni razlog da NE ukljucujem > tu verziju ( trenutno A one kobasice uz svaku novu podverzijicu clippera? Da čovek počupa kosu kad vidi da je 5.2c->5.2d imao _samo_, ako me sećanje ne vara, 83 izmene.
clipper.991 ikordic, -> #970, d.petrovic
RE: SKIP => Elem, predefinišem ja skip, ali procedura movekey() koja stoji na => otherwise u petlji za tbrowse osim što skipuje može i da potraži => "po slovu", ako je takav indeks i ako je pritisnuto slovo. E, kad => Seek uradi svoje možeš da zaboraviš di si bio :( Pa, može i ovo da se odradi programski, ali jedino što mi pada na pamet trenutno je gruba sila. Sad ću ozbiljno da se zamislim, pa ako nešto ispadne, će javimo.
clipper.992 ikordic, -> #973, dcolak
RE: SET FILTER => Biće poprilično velike... Nego imam još jedan problem. Kada koristim => SET FILTER često mi javi error : TOO MANY LABELS. Tj. ide nešto u Ne koristi SET FILTER :) => Postoji li u Clipperu nešto kao LIKE u SQL-u ili čemu već? Tj. da => uporedi ali "logično?" Ne razmem. Šta znači "logično"?
clipper.993 ikordic, -> #971, d.petrovic
RE: Memory () => Treba mi funkcija u Cl 5.01 koja vraća ima li i koliko ima slobodne => XMS i EMS memorije. Za EMS možeš sa Memory ( 4 ), a XMS, koliko znam, Clipper ne koristi.
clipper.994 ikordic, -> #972, dcolak
RE: UI => vi koristite u svakodnevnom radu? Meni nedostaje meni sistem. Sve => što sam video ovde (RSOFT) na Sezamu ne zadovoljava :( Jedina koja ima zadovoljavajući odnos uložen trud/performasne je omenu.prg koji ide uz Clipper 5.01, normalno tek nakon žešćeg prepravljanja. Sve ostalo je, meni barem, svetlosne godine daleko od komfora, kako po pitanju korisničkog aspekta, tako i po pitanju programiranja. Nadalje, i ako nađeš neki dobar meni-podsistem, ne zaboravi da tu treba da dođu i radio-dugmići, check-boxovi, alerti itd., daklem da sve bude urađeno kako treba, jer a) različite datoteke ne surađuju kako treba i b) ne dobivaš sors uz njih. Negde daleko u belom svetu postoji lib koji je u potpunosti Win kompatibilan, daklem izgleda i ima sve one fazone kao i NU, al' ne znam kako se zove. Alternativno, probaj Funcky, on ima neke grafiče menije u tekst modu.
clipper.995 hercog, -> #988, dcolak
> Još uvek se lomim da li da pređem na FoxPro... Nervira me to što nemam > NG za FoxPro ;)) U foxprou imaš njegov help ;) Sale
clipper.996 dvesic, -> #974, ikordic
>> Priznaj, ovo si namerno napisao, samo da bi milion pacenika >> udarilo reply na tvoju poruku ;) Priznajem :) >> Ozbiljno, jel' to 101% sigurno? Pa sad, vec dva meseca svi moji programi (cirka 10 komada) rade sa ovom kombinacijom i nije bilo (kuc, kuc, kuc) problema. VMIF-ovi su se jedino (istina, vrlo retko) desavali prilikom debagovanja nekog veceg programa ( >= 700 Kb) eksternim Clipper dibagerom. Od eksternih biblioteka koristim NovLib2 (podrska Novell-u) i prosirenje (BlxClp52.Lib) Blinkera za rad u protected modu. Svi programi su linkovani sa Blinker-om 3.01 u svim ukusima : Real, Dual, Extended (u zavisnosti od platforme/mreza/stanica). Drajveri : SixCdx i SixNtx. Za sada nisam radio sa SixNsx RDD-om. Toliko.
clipper.997 dkaralic, -> #967, kuki
> a ako je PLATA > 10000 .... > pa naučiću kliper za te pare :)))) a ako je PLATA ¸ 300 .AND. ZNAMCLIPPER == .T. da li onda ima zainteresovanih
clipper.998 d.petrovic, -> #991, ikordic
> Pa, može i ovo da se odradi programski, ali jedino što mi pada > na pamet trenutno je gruba sila. Sad ću ozbiljno da se > zamislim, pa ako nešto ispadne, će javimo. Gruba sila je BAŠ gruba: Zapamtiš RecNo(), Go Top i skipuješ dok se ne vratiš. A baza ima 485324 slogova i ti se nalazio kod "Zurić Zaharije" :( Doduše može se i videti prvo slovo u stringu, može... Zaboravi, osim da praviš svoj indeks (još jedan .dbf)
clipper.999 d.petrovic, -> #953, bulaja
> indeksa. Za standardni DBFNTX rešenje je u pisanju novih > funkcija za skakanje po bazi umesto dbSkip(), dbGoTo(), > dbGoTop() i dbGoBottom() Ovo mi se sviđa, samo, šta će ti ove poslednje dve ?
clipper.1000 d.petrovic, -> #973, dcolak
> Biće poprilično velike... Nego imam još jedan problem. Kada > koristim SET FILTER često mi javi error : TOO MANY LABELS. Tj. > ide nešto u stilu: Ružna navika. Prestani da koristiš filter.
clipper.1001 d.petrovic, -> #978, ikordic
> * SetKey () izbegavati. Apsolutno ne postoji situacija u > * kojoj se ova Još bolje, ko koristi svoju funkciju za skeniranje tastature može da ubaci u nju svoju za setkey().
clipper.1002 goxx, -> #998, d.petrovic
Nema me na Sezamu par dana, pa me zatrpaše silne poruke. ■ > Pa, može i ovo da se odradi programski, ali jedino što mi pada ■ > na pamet trenutno je gruba sila. Sad ću ozbiljno da se ■... ■ Gruba sila je BAŠ gruba: ■ Zapamtiš RecNo(), Go Top i skipuješ dok se ne vratiš. A baza ima 485324 ■ slogova i ti se nalazio kod "Zurić Zaharije" :( ■ ... ■ Zaboravi, osim da praviš svoj indeks (još jedan .dbf) Pre nekog vremena sam nesto ovde pisao na ovu temu. Ja imam 286 na 12 MHZ i sistem rada sa prebrojavanjem slogova ladno prolazi na njemu čak i sa ogromnim datotekama. Ograničenje postoji sa brisanim slogovima i sa filterom. Medjutim to jednostavno zaobilazim u samom projektu baze podataka tako da nikad i ne koristim fizičko brisanje ili filter. Možda će izaći članak o celoj ovoj temi u Računarima, ali primer je obiman tako da ne verujem da će biti najjasniji (ako uopšte izađe :). Celovit primer će biti na Sezamu (ili u RSOFT ili ako ne izađe poslaću ga ovde). Goran
clipper.1003 mdrazic, -> #976, ikordic
> => Međutim, i dalje problem ostaje položaj u tabeli pod filtrom, ili > => recimo samo ako imaš brisane zapise i set deleted on. Problem je u > > Skačeš sebi u usta :) ipak je jedino rešenje pisanje sopstvenih funkcija > za mrdanje po bazi, koje se mogu ukorporirati u kodne blokove u okviru Pa čovek je i tražio analog recno() ali pod indeksom. Ni sa recno() nemaš pravu informaciju za slučaj filtra i brisanih zapisa. Flag za brisanje je u tabeli, ne u indeksu, a filter koji ti postaviš nije nigde na disku registrovan, pa ne možeš dobiti ažurnu informaciju o 'metrici' osim da neposredno sam brojiš. Možeš zapakovati to u kodne blokove i ubrzati posao, ali i dalje je neupotrebljivo za veće tabele. Milan
clipper.1004 mdrazic, -> #973, dcolak
> set filter to upper(ime) = ime .and upper(prezime) = prezime itd itd.. > > Očigledno "svari" samo određeni broj stavki u postavljanju filtera. > Šta da radim kad bih imao mnogo više polja nego sada? Napravi funkciju ISUPPERALL( cString ) --> lJesteIliNije koja vraća .t. ako su sva slova velika, .f. inače pa set filter to IsUpperAll(ime+prezime+...) Milan
clipper.1005 bulaja, -> #978, ikordic
│ A i bolje se pripremaš za WinMain () ... :) └─── Tačnije METHOD Start() CLASS App :).
clipper.1006 bulaja, -> #999, d.petrovic
││Za standardni DBFNTX rešenje je u pisanju novih funkcija za skakanje ││po bazi umesto dbSkip(), dbGoTo(), dbGoTop() i dbGoBottom() │└─── │Ovo mi se sviđa, samo, šta će ti ove poslednje dve ? └─── Pa da resetuješ brojač kad skočiš na početak, odnosno da proračunaš ukupan broj slogova koji u indeksu kad skačeš na kraj. Obe funkcije su potrebne i za ubacivanje u TBrowse metode za skok na početak/kraj baze.
clipper.1007 bulaja,
┌────────────┐ │Clipper News│ └────────────┘ SuccessWare Univeils Replacable Data Driver for CA-Visual Objects Successware, developers of the SIx Driver and SIxBase, will univeil their newest high-performance Replaceable Data Driver (RDD) for CA-Visual Objects at CA TechniCon in New Orleans. The new CA-VO RDD enables applications developers to directly access and create FoxPro tables, indexes and memo fields from within their Windows/VO applications without the performance-burden of the ODBCC layer. SuccessWare says future versions will add compatibility and support for additional database formats, including HiPer-SIx (TM) (NSX/SMT) and dBASE IV (TM) (MDX/DBT). Further news from SuccessWare includes turning their Clipper RDD, HiPer-SIx, into freeware. HiPer-SIx indexes and memos are supported by most reporting/code generation systems (including R&R) and will soon be supported in client/server via Extended System's Advantage Xbase Server NLM and in Windows via SuccessWare's SIxBase product line. Rumor has it that HiPer-SIx will be included with CA-Clipper 5.3. SuccessWare, 800-683-1657, (909) 699-9657, fax (909) 695-5679.
clipper.1008 bulaja,
┌────────────┐ │Clipper News│ └────────────┘ Grumpfish Releases Dual Platform and Reporting Tools Clip-4-DOS is a linkable CA-Clipper library that allows developers to create event-driven mouseable DOS applications. It's compatible with the Windows API and Clip-4-Win, Grumpfish's library for creating Windows based Clipper applications. Grupfish says applications will port easily to CA-Visual Objects. Grumpfish Reporter 2.0, an XBase query/reporting tool, can be linked directly into applications without additional memory requirements. Clip-4-DOS iz US$ 249, and Reporter 2.0 is US$ 299. Goth ship with printed and electronic documentation, source code, and royality-free integration license. Grumpfish, Inc., (503) 588-0737, fax (503) 588-1980.
clipper.1009 dpredovic, -> #980, dvesic
> Patch #1 (Six 2.01.00 -> Six 2.01.01) > Ne radi posao, ovaj je 11/8 -> 18/8, meni treba 1/8 -> 11/8 :((
clipper.1010 dcolak, -> #995, hercog
│> Još uvek se lomim da li da pređem na FoxPro... Nervira me to što nemam │> NG za FoxPro ;)) │ │ U foxprou imaš njegov help ;) Gori Help u životu nisam video. Nit context sensitive (ako je to cs onda sam ja tramvaj), nit su lepo raspoređene komande. Dok pronađem šta mi treba počupam svu kosu. Užas blago rečeno. BTW, ko je lud da piše programe u Fox-ovom IDE-u? :)) Sledge DAMMIR!
clipper.1011 dcolak, -> #992, ikordic
│=> Biće poprilično velike... Nego imam još jedan problem. Kada koristim │=> SET FILTER često mi javi error : TOO MANY LABELS. Tj. ide nešto u │ │ Ne koristi SET FILTER :) Hm, al' kako onda da TBrowsujem kroz datoteku sa zadatim filterom ako ne koristim SET FILTER... Opet kroz Skipper-a da pravim svoje rutine? │=> Postoji li u Clipperu nešto kao LIKE u SQL-u ili čemu već? Tj. da │=> uporedi ali "logično?" │ │ Ne razmem. Šta znači "logično"? Hm, recimo "Damir" .like. "amir" == .T. ;) Sledge DAMMIR!
clipper.1012 dcolak, -> #1000, d.petrovic
│> Biće poprilično velike... Nego imam još jedan problem. Kada │> koristim SET FILTER često mi javi error : TOO MANY LABELS. Tj. │> ide nešto u stilu: │ │ Ružna navika. Prestani da koristiš filter. Kako pronađene podatke da browsujem? Sa Seek skočim na prvi, pa onda continue za sledeći i tako u beskraj. So, ovo moram da implementiram u TBrowse? Kako će TBrowse znati koliko ima pronađenih recorda i na osnovu toga napraviti tabelu? BTW, pravljenje nove datoteke (swap ;)) sa pronađenim recordima mi je suviše sporo... Hm, možda se sa VIEW nešto da srediti (prvo što mi pada na pamet)? Sledge DAMMIR!
clipper.1013 nbatocanin, -> #975, ikordic
> RE: Shadow > (parni) predstavlja atribut tog znaka. Znači, kad pročitaš > ekran, napraviš neku petlju u kojoj menjaš postojeći > atribut nekim drugim i tako postizavaš senku. Bolji štos je sa Transform i PICTURE kombinacijom: Transform (cScreen, Replicate("X" + Chr(?), Len(cScreen)/2) Ovo svaki drugi simbol zameni sa atributom za crno i to je to.
clipper.1014 nbatocanin, -> #978, ikordic
> A i bolje se pripremaš za WinMain () ... :) Start(), u stvari :) A može se i promeniti :)
clipper.1015 jovca.car, -> #988, dcolak
/* Još uvek se lomim da li da pređem na FoxPro... Nervira me to što nemam /* NG za FoxPro ;)) A šta fali njegovom helpu?
clipper.1016 ikordic, -> #997, dkaralic
RE: Guns for hire => a ako je PLATA ¸ 300 .AND. ZNAMCLIPPER == .T. => da li onda ima zainteresovanih Cccc, ... nisi u trendu! Treba: IF nPlata >= 300 .AND. lZnamClipper == .T. pa onda sledi i: IF nValuta == "DEM" Maybe () ELSE NoWay () ENDIF ;)
clipper.1017 ikordic, -> #998, d.petrovic
RE: IndexNo () => Gruba sila je BAŠ gruba: => Zapamtiš RecNo(), Go Top i skipuješ dok se ne vratiš. A baza ima => 485324 Sedim ja tako i mislim :) i jedino što mi pade na pamet est sledeće: naime, kada TBrowse započinje svoj život i radni vek, on protrči kroz jedan deo baze koristeći svoj skipblok, ne bi li skrpio dovoljno podataka da nešto i prikaže u tabeli. Normalno, umesto tog skipbloka se može podmetnuti sopstveni, koji će protrčati kroz celu bazu, u tabelu skembati samo slogove koji mi se sviđaju i pritom sve njih izbrojati. Tako dobivamo nLast, koji je najveći problem. Ovo i ne mora da se dešava u okviru TBrowse-a, moglo bi da se načini na početku rada sa programom. Pošto se dodavanje/brisanje/izmena slogova vrši pod neposrednom kontrolom programa, ovakav brojač je jednostavno održavati. Prednost ovoga jeste da se sve one gadne rabote (filteri, indeksi, brisanja, ...) mogu obraditi bez da se potežu neke spore rutine i neke leve biblioteke. Ja ovoliko smislio, gde su rupe u svemu ovome? Znam da ih ima al' danas beše naporan dan ... Posebno me zanima mišljenje Mister Koudbloka ... :)
clipper.1018 dcolak, -> #1004, mdrazic
│ ISUPPERALL( cString ) --> lJesteIliNije │ koja vraća .t. ako su sva slova velika, .f. inače pa │ set filter to IsUpperAll(ime+prezime+...) My Mistake ;) Upoređujem promenjljive sa poljima u .DBF. So, to otpada... Sledge DAMMIR!
clipper.1019 mdrazic, -> #982, bulaja
> Ako se ne varam, u indeksni fajl ne bi trebalo da ulaze obrisani slogovi > (ako je setovano Set Deleted On). Inače dobra je praksa (tako bar kažu u idu, idu... (a i što ne bi kada index ne zna da li ti radiš trenutno sa set deleted on ili off). > SIx dokumentaciji:) da se (kod CDX ili NSX indeksa) uvek drži jedan tag > indeksiran po Deleted(). Njega koristi Mach SIx za optimizaciju, tako da > i kod Set Deleted On ne dolazi do usporenja prilikom kretanja po bazi. Bolje ti je da ubaciš u redovne indekse (tagove) 'for .not.deleted()', a ako želiš reciklažu (i samo za to i za ne daj bože neku restauraciju) stavi i indeks (tag) po deleted() ključu ili još bolje po glavnom ključu ali 'for deleted()'. Milan
clipper.1020 mdrazic, -> #996, dvesic
> ovom kombinacijom i nije bilo (kuc, kuc, kuc) problema. VMIF-ovi su > se jedino (istina, vrlo retko) desavali prilikom debagovanja nekog > veceg programa ( >= 700 Kb) eksternim Clipper dibagerom. To ti je verovatno dužina EXE fajla. Koliko memorije traži program da bi radio (šta javlja linker na kraju) ? Da li ima šanse da moj paket od 1.4MB EXE sa 380-420K prijavljene potrebne memorije radi sa SiX-om? Milan
clipper.1021 mileusna, -> #1012, dcolak
>> Kako pronađene podatke da browsujem? Sa Seek skočim na prvi, pa onda >> continue za sledeći i tako u beskraj. So, ovo moram da implementiram >> u TBrowse? Kako će TBrowse znati koliko ima pronađenih recorda i na >> osnovu toga napraviti tabelu? Kao prvo nije mi jasno kakve veze SEEK ima sa CONTINUE. CONTINUE nastavlja pretraživanje koje je započela komanda LOCATE, dok SEEK pretražuje isključivo indeksiranu tabelu i to od početka. Ili sam te ja pogrešno shvatio, ili si ti pogrešno objasnio. Ukoliko ti je tabela indeksirana po polju po kom praviš filter, na primer : SET FILTER TO fcPseudo="MILEUSNA", a tabela ti je indeksirana po polju fcPseudo, onda je samo potrebno napisati nove kodne blokove koji će si pozivati prilikom izvršavanja metoda: goTopBlock - Pozicionira pokazivač na vrh tj. blok izvršava DBSEEK(cKljuc) goBottomBlock - Pozicionira se na kraj. Funkciju koju blok poziva treba da izgleda ovako : LOCAL lSoftSeek:=SET( _SET_SOFTSEEK , .T. ) SEEK SUBSTR( cKljuc,1,LEN(cKljuc)-1 ) + ; CHR( ASC( SUBSTR(cKljuc,LEN(cKljuc)) )+1 ) SKIP -1 SET( _SET_SOFTSEEK , lSoftSeek ) RETURN NIL skipBlock - poziva SKIP , dokle god je potrebno i pazi da pokazivač ne izađe van vrednosti ključa. Ovo je malo komplikovanije jer se skipBlock poziva za metode up(),down() kao i za pageUp() i pageDown() metode. Hteo sam ovo odmah da ti pošaljem, ali se negde izgubilo. No, ako ti treba potrudiću se da ti pošaljem. Razlog "zagubljivanja" je taj da od kad sam prešao na SIX jednostavno otkucam SET SCOPE i sve je isto kao da je u pitanju cela tabela. Ovo gore navedeno važi, kao što rekoh, samo ako je filter po polju za koji postoji indeks. Ali šta raditi ako se radi o nečem složenijem, kao recimo SET FILTER TO fnIsplata > 300 .AND. fnUplata > 1000. Jednom sam imao i taj problem. Rešio sam ga tako što sam prvo vršio pretraživanje po bazi i ukoliko bi slog zadovoljio uslov izvršio bi jedno AADD( aNađeni,RECNO() ). Takođe sam ( već pogađaš ) izvršio izmenu vrednosti za skipBlock, goTopBlock i goBottomBlock, tako da su metode praktično vršile pomeranje kroz aNađeni. Po meni je bolje da korisnik malo sačeka, pa zatim "piči" kroz tabelu i gore i dole, nego da odmah dobije tabelu, pa da se kilavi kroz nju. Jedini problem je ograničenje od 4096 elemenata za niz (u našem slučaju aNađeni). Meni više nije ni trebalo, ali ako zatreba umesto niza se može koristiti nova tabela (temp) koja će imati samo jedno polje ( za RECNO() iz tabele koja se filtrira ). Ovo što sledi nisam praktično isprobao, ali bi trebalo da radi. Ukoliko koristiš SIX, filtriranje tabele je omogućeno pravljenjem indeksa komandom SUBINDEX koja uzima u obzir samo slogove koji zadovoljavaju SET FILTER uslov. Normalno, moraćeš da sačekaš da prođe indeksiranje, ali ćeš zatim dobiti indeks koji prividno filtira tabelu, i moći ćeš da radiš sve kao da je u pitanju cela tabela.
clipper.1022 nbatocanin, -> #1011, dcolak
> Hm, al' kako onda da TBrowsujem kroz datoteku sa zadatim > filterom ako ne koristim SET FILTER... Opet kroz Skipper-a > da pravim svoje rutine? Mogao bi da koristiš uslovne indekse. Traje dok izdvoji slogove, ali posle toga je sve trenutno. To je za generalno rešenje, a za specijalizovane primene bi mogao da napraviš neki inteligentan pregled na osnovu postojećih indeksa.
clipper.1023 neman, -> #1019, mdrazic
> Bolje ti je da ubacis u redovne indekse (tagove) 'for > .not.deleted()', a ako zelis reciklazu (i samo za to i za Da, samo sto na mrezi brisanje sloga koji ima indekse sa uslovom FOR !DELETED() ( NSX 1.5 ) usporava rad svih onih koji pristupaju podacima, pa za bazu sa cestim brisanjen ne preporucujem to resenje.
clipper.1024 dvesic, -> #1020, mdrazic
>> To ti je verovatno duzina EXE fajla. Da, odnosi se na duzinu fajla., >> Koliko memorije trazi program da bi radio (sta javlja linker na kraju) ? 364 Kb. >> Da li ima sanse da moj paket od 1.4MB EXE sa 380-420K prijavljene >> potrebne memorije radi sa SiX-om? Nema razloga da ne radi. Ako linkujes sa Rtlink-om, Six ce ti (naravno, ako iskljucis DBFNTX koji se linkuje po default-u) povecati Load Size za 20 - 30 Kb. Ako linkujes sa Blinkerom lako se moze desiti da ti se Load Size smanji :))
clipper.1025 dcolak, -> #1015, jovca.car
│/ * Još uvek se lomim da li da pređem na FoxPro... Nervira me to što nemam │/ * NG za FoxPro ;)) │ │ A šta fali njegovom helpu? Užasan je. Recimo tražim FOUND(). Kucam F, pa kucam O pa kucam U i već sam na UPPER() :)) Sledge DAMMIR!
clipper.1026 mdrazic, -> #1018, dcolak
> My Mistake ;) Upoređujem promenjljive sa poljima u .DBF. So, to > otpada... Ako su ti promenljive deklarisane kao private tada postavi filter po nekoj funkciji, a u njoj ispituj koliko ti volja. Milan
clipper.1027 mdrazic, -> #1017, ikordic
> kada TBrowse započinje svoj život i radni vek, on protrči kroz jedan deo > baze koristeći svoj skipblok, ne bi li skrpio dovoljno podataka da nešto > i prikaže u tabeli. Normalno, umesto tog skipbloka se može podmetnuti > sopstveni, koji će protrčati kroz celu bazu, u tabelu skembati samo > Ja ovoliko smislio, gde su rupe u svemu ovome? Znam da ih ima al' danas > beše naporan dan ... Posebno me zanima mišljenje Mister Koudbloka ... :) Možeš li da zamisliš kako u mreži (makar maloj) izgleda kada samo pet korisnika startuje browser za tabelu sa nekoliko hiljada zapisa, ili možda par desetina hiljada? Ako ne znaš, probaj i javi nam vreme odziva. Milan