PCPROG.1

20 Sep 1991 - 03 Dec 1992

Topics

  1. ms.dos (235)
  2. cccc (0)
  3. asembler (321)
  4. pascal (896)
  5. clipper (1059)
  6. zastita (239)
  7. basic (178)
  8. baze.podataka (116)
  9. novi.fajlovi (66)
  10. algoritmi (52)
  11. razno (707)
  12. van.teme (126)
  13. unknown (986)

Messages - clipper

clipper.1 ppekovic,
Clipper je napravio veliki korak ka jednostavnijem pisanju programa čia je žiža u bazama podataka, s druge strane doneo je i gomilu pitanja, nedoumica, bug-ova, nedokumentovanih mogućnosti itd. itd. Ovo je mesto za diskusiju o svemu tome. Paya
clipper.2 duduk,
Ima li neko, ili zna li bar gde je opisan format Clipper-ovog NTX ? ia
clipper.3 ppekovic,
>>Ima li neko, ili zna li bar gde je opisan format Clipper-ovog NTX ? Nisam siguran, ali zar onaj C source u jednom od dir-ova, ne radi i sa NTX-ovima??? Koliko se sećam, trebao bi da radi. Paya
clipper.4 nradeta,
Ima li neko rutinu za ispisianje broja slovima (za racune) 1903 slovima : hiljadu devesto tri dinara hvala ! nradeta
clipper.5 ndragan,
Ovim se rutina SLOVIMA.PRG izrađena u DP "Mihajlo Petrović Alas" iz Zrenjanina, 023-60-020, proglašava za PD (direktor je sedeo pored mene dok smo čitali SOR) - spomenite nas negde u dokumentaciji ako je ubacite u nešto svoje. Rutina ima i nešto istorije: pre dve godine na Sajmu u Bg dođe neki čiča na naš štand da nam ponudi takvu rutinu, dve hiljade linija kobola, njegov tromesečni rad. Naš čovek koji je dežurao nije ga baš najbolje razumeo, i rekao mu da naša rutina ima skoro dve strane teksta i da smo je radili skoro dva dana... posle nam bilo žao čoveka. Bue_ NDragan slovima.zip
clipper.6 ivantod,
Evo, pokušaj sa ovim programom. On će na osnovu broja da ti da slovni oblik. U stvari je pisan za dBASE pa možda neće baš iz prve da proradi na Clipperu, ali nekih većih problema ne bi trebalo biti. Uputstva su u programu. broj.prg
clipper.7 dejanr,
Hvala ndragan-u i ivantod! Pravi prilozi za Sezam. Biće i u "Bajtovima lične prirode".
clipper.8 dejanr,
Program se kod mene nije hteo kompajlirati na clipper 87. Ispravio sam par sitnica i dodao pred-program za testiranje i još preveo na standard "Računari"... I evo ga! slovima.prg
clipper.9 ndragan,
* Program se kod mene nije hteo kompajlirati na clipper 87. Ispravio sam par kao što je poznato - mi ložimo foks. btw, moja je samo seckalica za izdvajanje para ('xx/100'), ostalo su napisali drugari pre par godina. Bue_ NDragan
clipper.10 ppekovic,
Jedan mali bug debuger-a u clipper-u 5.01. Recimo da hoćete da debugirate program koji se nalazi u prog dir-u. A neka se sve baze nalaze u prog/files dir-u. E sad vi lepo uđete u prog dir i kažete CLD program i sve lepo počne, međutim, pošto se baze nalaze u files dir-u, u programu imam komandu !cd files. Posle te komande, na ekranu će se izgubiti source iako će i dalje sve raditi kako treba. Naravno, štos je verovatno što je dir promenjen pa debuger nbemože da pronađe source. Zato, kada debugirate (isleđujete ;) ) program koji se šete po dir-ovima, obavezno stavite punu stazu do programa, npr.: CLD d:\prog\program Paya
clipper.11 vkrstonosic,
Kad smo vec kod Debuger-a za Cliper 5.01, da li neko zna, da li postoji neko ogranicenje oko duzine source fajla. Probam program koji je podeljen u pet delova i svi rade osim jednog koji je dugacak oko 80K.
clipper.12 vcalic,
Kad se već pominje Clipper i debuggiranje, da li je moguće kod Clippera raditi "isleđivanje" ;) na source nivou uz pomoć, recimo, Turbo Debugger-a, kao što je to moguće sa Force-om ??? WR
clipper.13 ppekovic,
>> Kad se već pominje Clipper i debuggiranje, da li je moguće kod >>Clippera raditi "isleđivanje" ;) na source nivou uz pomoć, recimo, Turbo >>Debugger-a, kao što je to moguće sa Force-om ??? A što, kad je Clipper debuger odličan? Nisam probao. Paya
clipper.14 lazo,
Koristim Clipper Summer 87 i nisam pojma imao da su izlazile još neke verzije kao naprimjer 5.01 koja se tako često spominje ovdje na Seza- mu. Interesuje me u čemu su poboljšanja. Meni su za pravljenje uglav- nom knjigovodstvenih aplikacija dovoljne i ove naredbe, međutim jedina zamjerka je zasad u tome što pri obradi velikih datoteka pri filteru se dugo čeka da se ode recimo na prvi slog u filteru ili ako je dato- teka prazna (pri filteru) on prođe kroz cijelu datoteku da bi nakraju ustanovio da nema podataka. Mene u stvari interesuje da li taj Clipper 5.01 brže pristupa datote- ci tj, podacima u njoj ili su poboljšanja samo u naredbama kao što su npr. DBEDIT,MENU i sl.
clipper.15 ppekovic,
>>Mene u stvari interesuje da li taj Clipper 5.01 brže pristupa datote- >>ci tj, podacima u njoj ili su poboljšanja samo u naredbama kao što su >>npr. DBEDIT,MENU i sl. Pa i ja sam se ponadao da će novi clipper doneti poboljšanja na tom planu, pogotovu da će ispraviti veliku sporost sa filterom (kako si i sam pomenuo). Ali, na žalost, on i dalje sporo radi, iako malo drugačije nego '87 verzija. Naime, prilikom startovanja dbedit-a čeka se mnogo više nego na staroj verziji, ali je onda kretanje kroz bazu brže. Naravno, sve ovo u slučaju kada je uključen filter i kada je baza velika (recimo 10'000 slogova). Probao sam na prvom slogu po filteru da stisnem strelicu na gore i sve je jako brzo radilo. Taman sam se bio obradovao kad ono kada sam otišao na dno baze i pritisnuo strelicu na dole, to je radilo, radilo, radilo i radilo užas, pravi užas. Inače, što se tiče poboljšanja u clipper-u 5.01 kratlko da ti kažem da je novi clipper sada mnogo bliži načinu razmišljanja u C-u, iako je skoro 100% kompatibilan sa '87. verzijom, tj. možeš da koristiš nove mogućnosti, ali i ne moraš. Da ne tupim više, pogledaj članak N. Batoćanina u "Računarima". Ima puno toga novog i zanimljivog. Paya .s
clipper.17 beki,
Zdravo svima u PC.PROG. Ja sam nov na Sezamu i nadam se da cemo se lepo druziti. Hteo sam da pitam dali ima neko da je eksperimentisao sa bibliotekom DBFNTX.LIB iz Clipper-a 5 ? Imam ideju da se umesto Clipper-ovog sporog i nepouzdanog dbf/ntx interfejsa stavi nesto bolje, kao na primer Btrieve koji lepo prianja na Novell NetWare. Jos nesto. Dali neko ima iskustva sa CL Tools 3.0 i CL Text 3.0 firme Dr.Huggle&Partner? Ja sam nabavio CL Report 3.0 i veoma sam zadovoljan. Beki
clipper.18 beki,
Upomoc !!! Kako da uradim parcijalni index u Clipper-u 5 ? Naime, potrebno mi je nesto sto Fox vec odavno ima: INDEX ON <cexp> FOR <lexp> TO <ntxfile> Dosla mi je ideja o jednom mogucem resenju: INDEX ON <cexp1> TO <ntxfile> UNIQUE gde je: cexp1=IIF(lexp,cexp,"NEKI KLJUC") Na ovaj nacin cu postici to da svi slogovi koji ne treba da udju u index dobiju vrednost kljuca "NEKI KLJUC", sto ce u Clipper5-ovom NTX fajlu rezultirati u samo jednom slogu u indexnom fajlu. Medjutim, resenje ne odgovara kada <cexp> ne daje UNIQUE kljuceve, sto je najcesci slucaj kod indexa za razne izvestaje. Beki.
clipper.19 ndragan,
* Upomoc !!! * Kako da uradim parcijalni index u Clipper-u 5 ? pređi na foks c(;)E (ovo sam ja sa šeširom i bradom) * cexp1=IIF(lexp,cexp,"NEKI KLJUC") a šta misliš o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC"); dobio bi istina jedan slog indeksiran sa 'neki kljutz', ali ostale bi dobio, a taj jedan nek sadrži chr(255) pa znaš kad si gotov, a? Bue_ NDragan
clipper.20 ppekovic,
Ovo pitanje je mnogo puta pokretano, ali nikada nisam video celovit odgovor. Radi se o velikim bazama i selekcijama (prostim ili višestrukim, svejedno). U čemu je problem? Ako imam bazu od 10.000 slogova, pa čak i više, što uopšte nije redak slučaj, i želim da izvšim selekciju svih onih čije ime počinje na slova od A do C, i koji su rođeni od 1960-1970 (samo primer, može bilo šta), na koji način to uradii a da bude brzo. Naime, upotreba komande SET FILTER definitivno otpada. Zašto? pa, na bazi od 10.000 slogova sa bilo kakvim filterom, običan SKIP na zadnjem slogu po filteru radi xxx sekundi, tj. previše sporo. Postoji rešenje korišćenja index-a po polju ke se traži, ali onda otpada upotreba dbedit funkcije, tj. morao bi da se pravi sopstveni dbedit. Podela na više baza je problematična, tj. kako baze podeliti. Dakle, kakva su iskustva? Jel ima neko ideja??? Paya
clipper.21 djorzor,
> Podela na više baza je problematična, tj. kako baze > podeliti. > > Dakle, kakva su iskustva? Jel ima neko ideja??? Evo nešto malo iskustva na sličnu temu. Kolega zelkop i ja smo komercijalno radili na sličnim bazama (živeli smo jedno godinu dana od toga). Baze su imale oko 15000 slogova i oko 2 MB. Iz takvih baza smo radili izveštaje. Baza je trebala da radi u jednoj prijateljskoj zemlji, ali za potrebe naše firme. Jedina mašina koju su naši uspeli da uvezu je bio jedan PS/2-50 (u prevodu AT 286/12 bez koprocesora), koji je imao HDD od 20MB. Na takvoj mašini smo razvili dosta lepu aplikaciju, koja se i danas koristi. Korišćen je dBASE IV i na kraju, posle jedno 6 meseci razvoja, najsporiji deo sistema je bilo štampanje, koje je u nekim slučajevima trajalo i više od 2 sata za izveštaj od više stotina strana. Sama priprema izveštaja je trajala najviše oko 20 minuta. U varijantama kada bi nam trebalo da koristimo EDIT i BROWSE naredbe to bi rešavali tako što bi bazu kopirali sa DOS copy naredbom, ulazili u tako kopiranu bazu, brisali naredbom DELETE nepotrebne slogove i na kraju pakovali. Sve to je radilo vrlo brzo. Posle toga u takvu bazu uđemo sa EDIT i sve radi. Fazon sa kopiranjem smo koristili i za pripremanje izveštaja i bili smo vrlo zadovoljni. Kao mala napomena može da ide i da smo probali da koristimo SQL iz dBase-a i bili smo užasnuti sporošću. Ako Te još nešto interesuje, biće nam zadovoljstvo da Ti to prikažemo. Pozdrav, Zoran
clipper.22 vkrstonosic,
> U varijantama kada bi nam trebalo da koristimo EDIT i BROWSE naredbe > to bi resavali tako sto bi bazu kopirali sa DOS copy naredbom, > ulazili u tako kopiranu bazu, brisali naredbom DELETE nepotrebne > slogove i na kraju pakovali. Sve to je radilo vrlo brzo. Posle toga > u takvu bazu udemo sa EDIT i sve radi. Mozda bi se ovo moglo izvesti i bez copiranja baze, jer to ipak zahteva mesta na disku za bar jos jednu bazu. Obrisati sa delete one koji nisu potrebni, naravno bez pack, pa onda vratiti status na undelete kasnije. Problem je jedino koliko dugo radi naredba delete for <uslov> u jednoj bazi od oko 5M. Zanima me sta bi se moglo postici razbijanjem baze na vise baza, sa uvodjenjem nekih internih pokazivaca i slicno ??? Ja imam problem sa bazom od 4M sa oko 20.000 slogova, koja je naravno nestrucno napravljena, odnosno, formirao neko dbu-om bazu sa 10 polja i posle punio neko ko zna jos manje. Da li neko zna kako da resi problem skip-a na poslednjem slogu po filteru ?
clipper.23 vkrstonosic,
Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama. Postoji i funkcija koja iscitava koji se drajver trenutno koristi, ili postavlja neki drugi. Kakve su sanse da se tu uradi nesto pametno, odnosno, preradi postojeci, napravi ili nabavi neki drugi drajver ???
clipper.24 beki,
> Postoji resenje koriscenja index-a po polju ke se > trazi, ali onda otpada upotreba dbedit funkcije, tj. morao bi > da se pravi sopstveni dbedit. Ne moras praviti sopstveni dbedit. Predji na Clipper 5, tamo imas ***ODLICNI*** browse sistem. Ukoliko postoji interes, poslacu ovde jedan program koji koris- ti TBROWSE class Clippera 5 i koji je prilicno univerzalan. Naime, Clipper 5-ov TBROWSE omogucava: -sve ono sto omogucava dbedit -umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM -i jos mnogo toga... Pozdrav, Beki
clipper.25 beki,
> zahteva mesta na disku za bar jos jednu bazu. Obrisati sa delete one > koji nisu potrebni, naravno bez pack, pa onda vratiti status na > undelete kasnije. Problem je jedino koliko dugo radi naredba delete Ovde imas dva problema u jednom. Sta ako u bazi vec postoje zapisi DELETED ? Zatim, koliko je brz skip u bazi u kojoj je recimo 90% slogova izbrisan ? Moje je misljenje da bi se dobio isti rezultat (ako ne isti, onda istog reda velicine). > Da li neko zna kako da resi problem skip-a na poslednjem slogu po > filteru ? Koristi Clipper 5-ov tbrowse sistem. Pozdrav, Beki
clipper.26 beki,
> Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je > odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama. > Postoji i funkcija koja iscitava koji se drajver trenutno koristi, ili > postavlja neki drugi. Kakve su sanse da se tu uradi nesto pametno, > odnosno, preradi postojeci, napravi ili nabavi neki drugi drajver ??? Isto pitanje !!!!! Pitao sam po mnogim BBS-ovima i nigde nista... Beki
clipper.27 djorzor,
> Mozda bi se ovo moglo izvesti i bez copiranja baze, jer to > ipak zahteva mesta na disku za bar jos jednu bazu. > Obrisati sa delete one koji nisu potrebni, naravno bez > pack, pa onda vratiti status na undelete kasnije. Problem > je jedino koliko dugo radi naredba delete for <uslov> u > jednoj bazi od oko 5M. Ako Ti treba EDIT, brisanje bez pakovanja ne ubrzava stvar. Velika je verovatnoća da će biti isto tako sporo kao kod SET FILTER. Uz to, koliko se sećam, SET DELETED OFF/ON ne isključuje obrisane slogove kod EDIT komande. Brzina rada za DELETE for <uslov> zavisi od <uslov>, ali neko moje iskustvo je da je to jedna od bržih varijanti. Što se tiče mesta na disku, rad sa bazom od 5M u principu je preporučljiv samo sa dosta mesta na disku. > > Zanima me sta bi se moglo postici razbijanjem baze na vise > baza, sa uvodjenjem nekih internih pokazivaca i slicno ??? Nisam siguran, ali to može da koristi pre svega ako već imaš ideju kakvi će da budu zahtevi za izveštaje. Na primer, ako Ti vrlo često trebaju korisnici čije ime počinje nekim slovom, onda ima svrhe razbiti bazu u 30 podbaza u kojima će se nalaziti podaci za korisnike kojima ime počinje sa A, B ... Ako takvih zahteva nema mnogo, nego su uslovi dosta složeniji, mislim da to neće mnogo pomoći. Kao međuvarijanta, ako se update base ne radi mnogo često, možda bi bilo pametno da izvršiš kopiranje baze tako da su slogovi složeni po azbučnom redu korisnika. Ne znam tačno kako se komanda zove, mislim da se može naći u HELP-u. > > Ja imam problem sa bazom od 4M sa oko 20.000 slogova, koja > je naravno nestrucno napravljena, odnosno, formirao neko > dbu-om bazu sa 10 polja i posle punio neko ko zna jos > manje. Ako je problem u loše zamišljenoj bazi, mislim da bi trebalo formirati neku bolju strukturu i onda napisati jednostavan program koji bi podatke prepisao iz stare u novu bazu. > > Da li neko zna kako da resi problem skip-a na poslednjem > slogu po filteru ? Nije mi baš jasno šta me pitaš.
clipper.28 ppekovic,
>>Ne moras praviti sopstveni dbedit. Predji na Clipper 5, tamo imas ***ODLICNI*** >>browse sistem. Ukoliko postoji interes, poslacu ovde jedan program koji koris- >>ti TBROWSE class Clippera 5 i koji je prilicno univerzalan. >> >>Naime, Clipper 5-ov TBROWSE omogucava: >> >> -sve ono sto omogucava dbedit >> -umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM >> -i jos mnogo toga... Ja i koristim clipper 5.01 ;))) istina tek od skoro (verovatno jer se skoro i pojavio ;) ). Kažeš da nema problema sa tbrowse-om i slučajem kada se na zadnjem slogu po filteru pritisne strelica na dole. Ja sam probao tbrowse na bazi od 10.000 slogova i jednim jednostavnim uslovom postavljenim kao filter i na jednom 21 ms disku sa 2 MB keša je pritisak na strelicu dole na zadnjem slogu po filteru radio dobrih 20-ak sekundi. Ako postoji rešenje za ovo upotrebom objekata za tbrwose ili na neki drugi način, ako ti nije teško, voleo bi da napišeš par redova o tome. Za mene bi najbolje rešenje bilo kada bi nekako moglo da tbrowse pre ispisa svakog sloga, skače na moju funkciju koja postavlja file pokazivač na slog koji ja želim da se sledeći prikaže, pa se onda kontrola vrati tbrowse-u i on ispiše slog koji sam ja u mojoj funkciji izabrao. Zašto? pa zato jer bi onda u mojoj funkciji mogao da koristim index po polju koje pretražujem pa sa find i uzastopnim skip-ovim dok se ne prekrđi uslov da veoma brzo filtriram bazu po tom uslovu. Paya
clipper.29 ppekovic,
>>> Da li neko zna kako da resi problem skip-a na poslednjem >>> slogu po filteru ? >> >> Nije mi baš jasno šta me pitaš. Uzmi bazu od 10.000 slogova. Postavi filter, bilo kakav. Uđi u dbedit ili tbrowse. Idi na dno baze sa ctrl-pgdn (ovo će potrajati). E sad stisni strelicu na dole i oduševi se kolko je "brz" ;((( Paya
clipper.30 vkrstonosic,
> Sta ako u bazi vec postoje zapisi DELETED ? > > Zatim, koliko je brz skip u bazi u kojoj je recimo 90% slogova > izbrisan ? Slazem se, ali ja samo razradjujem tudje ideje ;) Probao sam nocas, na bazi od 400K i oko 1600 slogova, delete for <jednostavan uslov>, radi oko 30 sec, prema tome, po meni ovo otpada.
clipper.31 vkrstonosic,
> Ako je problem u lose zamisljenoj bazi, mislim da bi trebalo > formirati neku bolju strukturu i onda napisati jednostavan program > koji bi podatke prepisao iz stare u novu bazu. To znam i to nije problem, samo me zanima da li neko ima ideje kako rasturiti bazu, da bi rad posle toga bio najbrzi. Da li podeliti po slogovima, ili odvojiti polja po raznim bazama. Cilj mi je samo da dobijem sto brzu selekciju.
clipper.32 vkrstonosic,
> Naime, Clipper 5-ov TBROWSE omogucava: > > -sve ono sto omogucava dbedit > -umetanje sopstvenih funkcija SKIP, GO TOP i GO BOTTOM > -i jos mnogo toga... Mislim da problem ne moze biti resen pomocu bilo kakvog dbedita, jer problem lezi u samom clipperovom radu sa filterom. On jednostavno ucini nevidljivim slogove koji ne ispunjavaju uslov, ali i dalje kad nesto radi, radi i sa njima. Jedino sto je brzo je naredba seek, pa bi trebalo videti sta se moze uraditi sa njom. Mada i to ne resava problem jer seek trazi samo na pocetku indeksiranog sloga, pa ne dolaze u obzir razni "tezi" uslovi. Clipperov TBROWSE sam probao, cak i doradio za svoje potrebe, ali ipak nisam odusevljen rezultatima. Lepo je sto je moguce zamrznuti kolonu, ili se igrati bojama i nekim oznakama, ali to ipak ne resava probleme.
clipper.33 vkrstonosic,
>> Kad smo vec kod Clippera, dbf-a i ntx-a, u Clipperu 5.01 je >> odvojena biblioteka DBFNTX.LIB u kojoj je drajver za rad sa bazama. >> Postoji i funkcija koja iscitava koji se drajver trenutno koristi, >> ili postavlja neki drugi. Kakve su sanse da se tu uradi nesto >> pametno, odnosno, preradi postojeci, napravi ili nabavi neki drugi > drajver ??? > > Isto pitanje !!!!! Pitao sam po mnogim BBS-ovima i nigde nista... Eh, a mislim da bi tu trebalo da lezi resenje problema brzine clipperovog rada sa bazama. Ima li dobrovoljaca da malo prodzaraju po dbfntx.lib ;))
clipper.34 beki,
> Za mene bi najbolje resenje bilo kada bi nekako moglo > da tbrowse pre ispisa svakog sloga, skace na moju funkciju > koja postavlja file pokazivac na slog koji ja zelim da se > sledeci prikaze, pa se onda kontrola vrati tbrowse-u i on > ispise slog koji sam ja u mojoj funkciji izabrao. Ideja TBROWSE sistema je upravo u tome. TBROWSE sistem je neka vrsta prethod- nice objektno orijentisanog Clipper-a. Postupak za rad je sledeci: 1. Kreiraju se tbcolumn objekti koji sadrze definiciju kolona 2. Kreira se tbrowse objekat od svih tbcolumn objekata 3. Ulazi se u petlju koja skenira tastaturu i u zavisnosti od toga sta treba da se uradi poziva odgovarajuce metode tbrowse objekta. Odlicna strana tbrowse-a je sto ne skace on u tebe (kao dbedit), vec ti skaces u njega i drzis sve njegove konce (moguce je i on-line dodavanje i brisanje kolona). Da bi opisao stvar, dacu ovde jedan kratak primer upotrebe tbrowse sistema na bazu ABC.DBF sa samo dva polja: IME (C[15]) i PREZIME (C[15]). ******************* LOCAL kolona[2],br,kraj,dugme CLEAR USE abc kolona[1]=tbcolumnnew("Ime", {|| ime}) && Kreiramo objekte u kojima kolona[2]=tbcolumnnew("Prezime", {|| prezime}) && smestamo kolone br=tbrowsedb(3,20,22,60) && Kreiramo tbrowse objekt u datom prozoru. Ono && ...db kaze da browse-ujemo iz baze i olaksava && inicijalizaciju. br:addcolumn(kolona[1]) && Vezujemo kolone sa tbrowse objektom br:addcolumn(kolona[2]) kraj=.F. DO WHILE .not. kraj DO WHILE !br:stabilize() && Prozor se popunjuje slogovima. Svaki poziv na ENDDO && br:stabilize dodaje jedan slog u prozoru. dugme=inkey(0) DO CASE CASE dugme=K_DOWN br:down() && Pozivamo metod za prelaz na sledeci slog CASE dugme=K_UP br:up() && Pozivamo metod za prelaz na prethodni slog CASE dugme=K_ESC kraj=.T. ENDCASE ENDDO CLOSE ******************* Objekti u Clipper-u 5 (na zalost, nisu moguci user-defined objekti) imaju svo- je metode i instance-varijable. Metodi se pozivaju sa: objekt:metod(parametri) ---> rezultat Instance-varijable se citaju sa: objekt:varijabla ---> rezultat a postavljaju sa: objekt:varijabla=izraz Da ne bi ovde mnogo duzio o svim metodima i instance-varijabla (ima ih podosta), saljem uz ovaj tekst jedan PRG fajl koji sam uspesno koristio kao genericki filterirani browse u nekoliko aplikacija. Inace, Clipperov tbrowse sistem je veoma mocan - moguce je imati istovremeno nekoliko tbrowse objekata aktivnih i u njima prikazivati sadrzaje nekoliko povezanih baza, ili mozda jedne baze. Uostalom, sve ovo veoma podseca na sve okoline za programiranje sa prozorima (message driven okoline), kao Macintoshov, Windows itd. Svakome koga interesuje Clipper 5 toplo bi preporucio knjigu: Clipper programming guide 2nd edition, Rick Spence, Microtrend. (^^^^^^^^^^ co-developer of Clipper) u kome ima mnogo sistematiziranog znanja i umeca sa Clipper-om. Beki mybrowse.zip
clipper.35 lazo,
-> Podela na više baza je problematična, tj. kako baze -> podeliti. E ovako. Ja sam taj problem rješio na slijedeći način. Naime, iskori- stio sam brzinu SEEK naredbe. Naime, indeksirao sam bazu po ključevima koji mi mogu zatrebati u toku obrade baze. Princip je slijedeći. Recimo da imamo bazu u kojoj ima nekoliko stotina kupaca i intersuju vas podaci za jednog kupca. Indeksirao sam datoteku po polju za šifru kupca i zatim kada se unese odgovarajuča šifra, sa SEEK, koji je veoma brz pozicionira se na prvi slog koji je vezan za tog kupca. Zatim se naredbom COPY TO dat WHILE šifrakupca=VARIJABLA dobija nova datoteke sa puno manje slogova. Rad sa tako kratkom datotekom oduzima mnogo manje vremena, nego sa onom od preko 10000 slogova. Zatim se pri izlasku iz tog dijela programa izbriše ta pomoćna datoteka. To je naravno korisno kod izlistavanja raz- nih kartica i štampe kartica. Na ovaj način sam postigao da se posao koji je rađen od 8 sati (vjerujte mi na rječ), uradi za 40 minuta. Problem se naravno javlja ako treba nešto fizički mjenjati u datoteci. Kako ono što je mjenjano u pomoćnoj da se izmjeni i u glavnoj. Ako bi se svi ti podaci izbrisali pa zatim dodali iz pomoćne opet bi se dobila sporost rada. Zato fizičke izmjene radim u glavnoj, a izvještaje pomoću tzv. pomoćnih dato- teka koje nakon upotrebe brišem, jer nema potrebe da zauzima prostor na disku kad se ti isti podaci nalaze u glavnoj. Problem je kad se zada filter pa se čeka dok se pozicionira na prvi slog u glavnoj filtriranoj bazi, kao i neki nedostaci DBEDIT-a. Inače, gore opisani način obrade podataka u velikim datotekama je jedan od načina da se poveća brzina obrade podataka i za mene najbolji. Volio bih, ako neko zna bolji tj. brži način obrade podataka u DBF datotekama da ga opiše. Nadam se da sam bar malo pomogao u tome kako izdjeliti datoteku na više manjih i da se poveća brzina obrade. Pozdrav Mickey.
clipper.36 ppekovic,
>> Inace, Clipperov tbrowse sistem je veoma mocan - moguce je imati istovremeno >> nekoliko tbrowse objekata aktivnih i u njima prikazivati sadrzaje nekoliko >> povezanih baza, ili mozda jedne baze. Uostalom, sve ovo veoma podseca na sve >> okoline za programiranje sa prozorima (message driven okoline), kao >> Macintoshov, >> Windows itd. Beki, svaka čast na odgovoru i tebi i Lazi, siguran sam da će ovo još mnogima koristiti. Paya
clipper.37 ndragan,
ljudi, al ga komplikujete. pređite na foks i rešite stvar prostim INDEX FOR. da se razumemo, i kod mene kartica radi na seek _kupac copy to radna while kupac=_kupac sele promet use radna alias promet && svuda u kartici piše promet->polje... i posle obrišem radnu; naravno, ni radna se ne zove baš radna, nego &tmp, gde je tmp=sys(3), zbog toga da se u mreži ne bi sudarila dvojica koji bi da prave istu radnu u isto vreme... to radim kad je jedan kupac ili neka manja količina; ako teram preko cele baze, onda index for. a ima i baza od par mega, i ne traje dugo. ali filter - nikad više (ko zapali filter, shvatiće). i ne vidim čemu tolika galama. Bue_ NDragan
clipper.38 lazo,
Evo djelimičnog rješenja da ne dođe do prelaska prvog, odnosno zadnjeg sloga u DBEDIT-u i onog dosadnog čekanja do pojave pozicionog markera. Na vrh se dolazi tipkama CTRL+PGUP, a na kraj CTRL+PGDW. Dakle, ako niste sigurni da li će kraj ili početak vi pritisnite jednu od ovih kombinacija i zatim kreni- te u suprotnom smjeru. Napominjem da je rješenje djelimično, ali može pomoći da ne dođe do 'zaglupljivanja', kad je baza pod filterom i naravno velika. Vjerovatno ovo znate, ali ... (nije zgoreg spomenuti). Pozdrav Mickey.
clipper.39 lazo,
-> Beki, svaka čast na odgovoru i tebi i Lazi, siguran sam da će ovo -> još mnogima koristiti. Eto, odah svoju tajnu.:))))))Sad više moji programi neće biti najbrži.:))))))) Pozdravljam sve kliperše. Mickey.
clipper.41 ppekovic,
>> ljudi, al ga komplikujete. pređite na foks i rešite stvar prostim INDEX FOR. >> >> da se razumemo, i kod mene kartica radi na >> >> seek _kupac >> copy to radna while kupac=_kupac >> sele promet >> use radna alias promet && svuda u kartici piše promet->polje... "Digao sam galamu" ;)) zbog sledećeg: Imaš bazu od 10.000 slogova i ako udariš filter i na zadnjem slogu stisneš strelicu na dole, program radi ihaaaaj koliko. No, na svu sreću tu je Beki i Clipper 5.01 pa smo taj problem rešili. A što se tiče INDEX FOR ta ideja je dobra sve dok ne dođeš do slučaja kada ti trebaju višestruki uslovi i to da te višestruke uslove prepustiš da zadaje korisnik. Primer: Nađi mi u bazi sve čije ime počinje sa "P" Od tih mi suzi selekciju na sve koji imaju 18 godina E sad dodaj mi u tu bazu i sve čije ime počinje i na "M" U vezi COPY TO komande. Ona na žalost radi isuviše sporo za veliki broj izabranih slogova, a ako se program pusti da korisnik zadaje uslove, onda će se sigurno vrlo brzo desiti ovakav slučaj. S druge strane, COPY TO je skoro neupotrebljiv tamo gde se jako često koristi selekcija, "deselekcija", a to je u gore pomenutom slučaju. Paya P.S. Hvala za preporuku FOX-a ali znaš kako smo svi mi konzervativni. S druge strane potrebno je izvesno vreme da bi se navikao na nove komande i funkcije, zatim fox-ove prednosti, ali i bug-ove. A na kraju, kada nisam 100% siguran oko izbora, idem po sistemu, kud svi turci ... A svi (većina) odoše put clipper-a, što nikako ne znači da je ovaj bolji, ali zar svi ne koristimo INTEL-ove procesore a MOTOROLIni su bolji.
clipper.42 bulaja,
Hey Clipperasi, evo jednog lepog iznenadjenja u prikacenoj datoteci (subntx2.zip): Í─── ║ Subntx() is a C function called from a Clipper program to quickly ║ extract index elements from an existing index file, and create a ║ "subset" index matching some key. ║ ║ Typical uses for SubNtx() include implementing a 'WHILE' clause for ║ dbedit, replacing or deleting groups of records, or reporting for a ║ certain condition. Any of these processes can be made to perform ║ significantly faster with SubNtx(). Ë─── Dakle izgleda bas ono sto nam je trebalo za resavanje nekoliko prethodno spomenutih problema. Ovo je shareware verzija i ogranicenje je sto se funkcija moze pozvati samo 5 puta prilikom jednog izvrsavanja programa. Uz registraciju se dobija i C source f-je. Sad jos kad bi smo znali strukturi NTX datoteke, mislim da ne bi bio neki problem da i sami ovako nesto napravimo. Prekopacu posle po Clipper dokumentaciji da vidim ima li mozda opisan NTX ili struktura alternativnog NTX engine. JžB
clipper.44 beki,
> A sto se tice INDEX FOR ta ideja je dobra sve dok ne dodes do > slucaja kada ti trebaju visestruki uslovi i to da te visestruke uslove > prepustis da zadaje korisnik. Primer: > > Nadi mi u bazi sve cije ime pocinje sa "P" > Od tih mi suzi selekciju na sve koji imaju 18 godina > E sad dodaj mi u tu bazu i sve cije ime pocinje i na "M" Takav slucaj ne mozes da obuhvatis indexom. To je inace i razlog zasto je SQL spor - indexe kreiras u data definition i to na vrlo niskom nivou, a zatim radis upite uopste ne vodeci racuna na indexe. Kad tad, mora se po- vesti racuna (cak i na VAX6600). Zato u velikim relacionim bazama postoje profajleri koji ce reci koliko vremena je izgubljeno na kakve stvari i predloziti indexe. Ideja je u tome da SQL sam optimizuje upit koristeci indexe. To bi mozda moglo nekako da se uradi u Clipper-u (pomocu potprograma napi- sanog u C). Trebalo bi cuvati jedan data-dictionary, u kojem bi bili opisani svi DBF i NTX fajlovi. Zatim bi se, kad se da upit, odredilo koji index ko- ristiti itd..... Ima li neko da ovo uradi ? Beki
clipper.45 beki,
> Sad jos kad bi smo znali strukturi NTX datoteke, mislim da ne bi bio > neki problem da i sami ovako nesto napravimo. Prekopacu posle po > Clipper dokumentaciji da vidim ima li mozda opisan NTX ili struktura > alternativnog NTX engine. Imam strukturu Clipper-ove NTX datoteke. Samo problem je u tome sto treba dodati network support i slicne stvarcice. Posto sam radio diplomski rad oko paralelnog pristupa B-stablima, znam da je to cupav problem. Poslacu za neki dan opis NTX strukture, jer sad nemam vremena. > je sto se funkcija moze pozvati samo 5 puta prilikom jednog Mozda neko provali zastitu ! ...Beki
clipper.46 zkehler,
Ŕ (...) Sad jos kad bi smo znali strukturi NTX datoteke, mislim da Ŕ ne bi bio neki problem da i sami ovako nesto napravimo (...) Clipper-ov sistem za indeksiranje koristi modifikovano B-stablo. Prvi page je header, ostali koriste ključeve i pointere neophodne za održavanje stabla. Struktura pagea za header je sledeća: #define MAX_KEY 256 typedef struct š unsigned sign; unsigned version; long root; long next_page; unsigned item_size; unsigned key_size; unsigned key_dec; unsigned max_item; unsigned half_page; char key_expr ŠMAX_KEYĆ; Boolean unique; ć NTX_HEADER; Značenja polja: sign - dužina 2 bajta, vrednost 03; identifikuje bazu kao dBase/Clipper version - polje koje Clipper koristi da bi odredio verziju indeksnog sistema root - offset prve indeksne stranice next_page - offset prve u listi nekorišćenih indeksnih strana. Prva 4 bajta nekorišćene strane ukazuju na sledeću takvu stranu. Lista se završava vrednošću nula. item_size - veličina ključa, plus dužina 2 long broja. Ovo je razmak između ključnih zapisa key_size - dužina ključa po kome se indeksira key_dec - broj decimalnih mesta u ključu, ako je NUMERIC max_item - najveći broj ključeva, koji zajedno sa pointerima mogu stati na jednu stranu half_page - najveći broj ključeva na strani, podeljen sa 2 (važno za B-stabla) key_expr - izraz po kome je indeksirana baza, najveće dužine 256, NIL na kraju unique - boolean koji pokazuje vrednost unique flega kada je indeks kreiran Offseti polja u NTX datoteci: 00 unsigned sign 02 unsigned version 04 long root 08 long next_page 0C unsigned item_size 0E unsigned key_size 10 unsigned key_dec 12 unsigned max_item 14 unsigned half_page 16 char key_expr ŠMAX_KEYĆ 272 Boolean unique Imam C programčiće za dump NTX headera i listanje indeksa. Ako nekome trebaju, javite. ZK P.S. "Clipper Programming Guide", 2nd Ed., Rick Spence
clipper.47 ndragan,
* Imaš bazu od 10.000 slogova i ako udariš filter i na zadnjem slogu stisneš * strelicu na dole, program radi ihaaaaj koliko. No, na svu filter? ne hvala, ako ima duvana, zavijam sam ;). stvarno, baš smo poslednje nedelje proterali poslednju FILTER naredbu iz svojih rutina. BTW - jel zna neko da li igde ima da se kupi duvana za zavijanje, i to hercegovačke škije (našao sam konferenciju gde ću da se oglasim, alal mi vera...). ranije su to držale politikine trafike, ali evo već godinu ipo dana... pošto se taj duvan reže u Zadru. U Zadru inače (pre deset godina) niko nije imao pojma da se to tamo proizvodi. * Nađi mi u bazi sve čije ime počinje sa "P" Od tih mi suzi selekciju na sve koji imaju 18 godina E sad dodaj mi u tu bazu i sve čije ime počinje i na "M" index on <izraz> for (ime='P' .and. godina=18).or. ime='M' to idxfile just like that. ili ako korisnik zadaje uslov, umesto 'P', 18 i 'M' ufuraš neke promenljive koje je on zadao; kod mene se često pojavljuje uslov=iif(odgovor=1,'baza->pera=baza2->mika','baza->laza=baza2->milka') index for &uslov on &dex to (tmp) itd; to radi. danas sam na jednoj 20MHz/150/286 indeksirao ovako: index on skl+kupci.posbroj+kupac+pakdatum ; for between(posbroj,pbr1,pbr2).and. konto=_konto to (tmp) naravno, i uslov i indeksni pojam su makroi koje dobijam posle jedne serije od tri - četiri pitalice. iz baze od oko 96000 slogova po 100 bajta (tu negde) iščupao mi je oko 65000 za 20 minuta; makina je neposvećeni poslužilac ( :) non-dedicated server) u RPTI mreži (mada niko drugi nije radio na tom disku); baza je imala oko 10M i nešto. Obrati pažnju da se u indeksnom pojmu nalazi i jedno polje iz druge baze koja je u relaciji; kad to uspem da izbegnem stvar šljaka nekih 4 puta brže. * strane, COPY TO je skoro neupotrebljiv tamo gde se jako često koristi* selekcija, "deselekcija", a to je u gore pomenutom slučaju. to i kažem - COPY ni ne koristim; radim samo COPY WHILE ako znam da nema nešto mnogo da se kopira. Bue_ NDragan
clipper.48 beki,
Bas bi hteo da vidim tog koji bi **samo** iz ovoga uradio novi NTX sistem, koji ce biti isti sa starim, posebno u multiuser (=network) okruzenju. Uraditi B-stablo sa konkurentim pristupom je gorak zalogaj (moj diplomski rad je bio na tu temu), a uraditi to kompatibilno sa Clipper-ovim NTX-om jos teze. OVO KAZEM DRUGI PUT: CLIPPER+BTRIEVE=SUPER. ZNA LI NEKO KAKO ZAMENITI ORIGINALNI DBFNTX.LIB ?????????????????????????? Beki
clipper.49 beki,
Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa nekim drugim linkerom kao LINK ili TLINK ? Beki
clipper.50 beki,
Sve je to lepo. Ali izgleda da niko od nas nije dobro razumeo Payu: on je tra- zio metod za selekciju zapisa iz baze po uslovu koji zadaje korisnik on-line. Resenje sa INDEX FOR ****nije dobro**** jer u svakom slucaju mora se preci pre- ko svih 96.000 slogova u bazi !!! U teoriji relacionih baza postoje metodi za optimizaciju upita za upotrebu postojecih indexa. Nazalost ovi algoritmi se ne mogu implementirati u Clipper-u jer zahtevaju nizi nivo pristupa indexnim faj- lovima, a i nesto drugaciju indexnu strukturu. U jednom clanku sam nasao algoritam i strukturu podataka koji omogucavaju da kad se odrede n polja po kojima ce se vrsiti upiti, kreira index koji ce omogu- citi bilo kakve upite po opsezima tih polja. Na primer, ako treba da radimo upit po poljima: pol, ime i starost, mozemo postaviti upit kao: pol="M" .and. 18<=starost .and. starost<=20 .and. ime>="M" .and. ime<="O" Kada imamo potrebu za takvu slobodu upita i kada imamo tako veliku bazu (to se dobro placa, zar ne), mozda se isplati implementirati neki ovakav subsystem. Mozda se najvise isplati uzeti jedan microVax i Rdb i svi su problemi reseni. Beki
clipper.51 beki,
Dali neko ima ideju kako ugraditi sledece u Clipper-u (5) ? Treba mi to da su DBF fajlovi zasticeni od citanja u dBase III ili od drugog Clipper programa. Teoriju vec znam, dali neko ima praksu ??? Beki P.S.: Previse usera se ohrabrilo da u dBase mogu uraditi sve sa svojom evidencijom !!!!!!!!!!!!
clipper.52 ppekovic,
>> uslov=iif(odgovor=1,'baza->pera=baza2->mika','baza->laza=baza2->milka') >> index for &uslov on &dex to (tmp) Eh, tako sam i ja probao, ali mi se ubrzo pojavio problem. Naime, ako korisnik zada malko više uslova tj. kada string postane povelik, dešavalo se da mi clipper prijavi greščicu u stilu "e, da nisi malo preterao" ;))). Samo mi nikad nije bilo jasno po kojoj logici to prijavljuje. Nema fiksne dužine posle koje to prijavljuje jer se to nekad dešavalo se kraćim a nije sa dužim stringovima. S druge strane, ni broj uslova nije baš navodio na neki logičan zaključak. Moguće je da funkcija po kojoj clipper određuje pojavu ove greške zavisi od više parametara. Neznam kako sa ovim stoji FOX. Ako ti nije teško, probaj, unesi xxx uslova pa vidi dal će da pukne. Paya
clipper.53 ppekovic,
>> Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa >> nekim drugim linkerom kao LINK ili TLINK ? Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0. Paya
clipper.54 ppekovic,
>> Dali neko ima ideju kako ugraditi sledece u Clipper-u (5) ? >> >> Treba mi to da su DBF fajlovi zasticeni od citanja u dBase III ili od >> drugog Clipper programa. Teoriju vec znam, dali neko ima praksu ??? ;) Uze mi ideju iz glave. Za sve prikaze u programima, osim u slučaju dbedit-a, rešenje za ovo je prilično trivijalno. Napišeš svoje funkcije za code i decode (dal ćeš koristiti xor ili neki drugi sistem codiranja nije ni bitno) i jednostavno kodiraš celu bazu. Zatim, recimo pre READ/GET-a uradiš jedno decode tekućeg sloga, uradiš šta treba, posle uradiš jedno code i gotovo. E, sa dbedit-om je malko drugačija stvar. Potrebna je funkcija koje će pre ispisivanja svakog reda dekodirati taj red pa ga tek onda dati na dalju "obradu" dbedit-u. To u clipper-u '87 nije bilo moguće, ali u 5.01 jeste, pošto dbedit iz 5.01 dozvoljava da redefinišeš svaki deo dbedit-a. Međutim, ima i tu problema. U isto vreme, svi oni koji su trenutno prikazani u dbedit prozoru treba da su decodirani a svi ostali kodirani. Zato treba preuzeti kontrolu i nad svim funkcijama za kretanje kroz bazu u dbedit-u, pa čim jedan ili više slogova izađu iz prozora, treba ih kodirati, a nove dekodirati. Probaću ovih dana to da sprovedem u delo pa ću javiti o rezultatima. Paya
clipper.55 bulaja,
│ E, sa dbedit-om je malko drugacija stvar. Potrebna je funkcija │koje ce pre ispisivanja svakog reda dekodirati taj red pa ga tek onda │dati na dalju "obradu" dbedit-u. To u clipper-u '87 nije bilo moguce, │ali u 5.01 jeste, posto dbedit iz 5.01 dozvoljava da redefinises svaki │deo dbedit-a. └─── Bilo je moguce (i ja sam to vrlo cesto koristio) i u Clipperu S87, i to preko definisanja niza za formatiranje ispisa. Stavis npr. afld[1]="polje1" afld[2]="polje2" (...) apic[1]="decode(polje1)" apic[2]="decode(polje2)" (...) dbedit(y1, x1, y2, x2, afld, , apic) i jos definises DECODE funkciju i that's all. Ideja sa kodiranjem / dekodiranjem (po meni) nije neko resenje, sem naravno za vrlo poverljive podatke koje i ovako treba sifrovati, a po njima ne treba vrsiti nikakva pretrazivanja. Kodiranjem svih polja bi suvise usporio rad kod npr. indeksa, dok bi se kod pretrazivanja jos nekako i prezivelo ukoliko bi se uslovi pretrazivanja takodje konvertovali u kodirani oblik. Ali ovo moze dovesti i do prilicno velikih problema jer ce "glupi" korisnici ulaziti svejedno u bazu i po onako kodiranoj brljati i samo nesto pokvariti posto tek sad nece znati sta rade. Ma kako trivijalno izgledalo jedno resenje koje ja koristim radi. Pokusajte samo da preimenujete npr BAZA.DBF u BAZA.DAT (ili neku drugu ekstenziju). Vecina od onih sto su naucili da ulete u dBase u daju "use baza" ce se tu predati. Provereno. Drugo resenje koje smatram vrlo dobrim i na kome cu mozda proraditi ovih dana ako budem imao vremena (mada i nije nikakav tezak posao) je jednostavno malo sludjivanje zaglavlja .DBF datoteke. Npr. na izlasku iz programa stavite proceduru koja ce npr. prebrisati prvih nekoliko bajtova u hederu .DBF datoteke nekim proizvoljnim sadrzajem. Na pocetku programa naravno stavite da se header povrati u staro stanje vracanjem na pravu vrednost tih nekoliko bajtova. Nema sanse da procita onda bazu iz dBasea, pa ste sa te strane mirni. Posto u toku rada vaseg programa baza stoji na disku u pravom obliku, korisniku ipak moze pasti na pamet (a malo ih je tako pametnih) da program moze prekinuti i onda pogledati sta je u bazi. Alt-C ste naravno iskljucili, a mozete ugraditi u proceduru koja detektuje reset racunara u toku rada ubaciti gomilu raznih upozorenja npr. stavite da program pravi nege gluposti, npr. neku nevaznu tmp bazu i nek brlja po disku koji minut (a u stvari samo treba reindekirati baze ;). Posle toga tesko da ce se iko usuditi sledeci put da izaziva sudbinu. Bulaja
clipper.56 dejanr,
>> > Jeli moguce koristiti Clipper5-ove overlaye bez RTLINK-a, odnosno sa >> > nekim drugim linkerom kao LINK ili TLINK ? >> >> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0. A jel tada malo brže od ono puža zvanog RTLINK?
clipper.57 dejanr,
>> Napišeš svoje funkcije za code i decode (dal ćeš koristiti xor ili neki >> drugi sistem codiranja nije ni bitno) i jednostavno kodiraš celu bazu. >> Zatim, recimo pre READ/GET-a uradiš jedno decode tekućeg sloga, uradiš >> šta treba, posle uradiš jedno code i gotovo. Ideja je dobra, ali bih dodao jednu stvar. Ako planirate nešto slično, zaboravite ideju da to kodiranje obavite u clipper-u. Jedna obična petlja for i=1 to len(polje) će toliko unazaditi performanse programa da će isti postati neupotrebljiv. Ukratko, jedan modulčić na asembleru!
clipper.58 dejanr,
>> Kodiranjem svih polja bi suvise usporio rad kod npr. indeksa, Ne bi! Umesto seek(vrednost) koristilo bi se seek(code(vrednost)) i brzina bi bila ista, ako se zanemari početno izračunavanje code(vrednost).
clipper.59 beki,
> da ce isti postati neupotrebljiv. Ukratko, jedan modulcic na asembleru! Dejan ima pravo ! Jedan programcic u assembleru ili c-u koji ce biti linkovan u aplikaciju i koji ce uraditi stvar. Ali stosevi kao: SEEK code(...) mime=decode(ime) ... REPLACE ime WITH code(mime) su prema meni neprihvatljivi - propada pouzdanost i citljivost aplikacije ! Opet se vracam na DBFNTX.LIB. Mesto za programcic u asembleru je DBFNTX.LIB ! U reklami za Clipper5 je pisalo da "it is possible to replace the low level database/index interface". Kako ? Je li potreban jos neki Nantucketov produkt ??? Pomagajte. Pozdrav, Beki
clipper.60 ppekovic,
>>>> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0. >> >> A jel tada malo brže od ono puža zvanog RTLINK? Dosta je brže, mislim duplo ako ne i više. A kad smo već kod ovog da iznesem još jedno iskustvo. Danas sam napravio batch fajl koji mi iskopira clipper 5.01 compiler i potrebne biblioteke na ram disk. Zatim sam napravio batch koji kompajlira i linkuje program u ram disku. Kompajliranje je išlo nešto malo brže, ali linkovanje ništa. Linkujem upravo sa MSC linker-om. Jedino ubrzanje koje je moguće postići je to da onaj temp fajl koji kreira MSC link date da kreira u ram disku. Paya
clipper.61 ppekovic,
>> Ideja je dobra, ali bih dodao jednu stvar. Ako planirate nešto slično, >> zaboravite ideju da to kodiranje obavite u clipper-u. Jedna obična >> petlja for i=1 to len(polje) će toliko unazaditi performanse programa >> da će isti postati neupotrebljiv. Ukratko, jedan modulčić na asembleru! Može i u C-u. Naime, programi na C-u koji ne uključuju STDIO i GRAPH i još neke manje korišćene header-e, mogu se bez problema ulinkovati u clipper. Paya
clipper.62 dejanr,
>> Može i u C-u. Naravno! Dodao bih da bi C bio daleko pogodniji ako treba implementirati neki iole složeniji algoritam za šifrovanje, na asembleru bi bilo dosta mučno. Ima li neki dobrovoljac da to uradi pa da posle, recimo, napiše tekst na tu temu za "Računare"?
clipper.63 bulaja,
││Kodiranjem svih polja bi suvise usporio rad kod npr. indeksa, │└─── │Ne bi! Umesto seek(vrednost) koristilo bi se seek(code(vrednost)) i brzina │bi bila ista, ako se zanemari pocetno izracunavanje code(vrednost). └─── Mislio sam na usporenje prilikom kreiranja indeksa. Indeksiranje po polju koje je kodirano nema nikakvig smisla (sem ako se kao encode funkcija ne stavi not, kad bi to moglo da se resi descending indexom), pa je potrebno dati indeksiranje po UDF funkciji (decode), sto ce vec dosta usporiti rad cak i ukoliko je funkcija radjena u C-u ili ASM, dok bi Clipper funkcija vec donela katastrofalno usporenje. E sad ne mogu da se setim kako ide osvezavanje indeksa - vajlda kad se da replace na key field onda ide i reindeksiranje po UDF funkciji, ali posto se radi samo za trenutno polje usporenje bi trebalo da je neprimetno. Pao mi je napamet drugi veliki problem prilikom kodiranja baze - ja imam obicaj da u GET maske stavljam direktno ucitavanje ili prikazivanje (sa CLEAR GETS) polja iz baze. Naravno da nije moguce GET decode(polje), eventualno bi se dalo simulirati preko VALID, ali tu vec idemo u takve komplikacije da je jedino primenljivo resenje smestanje polja u privremeni niz i kasnije snimanje u bazu, cime opet gubim sve prednosti direktnog GET-a polja iz DBF. A sad da se zapitamo cemu ovoliko kodiranje i skrivanje podataka. Ako su vrlo poverljivi onda Ok, makar bilo i 10 puta sporije. Medjutim za sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i jednostavno (aj' potrudicu se mozda da i uradim to ovih dana), i sto je najvaznije ne zahteve nikakve dodatne akrobacije prilikom rada sa bazama u programu. Bulaja
clipper.64 bulaja,
│Opet se vracam na DBFNTX.LIB. Mesto za programcic u asembleru je DBFNTX.LIB ! │U reklami za Clipper5 je pisalo da "it is possible to replace the low level │database/index interface". Kako ? Je li potreban jos neki Nantucketov produkt? └─── Nantucket ocito ne zeli da se previse upustimo u analiziranje DBFNTX biblioteke. U kompletnoj dokumentaciji se jedva i pominje DBFNTX.LIB i to samo se spomene da postoje tri bibiloteke (CLIPPER, EXTEND i DBFNTX), a u NG-ovima ni pomena. Jednom recju nista. Malo sam gledao po tom LIB-u, ima oko 40 raznih funkcija. Kretensko resenje je da sad vadimo svaki OBJ iz LIB-a, pa malo SOURCER-a, pa menjamo pa vracamo u LIB etc. Ovo je samo teorijsko resenje, em je zaludan posao, em se ja i da imam vremena ne bi snasao u tome ;), a ko zna i dal' bi proradilo. Ostaje nam da cekamo da se ameri sete da to uradi, il' bar da imamo nesto dokumetvoano da krenemo od toga. Crno nam se pise ;).
clipper.65 dejanr,
>> jedino primenljivo resenje smestanje polja u privremeni niz i kasnije >> snimanje u bazu, cime opet gubim sve prednosti direktnog GET-a polja >> iz DBF. Ja i tako uvek sve prepisujem u privremena polja. Iz razloga što moram da omogućim korisniku da eventualno usled unosa odustane (sa Esc) od SVEGA što je do tada na tom ekranu promenio. A za to izgleda nema drugi način. >> Indeksiranje po polju koje je kodirano nema nikakvig smisla (sem ako >> se kao encode funkcija ne stavi not, kad bi to moglo da se resi >> descending indexom), pa je potrebno dati indeksiranje po UDF funkciji >> (decode), sto ce vec dosta usporiti rad cak i ukoliko je funkcija radjena >> u C-u ili ASM, dok bi Clipper funkcija vec donela katastrofalno usporenje. Pa dobro, indeksira se relativno retko, nije strašno ako malo i potraje. Ne verujem da bi usporenje bilo baš toliko veliko, vredi probati.Mada priznajem da mi ovo nije palo na pamet, zato što indekse uglavnom koristim za pretraživanje a ne za sortiranje.
clipper.66 ppekovic,
>>Nantucket ocito ne zeli da se previse upustimo u analiziranje DBFNTX >>biblioteke. U kompletnoj dokumentaciji se jedva i pominje DBFNTX.LIB i >>to samo se spomene da postoje tri bibiloteke (CLIPPER, EXTEND i >>DBFNTX), a u NG-ovima ni pomena. Jednom recju nista. Pogledao sam na BIX-u u clipper conf. ali ni tamo ni reči. Ostavio sam poruku sa pitanjem u vezi ovog liba na mom tarzan engleskom ;))) pa ako budu razumeli, valjda će neko znati nešto. Paya
clipper.67 spantic,
>>> > Jeli moguce koristiti Clipper5-ove overlaye bez >>> > RTLINK-a, odnosno sa nekim drugim linkerom kao LINK >>> ili TLINK ? >>> >>> Pa trebalo bi da može sa sa MS LINK-om iz MSC-a 6.0. > > A jel tada malo brže od ono puža zvanog RTLINK? Ne da je brže nego rastura. Pre nego što sam počeo da koristim MS C 6.0 sa Clipperom sa koristio TLINK ali sa novim MS linkerom stvar se poboljšala.
clipper.68 ndragan,
>* Neznam kako sa ovim stoji FOX. Ako ti nije teško, probaj, >* unesi xxx uslova pa vidi dal će da pukne. kod foksproa je ograničenje da kompajlirana linija ne sme da pređe 1K; nikad nisam imao problema te vrste. ono jes da ponekad radi sporo, ako se u indeksnom pojmu spominje polje iz druge (i treće!) baze u relaciji, ali to mi uvek radi. Bue_ NDragan
clipper.69 lola,
Bio sam na putu, pa sa zakasnjenjem citam diskusiju o delimicnim indeksima. To jeste veliki problem i ja sam se dovijao na razne nacine. U svojoj dokumentaciji imam stariju verziju SUBNTX() koja je takodje demo i pokriva S87. Ako nekog zanima mogu da je okacim ovde. (SUBNTX.LZH 32326 27.12.89)
clipper.70 beki,
> indeksima. To jeste veliki problem i ja sam se dovijao na razne Da, jeste veliki problem. Sada, kada sam ovo citao dobio sam jednu ideju koju jos nisam probao, al bi trebalo da radi. Kada dodajemo novi record u bazi, iskljucimo one indexe koji ne treba da sadrze taj record. Ovo re- senje je nezgodno s obzirom na REPLACE i REINDEX. REPLACE u slucaju promene polja koje ulazi u neki indexni izraz bi trebalo implemenitrati tako sto ce se obrisati record sa DELETE, pri cemu su otvoreni indexi u koje taj zapis ulazi, a zatim ponovo APPEND-ovati. REINDEX bi se morao implementirati kopiranjem baze, record po record, pri cemu ce se za svaki, ukljucivati odgovarajuci indexi. Malo je nezgrapno, al bi trebalo da radi. Treba probati da nije previse sporo otvaranje i zatvaranje indexa. Pozdrav, Beki P.S.: Nakon sto sam ovo napisao u SOR-u, probao sam gornji metod u dBase i sve je radilo kako treba. Trebalo bi i u Clipper-u ! P.P.S.: Sve ovo bi se elegantno uklopilo u Clipper5-ovu mogucnost defini- sanja komandi.
clipper.71 ppekovic,
Pitao sam na BIX-u u vezi DBFNTX.LIB-a i evo odgovora: ========================== clipper/tech.questions #2353, from irae, 317 chars, Mon Nov 4 17:48:46 1991 This is a comment to message 2352. -------------------------- For that I'd guess you'll need the RDD spec which Nantucket has been promising to release for the last year or so. The only person outside of Nantucket that seems to know it is the folks at Successware 90 who wrote the Babblefish driver for Paradox and have hinted that it uses the unpublished RDD interface. Ira Paya
clipper.72 ndragan,
* sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje * bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i a jedna igra tipa 'isprekrštavaj sve pre nego što izađeš i odseci mu heder'? jeste da je opasno, jer ne garantuje da će sve ostati čitavo kad nestane struje, ali bi moglo da igra, a? ili, recimo, da se negde u hederu neki od neiskorišćenih bajtova upotrebi za oznaku da li je heder sluđen, pa ako jeste, pozovi rutinu koja ga unormaljuje, inače jok (pri otvaranju) i rutina za zatvaranje koja opet pravi pičvajz po hederu. to čak ne bi moralo naročito ni da bude komplikovano. mislim da ideja nije ni bila da se podaci bog zna kako zaštite od nepozvanih, nego da se nedoučeni korisnik spreči da čačka po dbfu i ubacuje nemoguće kombinacije (a tako smo se mučili oko kontrole u aplikaciji...). pade mi sad na um još jedna stvar: arhiver sa šifrom koji se poziva iz aplikacije da raspakuje (naravno sa -m opcijom) sve dbfove pre upotrebe, i spakuje ih posle... što će naravno značiti da je 640 K neka vrsta berlinskog zida i da mora jednom pasti. izeš intel. Bue_ NDragan
clipper.73 ndragan,
* u bazi, iskljucimo one indexe koji ne treba da sadrze taj record. Ovo kako misliš da isključiš indekse? set inde to, pa append, pa set inde to inde1,ind2 - tu si ladno jedno tri-četr puta zvao što dos što bios da ti pravi promaju (otvara/zatvara datoteke). sve i da ih držiš u ram disku, ne verujem da je rešenje dovoljno brzo. ako staviš set order to 0, indeksi se i dalje održavaju. a seti se ovoga: ** cexp1=IIF(lexp,cexp,"NEKI KLJUC") *a šta misliš o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC") to bi trebalo da radi, jesi li probao? ja nisam, meni ne treba. i dalje mi je pomalo čudna cela diskusija, jer kao foksovac stvarno nemam te probleme (imam neke druge...). primedba da indeks for čita celu bazu je na mestu (naš prvi komentar je bio 'a što nema index while'), ali ako je za brauz, možda treba razmišljati o stalnom delimičnom indeksu, ili o jednoj pomoćnoj bazi koja bi držala samo indeksni pojam prve (glavne) baze i u drugom polju recno() od prve; u tom slučaju ta manja se indeksira a velika ne, i uspostavi se relacija po tom drugom polju na broj sloga u velikoj. tako nešto sam svojevremeno majmunisao u vaks bajziku, i brzo je šljakalo. tamo čak ona velika nije ni bila indeksna datoteka (nije reč o DBF!) nego sekvencijalna, a ova mala je bila UNIQ i sadržavala adrese prvih bajtova prvih slogova po datom ključu u velikoj. time se izbeglo duuugačko prečitavanje velike. razmisli. Bue_ NDragan
clipper.74 gristic,
5.48 > OVO KAZEM DRUGI PUT: CLIPPER+BTRIEVE=SUPER. ZNA LI NEKO KAKO ZAMENITI Sa malim zakašnjenjem: slažem se ! A tek (dobitna) kombinacija C + Btrieve !!! Ili ((C + C-isam) * UNIX) == SUPER !!!!!!!!!!! (C-isam je (izmeđuostalog i) srce SQLa - prim.prev.) __GR__
clipper.75 beki,
> dalje odrzavaju. a seti se ovoga: > >** cexp1=IIF(lexp,cexp,"NEKI KLJUC") > >* a sta mislis o cexp1=IIF(lexp,cexp+str(recno(),5),"NEKI KLJUC") > > to bi trebalo da radi, jesi li probao? ja nisam, meni ne treba. To mi se ne dopada bas najvise. Baza za koju mi ovo treba je stvarno VELIKA i onih 5 bajtova u nekoliko parcijalnih indexa mi smetaju. > brauz, mozda treba razmisljati o stalnom delimicnom indeksu, ili o jednoj > pomocnoj bazi koja bi drzala samo indeksni pojam prve (glavne) baze i u > drugom polju recno() od prve; u tom slucaju ta manja se indeksira a velika > ne, i uspostavi se relacija po tom drugom polju na broj sloga u velikoj. Odlicno. Kako se samo nisam setio ranije. Slicnu sam stvar radio na C64. Tamo je bilo sekvencijalnih i random fajlova. Ucitavao sam sve kljuceve u RAM, sortirao, SEEK-ovao u RAM i citao sa floppy disk-a. Pozdrav, Beki P.S.: Ono sa otvaranjem i zatvaranjem indexa i nije tako lose ako je baza takve prirode da nema cestih REPLACE-a i APPEND-a, znaci ako je vise query baza. Jos vise, tada je to najbolje resenje kad nemas INDEX FOR.
clipper.76 beki,
>* sprecavanje radoznalih korisnika cini mi se da bi najbolje resenje >* bilo ono sto sam predlozio za sludjivanje headera baze. Kratko je i > > a jedna igra tipa 'isprekrstavaj sve pre nego sto izades i odseci mu > heder'? jeste da je opasno, jer ne garantuje da ce sve ostati citavo kad > nestane struje, ali bi moglo da igra, a? ili, recimo, da se negde u hederu > neki od A napraviti jedan rezidentni programcic u kojem ce biti registrirani DBF fajlovi koje aplikacija koristi i koji ce kod DOS-ovih operacija READ/WRITE za te fajlove primeniti potrebno kodiranje/dekodiranje. Taj programcic bi mogao da bide linkovan sa celom aplikacijom, a Clipper-u 5 bi cak moglo: #translate CUSE <dbfile> => register(<"dbfile">): use <dbfile> gde je CUSE nova komanda za otvaranje sifrovanih datoteka, a register je funkcija iz naseg programcica (ovo 'cica' moze da nestane ako bude poveci program) koja kaze da prilikom read i write iz datoteke koja ce biti otvo- rena pod imenom dbfile da primeni sifrovanje. Beki
clipper.77 alexa,
> (C-isam je ,)Żmeđuostalog i) srce SQLa - prim.prev.) Nije tako, SQL je, ipak, samo jezik - on može da se oslanja na manje-više bilo kakvu database mašinu.
clipper.78 gristic,
>> (C-isam je (izmeđuostalog i) srce SQLa - prim.prev.) > Nije tako, SQL je, ipak, samo jezik - on može da se oslanja na > manje-više bilo kakvu database mašinu. OK. Mislio sam na Informix, ali jedno je misliti, a drugo to napisati.
clipper.79 alexa,
> OK. Mislio sam na Informix, E da, tako može. Uzgred, C-ISAM i potiče od Relational Database Systems, a ova firma se sada zove, pogodi kako: Informix Software.
clipper.80 yupc,
Skoro (relativno, posto nisam od 15.10. do pre dan-dva bio na SEZAM-u, novi vozac ... ostre krivine ...;>) je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc MSC. Posto je i mene interesovalo, nasao sam neke prospekte od biblioteka za svakojako crtanje u Clipper-u. Najvise mi se dopao Flipper (bar prema onome sto pisu), zato sam i prepisao. Prosudite, predlozite ... Vredi li narucivati ? Pozdrav, YUPC **************************************************************** **************************************************************** **************************************************************** IS YOUR CLIPPER APPLICATON HALF-DRESSED ? Then Get New Flipper 5.0 AND DRESS FOR SUCCESS !!! ----------------------------------------------- Flipper 5.0 Graphics Will Keep You Users Out of Embarrasing Situations ----------------------------------------------- Witout graphics, even the most advanced Clipper application simply isn't ready to do business. Graphics "dress up" your aplication, and better-looking applicatons are worth more to your clients. NEW Flipper 5.0 is the complete graphics LIBRARY that fits Clipper like a fine suit of clothes. Flipper 5.0 give you the power integrate beautiful graphics into your applications - quickly, seamlessy, and with only a few keystrokes. Flipper 5.0 delivers the polished, professional "look of succes" your clients want. And when your applications look good, YOU LOOK GOOD. Graphic, CAD and Clipper: A Perfect Match ----------------------------------------- Flipper 5.0 brings a CAD-like interface to Clipper Development. Vector objects such as circles, boxes, polylines and text can be included in a drawing to create maps, room layouts and other CAD drawings. And that's just the beginning. Graphic object can be selected with a mouse or keyboard, and linked to database records. Objects can be filled solid or with a pattern, placed on different layers within a graphic, copied, moved, combined and more! Printing: The Image of Success ------------------------------ Flipper 5.0's virtual image print driver lets you print graphics at the resolution of the printer itself - instead of at the lower resolution of the traditional print screen. You get all the graphics your printer allows! Flipper 5.0 support screen image printing to Laser Jet, Dot Matrix color and Paint Jet printers, Post Script and HPGL, driver let you scale grapics to any size, and use your █printer's internal fonts for maximum output quality. Flipper 5.0 also supports more than 150 disk-based, bitmapped and stroke font files. You can compile fonts into ypur program, and Flipper 5.0 even includes a font editor for total font flexibility. 2D and 3D Graphs: Just Your Stile --------------------------------- Flipper 5.0 aways given you a wide variety of graph to choose from. Flipper 5.0 adds area graphs to the graph types alerady supported. Any graph type can be switched from 2D to 3D with a single function. 3D chatrs can be rotated to any angle. Flipper 5.0 allows you to place an unlimited number of graphs on the screen, overlay graphs upon each other, create text and reference lines wherever you want, and much more! Included Features: Support standard graphics card: - Auto detects CGA, EGA, VGA, Hercules - Switch to 800 x 600 or other resolutions suppored on video card 2D & 3D Graph Types - Autoscale axes - Two independent Y axes - Unlimited data sets and unlimited points on graph - Any axes linear or log - Mix bars, stacked bars, lines stackes line, points on same graph - Any number of graphs on screen - Overlay graph on previos graph - Linear regression, curve fiting - Text, reference lines anywhere on graph - Missing value support - Draw line as spline - Set legend anyplace on the graph PCX picture support - Read and write PCX pictures - Display monochrome pictures on color screen - Display color pictures on monochrome screen - Scroll PCX picture inside window - Print PCX picture at resolution of printer GEM compatibile font support - More than 150 disk based bitmapped and stroke font files included - Fonts can compiled into your program - New fonts can be acquired from font generation packages - Font editor is included - Font can be rotated, sized and justified Supports printing - Screen image printing to Laser Jet, Dot Matrix, Paint Jet - Virtual image printing allows an image to be printed at resolution of the printer - HPGL is supported for HP Plotters, Laser Jet III and other HPGL - Post Script print driver Low level drawing function - Draw lines, boxes, arcs, circles and polygons - Fill closed figures with solid or pattern - Line can be set to line pattern - Viewports for scaling a drawing into world coordinate system Graphic menu support - Event driven mouse driver with keyboard support - 3D effect drop down menus, icons, check box - Several menus can be active at the same time CAD drawing capability - Draw complex objects can be create using the mouse or keyboard, such as circles, arcs, lines, polylines, boxes, polygons and stroke or bitmapped text - Object can be filled solid or with pattern - Object can be on different layers - Objects can be copied, moved, deleted, saved, restored and combined - The world coordinate system can be defined than changed allowing for zooming and panning of the drawing - Each object can be associated with a database wich provides further information about object Complatibile with Blinker, Warplink, RTLink 4.1 Both Clipper Summer 87 an CLIPPER 5.0 support - Support for Clipper SAYS, GETS, DBEDIT() in graphics mode Flipper support is unmatched - Norton guides database ---------------------------- đ - 24 hour online BBS đ ---------------------------- - Free tecnical support - 70 page tutorial in manual - 500 page manual - Royality Free - 30 day money back guarantee Guaranteed To Improve Your Image ***************** * At only $ 295,* Flipper 5.0 makes it easy to dress your ***************** aplications. And our money-back guarantee will never go out of style. If you're not completly satisfied, return Flipper 5.0 witin 30 day for full refund.
clipper.81 ppekovic,
>> je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc >> MSC. U MSC postoji bibioteka PGCHART za crtanje grafova. Biblioteka je sjajna, jednostavna za upotrebu, a rad je veoma brz. Nevolja je u tome što funckije koje koriste funckije PGCHART biblioteke nisam uspeo da ulinkujem sa clipper-om (pogledaj stare poruke zašto). Međutim, može se uraditi sledeće stvar. Može se napraviti odvojen program za recimo crtanje grafova. Iz clipper-a će se pozivati kao eksterni program, s tim što u clipper env. promenljivoj moraš odvojiti dovoljno mesta za izvršavanje istog. Prenos parametara može ići preko komandne linije (ako ih ima nekoliko) ili, ako ih ima mnogo, preko temp. fajla. Paya
clipper.82 gristic,
>> OK. Mislio sam na Informix, > E da, tako može. Uzgred, C-ISAM i potiče od Relational Database > Systems, a ova firma se sada zove, pogodi kako: > Informix Software. Ma, šta mi napriča !;)
clipper.83 beki,
>>> je bilo pominjano crtanje grafova iz Clipper-a, uz pomoc >>> MSC. > > U MSC postoji bibioteka PGCHART za crtanje grafova. Biblioteka je > sjajna, jednostavna za upotrebu, a rad je veoma brz. Sto ne uzmete CL Tools od Dr.Huggle&Partner? Izmedju ostalog sadrzi odlicnu graficku biblioteku, koju sam nekoliko puta vrlo uspesno is- koristio. Mozete pogledati reklame u Byte. Beki
clipper.84 beki,
Ima li neko ekvivalent Clipper-ove funkcije ISPRINTER(), koja bi radila na momentalno aktivni port za printer, recimo LPT2 ili COM3 ? Beki
clipper.85 vkrstonosic,
Kako da u objektnom browse sistemu u Clipper-u 5.01, postavim picture za odredjenu kolonu ?
clipper.86 beki,
> Kako da u objektnom browse sistemu u Clipper-u 5.01, postavim > picture za odredjenu kolonu ? Pa evo ovako. Recimo da zelis da 'telefon' pokazes sa '(999) 999-999'. Onda uradis: tbcolumnnew("Telefon", {|| transform(telefon,"@R (999) 999-999")}) Beki
clipper.87 vkrstonosic,
> Pa evo ovako. Recimo da zelis da 'telefon' pokazes sa '(999) > 999-999'. Onda uradis: > > tbcolumnnew("Telefon", {|| transform(telefon,"@R (999) 999-999")}) To je to, thanks.
clipper.88 bstevan,
Zdravo ! Dali neko može da mi odgovori,ili da adresu firme u YU, koja prodaje Clipper 5.01 Unapred hvala ! ---POZDRAV--- ---BSTEVAN---
clipper.89 kole,
Ako koristite Clipper 5.01 Extend system da biste omogucili laksi prenos podataka ka i od vaseg C programa, mozda ste primetili sledec: Ako linkujete DOS linkerom (ili onim iz MSC 6.0) dobijate poruke u stilu : Error 2002: fix-up overflow ,bla,bla... a program ponekad radi, ponekad ne. Ako linkujete RTLinker-om ne dobijate nikakve poruke, ali program jednostavno ne radi. Resenje je vrlo prosto. NEMOJTE koristit Extend.h za definicije prototipova funkcija vec ih Vi deklarisite kao _far_ sto resava sve probleme (za sve linkere !) Na primer. extern void far _retni(); void far Vasa_funkcija() { ... ... _retni(nesto); ... ... } Ako ne radi, javite pa da vidimo ! Kole
clipper.90 bulaja,
Kako da saznate da li neka hard disk particija postoji ili ne? Easy as 1-2-3 ;) - samo proverite DISKSPACE(n) gde je n broj diska, 0 za A:, 1 za B:, 4 za D: itd. Ukoliko DISKSPACE vrati nenormalno veliki broj, otprilike 1152 Tb (Terra bytes) (vazi za Clipper S87, nisam proveravao sa 5.01) onda ta particija ne postoji. Ocigledno, sve ovo ne vazi za particije vece od 1152 Tb ;).
clipper.91 mjova,
> Ocigledno, sve ovo ne vazi za particije vece od 1152 Tb > ;). znači kod mene to ne bi radilo? :)
clipper.92 zkrstic,
!! IS YOUR CLIPPER APPLICATON HALF-DRESSED ? !! Then Get New Flipper 5.0 !! AND DRESS FOR SUCCESS !!! Lep reklamni mamac. Pomalo sam radio sa Flipperom , al' mu moj prisutni (mlađi) bratić izvadio dušu: Zdravo, ja sam prisutni BRATIĆ! Usput ja sam radio sa verzijom 4.0 iz daleke 1988-me godine. Odmah da kazem da sam video jos pet-sest slicnih paketa ali ni jedan nije ni blizu FLIPPER-u. FLIPPER 4.0 koliko ja vidim po ovoj reklami gore nema nekih nedostataka u odnosu na 5.0. Sve radi isto pocevsi od fontova, overleja, grafova itd... Takodje radi sa standardnim PCX formatom slika. Naravno ako pri tom imas neki od PICTURE konvertera onda mozes raditi u cemu hoces i ubaciti te slike u CLIPPER. Medjutim daleko interesantnije podrucje primene FLIPPER-a su dijagrami i uopste statistika. Naime on izvanredno radi sa bazama i grafickim prikazivanjem sadrzaja baze. Sve to radi strasno brzo i lepo. Radi na svim grafickim kartama i svim modovima. Ovi fontovi koji se spominju su zaista dobri (kod mene ima 138). Ta- kodje tu je i FONT EDITOR pa ako je neko dokon izvolite molim lepo. Sve u svemu da ne duzim ako neko ne zna sta ce bez grafike u CLIPPER-u ja najtoplije preporucujem FLIPPER. P.S. Mislim samo da ce eventualno zainteresovani imati omanjih problema prilikom rada. USER MANUAL je na oko 200 strana!!! Pa ako se nekom isplati... Eto, toliko... Puno pozdrava i ziveo FLIPPER !!!! Vlajko. P.P.S. Da neznate ko od domaćih (čitaj: srpskih) distributera ima ovaj paket: Flipper 5.0? Pozdrav čeljko
clipper.93 drpr,
Ćao svima! Imam jednu veliku molbu i nadam se da će mi neko od Vas izaći u susret. Prvo da naglasim da što se tiče programiranja moj nivo znanja se kreće samo u oblasti turbo paskala i to na nešto malo većem nivou od školskog.To navodim iz sledećeg razloga:čeleo bih da učim clipper pa bih želeo da mi neko ukratko objasni čemu clipper služi i da li su mi potrbana neka veća predznanja kako bih mogao većinu stvari o njemu da naučim.Molim vas za neko 'prostije' objašnjenje,ako je moguće,jer o bazama podataka ne znam ama baš ništa.Ako bi tu mogli da mi napišete neku literaturu od koje bih mogao da počnem bio bih baš zahvalan. Da ne bi mučili sve ostale ljude poruke možete da mi pošaljete na mail drpr. Još jednom hvala u napred! drpr PS Ja posedujem knjigu Razvoj aplikacija u Clipper-u od Vlade Markovića.Neznam da li da krenem od nje.
clipper.94 lazo,
Pitanje za one koji su imali prilike da rade sa Clipper grafičkom bibliotekom koja se nalazi na Sezamu (CLIPGR12.ZIP). Kad dodam linkeru još i clipgraf.lib datoteku tj. pri linkovanju TLINK prijavljuje slijedeću grešku: Undefined Symbole '_GR_INFO' in module CLIPGR51.C Undefined Symbole '_OUTPUT_REGS' in module CLIPGR51.C Probao sam i sa PLINK-om i sa MS LINK-om i oni su najavljivali nešto slično. Inače program kad se linkuje radi bez problema. Mene interesuje da li se to dešavalo još nekom koje bar probao da radi s ovom bibliotekom ili je možda došlo do neke greške u prenosu, a da je pritom nije detektovao ni komunikacioni program, odnosno modem, a ni zip? Pozdrav, Mickey.
clipper.95 dnikolic,
>> Ja posedujem knjigu Razvoj aplikacija u Clipper-u od Vlade >> Markovica.Neznam da li da krenem od nje. Mislim da je najbolja knjiga koja se koda nas moze kupiti od Strale-a ( xe xe, mislim da se nekako ovako zove ), a imas je u knjizari u Albaniji ( mislim na zgradu ) po ceni od oko 1200 Din. Neces se pokajati. dn
clipper.96 gww.,
> Ako linkujete DOS linkerom (ili onim iz MSC 6.0) >dobijate poruke u stilu : > Error 2002: fix-up overflow ,bla,bla... >a program ponekad radi, ponekad ne. Da pitanje u kom memorijskom modelu je isporučena clipperova biblioteka? Verovatno u large. P.S. Nisam clipperista, samo posmatrač. GWW.
clipper.97 ppekovic,
>> Mislim da je najbolja knjiga koja se koda nas moze kupiti od Strale-a ( xe xe >> mislim da se nekako ovako zove ), a imas je u knjizari u Albaniji ( mislim na >> zgradu ) po ceni od oko 1200 Din. Neces se pokajati. Straley-eva knjiga je prilicno dobra uz dve napomene: Napomena 1. Knjiga nije bas udzbenik koji ce pocetnika u oblasti baza podataka uopste, voditi od osnovnih pojmova nadalje. Knjiga je za one koji su savladali osnovne korake u clipper-u i naucili i razumeli osnovne pojmove o bazama uopste. Napomena 2. knjiga je za Clipper verziju summer '87. Mislim da bi coveku bilo lakse da odmah krene sa clipper-om 5.01 posto on dozvoljava programiranje koje je mnogo blize pascal-u nego sto je to slucaj sa '87 verzijom. Primedba: Nije red kritikovati nesto a ne umeti dati resenje, ali ja resenje zaista nemam. Jednostavno, ne postoji knjiga pocetnica za clipper. I jos da dodam o knjizi črazvoj aplikacija u clipper-u" g. Markovic-a. Knjiga je najgora knjiga koju sam u zivotu uzeo u ruke. Ovo je moje subjektivno misljenje, premda, ako neko zeli da pokaze suprotno, spreman sam izneti i veliki broj argumenata za to. Sada me jednostavno mrzi da pisem jer mislim da ne vredi na nju trositi tastaturu. Paya
clipper.98 ppekovic,
>> > Ako linkujete DOS linkerom (ili onim iz MSC 6.0) >> >dobijate poruke u stilu : >> > Error 2002: fix-up overflow ,bla,bla... >> >a program ponekad radi, ponekad ne. >> >> Da pitanje u kom memorijskom modelu je isporučena clipperova biblioteka? >> Verovatno u large. U pravu si, u pitaju je LARGE model. Paya
clipper.99 bulaja,
│Zeleo bih da ucim clipper pa bih zeleo da mi neko ukratko objasni cemu │clipper sluzi i da li su mi potrbana neka veca predznanja kako bih │mogao vecinu stvari o njemu da naucim. └─── Sluzi za razne poslove / programe koji rade sa bazama podataka. Da bi naucio sam Clipper kao programski jezik nije potrebno mnogo truda, ukoliko imas predznanje iz nekog drugog programskog jezika, tj. opste znanje o programiranju. To se narocito odnosi na verziju S87 koja je uglavnom zasnovana na dBase III+ dijalektu tj. prilicno jednostavna, dok je Clipper 5.01 nesto zakomplikovan pa bolje kreni od S87. Ali sa samo naucenim jezikom slabo ces uraditi ista vredno - bice ti potrebno dosta znanja i iskustva u dizajniranju baza podataka, pa se zato odmah u pocetku zapitaj koji ce ti sve to i da li zaista zelis time da se bavis. Neki Clipper spominju i kao jezik za opstu upotrebu, ali on nije to - suvise je slab na mnogim poljima. Zato ako samo zelis da se bavis programiranjem onog sto ti padne napamet, nemoj razmisljati o Clipperu - ili ostani na TPascalu (sjajan jezik, i ja sam tako poceo ;) ili predji npr. na C (sto ce ti verovatno savetovati vecina ljudi ovde). Clipper je samo neko privremeno, medjuresenje (cak i za baze podataka) - evo npr. ja se posle skoro tri godine rada u njemu trudim da ga se otkacim (u korist C-a). │Ako bi tu mogli da mi napisete neku literaturu od koje bih mogao │da pocnem bio bih bas zahvalan. └─── Najbolje sto mozes da nadjes kod nas je "Programiranje na Clipper-u" S.Straley-a (original Addison Wesley, prevod Mikro Knjiga). Odnosi se na S87, ali posto ti i preporucujem da krenes od S87 verzije onda ce ti knjiga odgovarati. Inace na tu knjigu imam dosta zamerki, ali posluzice ti. Pozdrav, Bulaja
clipper.100 drpr,
Prvo da se zahvalim dnikolicu i ppepkovicu na odgovorima ali kako svaki početnik ima ono glupo pitanje a to je : Da li postoji neka knjiga iz koje da počnem možda nevezana za clipper uz pomoć koje bih mogao da zaplovim i u vode clippera ili da jednostavno uzmem te koje ste preporučili pa da se bijem s njima i da kopam i probam te što mi nije jasno da pitam vas? Još jednom hvala! drpr
clipper.101 zkehler,
Ŕ Primedba: Nije red kritikovati nesto a ne umeti dati Ŕ resenje, ali ja resenje zaista nemam. Jednostavno, ne postoji Ŕ knjiga pocetnica za clipper. Nisu početnice, ali su dobre ove dve knjige: "Clipper Programming Guide", Rick Spence, 2nd Edition, Microtrend Books, 1991: ISBN 0-915391-41-4 "Clipper Developer's Library", James Occhiogrosso, Microtrend Books, 1991: ISBN 0-915391-39-2 ZK
clipper.102 ppekovic,
>> Clipper je samo neko privremeno, medjuresenje (cak i za baze >> podataka) - evo npr. ja se posle skoro tri godine rada u njemu trudim >> da ga se otkacim (u korist C-a). Cinjenica je da je Clipper '87 bio veoma ogranicen, premda i za njega bas ne vazi sasvim ovakva tvoja primedba (privremeno resenje). Medjutim, pojava Clipper-a 5 otklanja svaku sumnju u Clipper kao ozbiljan alat za baze podataka. Paya .s
clipper.103 ppekovic,
>> Da li postoji neka knjiga iz koje da počnem možda nevezana za >> clipper uz pomoć koje bih mogao da zaplovim i u vode clippera >> ili da jednostavno uzmem te koje ste preporučili pa da se bijem >> s njima i da kopam i probam te što mi nije jasno da pitam vas? Pa izgleda ti je ipak ostao Straley. Naravno, za sve sto ti nije jasno, tu smo, uostalom, za to Sezam i sluzi. Samo napred! Paya
clipper.104 dnikolic,
>> Da li postoji neka knjiga iz koje da pocnem mozda nevezana za >> clipper uz pomoc koje bih mogao da zaplovim i u vode clippera >> ili da jednostavno uzmem te koje ste preporucili pa da se bijem Uzmi ti lepo prvo neku knjigu o DBase III Plus, pa to savladaj. Kasnije ce ti rad sa Clipperom biti vise nego lak. Poceti direktno sa Clipperom je kao da odmah sednes u Formulu 1, a cak ni vozacki ispit ne polozis. dn
clipper.105 drpr,
E brate jeste carevi! Govorio meni alias darone za ovakve stvari na sezamu ali ja nisam verovao!Toliku pomoć ne bi dobio ni u crvenom krstu! Elem dosta šale,o svim odgovorima ću razmisliti pa ako krenem da radim i imam neke probleme javiću se.Još jednom hvala svima na srdačnoj pomoći i van očekivanja iscrpnim odgovorima ,and si ju. :)) drpr
clipper.106 zkrstic,
Knjigu od g. Markovića - BACI! PazarPriručniÚĆk za DBASE III i Programiranje u Clipperu (oba izdanja od mikroknjige-rakovica) i pali :) Pozdrav čeljko
clipper.107 dmihajlo,
ARHIVIRANJE PODATAKA ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ APEL: Problem smatram dovoljno univerzalnim da bi se njegovo elegantno rešenje moglo primeniti kao jedan od modula u svim ozbiljnim CL aplikacijama. Iskusni CL programeri su ga verovatno rešili. Odazovite se... UKRATKO: Problem je kako zapakovati i kopirati "nepotrebne" datoteke koje mogu biti duže od kapaciteta diskete, na diskete i/ili strimer, i to sve iz CL programa? Ima li neko program SHROOM za svapovanje RAM-a na disk? Kako da ga nabavim? Kako da dobijem errorlevel koji po izvršavanju npr. "RUN PKZIP" vrati PKZIP ako nešto nije obavio kao treba? SITUACIJA (NA ŠIROKO): Svaka ozbiljna aplikacija mora da reši problem gomilanja podataka. Za neko vreme nakupi se dovoljno podataka da disk, ma koliko veliki bio, postane zagušen "nepotrebnim" podacima. Zbog toga se "nepotrebni" slogovi izdvajaju i smestaju na neku pomoćnu (DBF) datoteku. Ali i pomocna datoteka zauzima prostor na disku, pa je povremeno treba zapakovati i pohraniti na neki drugi medij (traku, diskete...). To treba obaviti tako da bude moguće vraćanje obrisanih slogova sa npr. diskete u aktuelnu bazu podataka, ukoliko se ukaže potreba. Napravio sam rutinu u CL87 koja između ostalog poziva PKZIP arhiver koji je trebao privremene datoteke da zapakuje, zatim sam ZIP paket kopirao na diskete. Jos pre sam napravio i program u TP6 koji rastavlja ZIP datoteke na vise datoteka koje nisu duže od slobodnog prostora na disketi... a onda se pojavio ARJ i ZIPOFF... PROBLEM: Međutim! Kada se pokrene CL program, ostane (pre)malo memorije za PKZIP (treba mu 85K) koji sam pokretao RUN naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ program zahteva još više meorije (oko 280K). Znači malo je koristi od RUN naredbe. MOGUĆE REŠENJE (R:), ODGOVARAJUĆE PITANJE (P:) I KOMENTAR (K:) R: U dokumentaciji od ARJ 2.21a spazih čarobnu stvar: program SHROOM, koji kad se pozove iz nekog programa, svapuje RAM na disk i oslobodi ga za pokretanje drugog programa (npr ARJ) P: Ima li neko taj program ? K: IDEALNO REŠENJE! Baš ono što treba za RUN iz CL... R: Pokušati osloboditi memoriju pravljenjem overleja! P: Da li se pravljenjem overleja može osloboditi dovoljno memorije za uspešno korištenje "RUN PKZIP..."? K: Znam, znam... Probaću, pa ću videti! Osim ako neko već nije probao pa video? Valjda će mi uštedeti trud i vreme? R: Kombinovati CL i BAT programe: BAT poziva CL koji poziva BAT (radi zipovanja), a ovaj opet poziva CL sa parametrom koji kaže nešto u smislu: "nastavi gde si stao..." P: Da li je moguće da nepostoji ništa drugo??? K: Samo to ne! Samo to ne... Ovo bi bilo samoubistvo... PRETPOSTAVKA: Pretpostavka je da program koristi "idiot-korisnik", odnosno da ne zna da koristi DIR, BACKUP, PKZIP ... Zato je neophodno da korisniku iz CL programa poručujem: "Ubaci praznu disketu i pritisni bilo sta...", odnosno "Disketa nije prazna, ubaci drugu..." i sl. Osim toga vodim evidenciju o arhiviranim datotekama, a korisnik se na osnovu nje odlučuje (izabere nešto pomoću DBEDIT) koju datoteku želi da dearhivira. Zato je neophodno da se sve obavi iz CL programa. BoMi
clipper.108 ppekovic,
>> Međutim! Kada se pokrene CL program, ostane (pre)malo >> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN >> naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ >> program zahteva još više meorije (oko 280K). Znači malo je >> koristi od RUN naredbe. Nećeš verovati kako je jednostavno rešenje za tvoj problem. Pre startovanja tvog clipper programa stavi jedno: SET CLIPPER = R85 za ZIP ili SET CLIPPER = R280 za ARJ i gotovo. U stvari, napravi jedan batch fajl kojim će se startovati tvoj program a u kome će prva komanda biti set clipper ... No, nije sve to tako lepo kao što izgleda. Naime, korišćenje ARJ-a i ZIP-a je ok. rešenje za interno korišćenje programa, ali ako taj program prodaješ dalje, ne treba zaboraviti da ni ARJ ni ZIP nisu PD programi. Jedno vreme sam hteo da napravim svoj arhiver koji će da deli arhivu na više disketa vodeći računa o slobodnom prostoru na disku, kao što to radi opcija -vva iz ARJ-a. Međutim, pojavila su se dva problema: 1. Pisati arhiver u clipper-u je zamorno, a sam program će biti veoma spor. 2. S druge strane, mogu ja napisati arhiver u C-u, ali, zbog problema oko povezivanja Clipper-a i C-a, nemogu integrisati glavni program sa arhiverom, a ne dopada mi se da arhiver pozivam komandom RUN. Jest da nemam neki jak razlog za to, ali bih ipak više voleo da mi je sve u jednom EXE-u. Ako neko ima rešenje, bar idejno, voleo bi da ga čujem. Paya
clipper.109 zkrstic,
>> Problem smatram dovoljno univerzalnim da bi se njegovo >> elegantno rešenje moglo primeniti kao jedan od modula u >> svim ozbiljnim CL aplikacijama. Iskusni CL programeri su >> ga verovatno rešili. Odazovite se... >> Ima li neko program SHROOM za svapovanje RAM-a na disk? >> Kako da ga nabavim? Brate, zaboravi, šanse da to nateraš da radi sa Clipper-om su ravne nuli. Tvoju muku sam već doktorirao :(, ubijao sam se i sa SET CLIPPER i slično, al kada rezervišeš memoriju, (gotovo) redovno ne ostane do- voljno za program. U ZIP-u imaš dve verzije, OVERCL je demo, lepo radi ali je DEMO, pa radi samo dva puta po startovanju programa. SWITCH je zato carski, radi koliko hoces puta i mali je :) (eto koristi od malog!) Ako zagusti a ti viči. Dobra kombinacija sa arhiviranjem je SWITCH i PCBACKUP 4.3, naravno nezaboravi na copyright za PCBACKUP. Pozdrav, čeljko file.zip
clipper.110 bulaja,
│Kako da dobijem errorlevel koji po izvrsavanju npr. "RUN │PKZIP" vrati PKZIP ako nesto nije obavio kao treba? └─── Izgleda da Clipper S87 ima nekih problema sa ispitivanjem errorlevela kod run-a, ja sam skoro pokusavao nesto da provalim i nikako mi nije vracao poruke o gresci cak i za obicne DOS komande (cd, md, ..). │P: Da li se pravljenjem overleja moze osloboditi dovoljno │ memorije za uspesno koristenje "RUN PKZIP..."? └─── Pravljenjem overleja ces naravno smanjiti maksimalne zahteve za memorijom svog programa, ali je pitanje da li ce to biti dovoljno za ZIP. Ali pre nego sto pokusas nesto sa overlay-ima pokusaj i da pre "run pkzip" zatvoris sve aktivne baze i indekse, mozda ce ti to biti dovoljno. Ipak ovo nije neko resenje, jer se moze desiti da na nekoj masini opet nece biti dovoljno memorije. │R: Kombinovati CL i BAT programe: BAT poziva CL koji poziva BAT (radi │zipovanja), a ovaj opet poziva CL sa parametrom koji kaze nesto u │smislu: "nastavi gde si stao..." └─── Uzas ;). Ostaje naravno najbolje resenje da se program za arhiviranje pise u C-u. Cak ne mora da se pise vec samo prilagodi - postoji dosta arhivera koji su dati u source kodu (npr. na Sezamu ima source LHA arhivera u \ibmpc\archiver, ili LZW negde u \rsoft) i PD su pa sa te strane ne bi bilo nikakvih problema. Ostaju opet memorijski zahtevi tih arhivera - s obzirom da se direktno povezuju sa Clipperom nije im potrebna memorija i za dodatan command.com koji se ucitava prilikom RUN. Mozete malo optimizovati koriscenje bafera pa na racun eventualno sporijeg rada dobiti znatno manje memorijske zahteve. Ovo iz Clippera nisam radio, ali sam npr. prilagodio za Force algoritam tj. C program (koristio sa msvojevremeno Turbo C) za LZW kompresiju i radio je lepo, bez problema. Sa Clipperom mislim (tj. nadam se ;) da ne bi trebalo predstavljati problem. Ovo se naravno odnosi na verziju S87 na 5.01 sam tek poceo nedavno da radim i nisam jos proucio extend sistem. Moguce je i mazohisticko resenje da se arhiver pise bas u Clipperu. U tom slucajo otpadaju svi problemi, ali ce svaki iole bolji algoritam biti katastrofalno sporo zbog "brzine" Clippera. Ali zato mi je palo na pamet vrlo trivijalno resenje za kopresiju .DBF datoteka. Moguce je .DBF konvertovati u neki levi oblik gde se cuvaju samo zaglavlje (struktura) baze, a nema fiksne duzine ni za stringove (zapisuje se prakticno samo rtrim(string_field)), numerici bi se konvertovali iz stringova (kakav je zapis u .DBF) u normalni binarni oblik (integer, real), uz neku optimizaciju i logicka polja u jedan bit (tj. bajt ali ukoliko ima vise logickih polja ona bi se spakovala u taj bajt). Ovde bi mogle da se ostvare solidne ustede narocito zbog stringova koji su u 99% slucajeva polupopunjeni zbog hipoteticke maksimalne vrednosti. Ovakvu proceduru ne bi bio nikakav problem izvesti, uz neki trivijalni algoritam za kompresiju bi se verovatno dobili sasvim pristojni rezultati. Pokusacu ovih dana da uradim takvo nesto u Clipperu i javicu rezultate. Bulaja
clipper.111 hercog,
Da li neko zna zbog cega clipper 5.01 ponekad pri in- deksiranju datoteke obrise tu datoteku (strukturu i po- datke ) a ostav njeno ime na disku. 2. da li je nekome poznt razlog blokiranja clippera 5.01 kod naredbe release Hercog
clipper.112 dejanr,
>> 2. S druge strane, mogu ja napisati arhiver u C-u, ali, zbog >> problema oko povezivanja Clipper-a i C-a, nemogu integrisati >> glavni program sa arhiverom, a ne dopada mi se da arhiver pozivam >> komandom RUN. Zar su problemi toliki? Koliko sam shvatio, može se uzeti C 5.1. Dakle, arhiver na asembleru?
clipper.113 dejanr,
>> Međutim! Kada se pokrene CL program, ostane (pre)malo >> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN >> naredbom. Neće da radi! Ja radim nešto mnogo manje elegantno, ali uradi posao. Naime, osim nekakvog glavnog programa koji se bavi "obradom" podataka, napravim odvojen program ARHIVA za prenošenje na diskete. Taj nije na Clipper-u, i bez problema zove ZIP kad mu treba. Do sad se niko nije bunio.
clipper.114 hercog,
Moj savet ti je da nabavis Clipper 5.01 i da s njim pises programe.Koristeci njega moci ces da pokrenes pkzip i sl programe jer se sam svapuje na disk ako nema dovoljno rama . Ja sam napisao program od oko 620 kb pa mi se iz njega sasvim lepo startuju jos neki programi/ pozdrav Hercog
clipper.116 dmihajlo,
Zahvaljujem svima na odgovorima i pomoci! Najvise mi odgovara resenje zkrstica (5.109), a probacu i CL5.01 po preporuci Hercoga (5.114). Probao sam i (5.108) od ppekovica. Radi, donekle, ali sam uz put otkrio i bag u CL87: posle memory(0), ne radi RUN ... pod MS DOS 5.0. (vidi fail "bag").zip"). HVALA! BoMi bag.zip
clipper.117 ppekovic,
>> Zar su problemi toliki? Koliko sam shvatio, može se uzeti C 5.1. Na zalost ja nemam MSC 5.1, ali ako neko ima, i ako ga ne mrzi, ima u rsoft dir-u C source lzw arhivera (r071lzw.zip (?)). >> Dakle, arhiver na asembleru? Da, i neko koga ne mrzi to da pravi na assembler-u. Da neko slucajno nezna za neku biblioteku (posto ih za clipper ima gomila raznoraznih) koja ukljucuje funkcije za backup? Paya
clipper.118 vili,
Postoji li nacin da se ALERT() ne pojavljuje na sredini ekrana, vec tamo gde ja to hocu (eto bas hocu..)
clipper.119 ndragan,
/ (struktura) baze, a nema fiksne duzine ni za stringove (zapisuje se / prakticno samo rtrim(string_field)), numerici bi se konvertovali iz to se u foks prou kaže 'copy to druga type delimited with tab'. ja za arhiviranje iz foksa koristim sledeću logiku: program mi generiše arhiva.bat i to na lokalnom disku (zbog mreže) i to negde na vrh path liste (obično DOS direktorij); arhiva.bat poziva ZIP, BACKUP, javlja operateru šta da napiše na disketu itd. Na ekranu mu ostavim poruku "OTKUCAJ REž ARHIVA <<enter>>"; otkako se pojavio KEYBUFF i to je otpalo - generišem Arhiva.bat, uradim Clear All, Run Keybuff Arhiva žM i Quit - tako da se arhiviranje radi još malo pa automatski. Bue_ NDragan
clipper.120 lazo,
Jel' neko skonto kako da se switch87 pozove iz program i isovremeno pozove neki drugi program. Ja sam uspio dobiti samo nešto kao Shell to Dos u raznim programima, a zatim sa exit se vratiš u program.
clipper.122 lola,
│ Jel' neko skonto kako da se switch87 pozove iz program i isovremeno pozove │ neki drugi program. Ja sam uspio dobiti samo nesto kao Shell to Dos u raznim │ programima, a zatim sa exit se vratis u program. └──── Nisam u mogucnosti da proverim on-line uputstvo (na disketi), a manual koji imam je od starije verzije. Tek onako po secanju u programu napises Drswitch(cDosKomanda,cVrstaMemorije,nMem) Ne secam se vise kako se specificira extended ili expanded memorija, ali ako ostavis prazno deo programskog imidza ce ici na disk. Evo ti primera: Drswitch('lotus','',300) Drswitch('backup '+source+Drv,'',200) Vazno je da linkujes header kao prvi obj a switchu7 kao poslednji. Na primer: tlink header7+obj1+obj2+..+switchu7,prog,,CLIPPPER+EXTEND+ lib3 ... Napomena 1: Do sada nisam imao problema kada sam DRSWITCH koristio sa Clipper 5.01, bez obzira da li je dinamicko alociranje memorije ukljuceno ili iskljuceno. Napomena 2: U uputstvu za stariju verziju DRSWITCH pise da je komanda RUN DRSWITCH DosKomanda na primer: RUN DRSWITCH EDIT MYFILE.PRG
clipper.123 zkrstic,
Obzirom na brojna pitanja u vezi raznoraznih programa za pristup virtuelnoj memoriji, evo par pojašnjenja. Problem br. 1 Autor swap-a i overlay-a je izvesni Greg A. Martin. Programi su sjajni, lepo rade, posebno OVERLAY, ali... Nama (meni) su dostu- pne samo demo verzije, koje su ograničene na 2 odnosno tri izvr- šenja nakon startovanja programa. Sa čovekom se nemože stupiti u kontakt ni telefonom ni pismom. Problem br. 2 Obzirom da za iole ozbiljniji rad ostaje najlošiji među njima, tj. SWITCH87, čovek koji je probao da radi sa ostalima navikao je na sintaksu: Result=SWAP(kb,prog) ili kod overlay-a, Result = OverLay(Program, Memory, Prompt,Pathname, Filename, Restoredir) Kod SWITCH-a je sintaksa sledeća: Result = Switch87("prog",kb) prog - naziv programa na koji se prenosi izvršenje kb - iznos memorije u kb koji se oslobađa na disk. Ukoliko je 0, oslobađa se maksimalno moguća količina memorije. SWITCH radi n-puta po startovanju programa i to mu je jedina prednost u odnosu na gore pomenuta dva programa. Zna i da blokira računar, al' to is- ključivo zavisi od ploče i konfiguracije. S toga, ukoliko je ikako moguće koristite overlay(), jer je najbolji. Nadam se da sam sad pojasnio u čemu je štos. Kome zatreba još neki podatak, nek' me izvoli mailovati. :)) Pozdrav, čeljko P.S. žim nađem source-ove iz Crvenog signala (moji programi) poslaću ih jer bi mogli biti dobri kao primeri, iako su matori.
clipper.124 lazo,
Zahvaljujem, pomoglo je.
clipper.125 ppekovic,
>> Međutim! Kada se pokrene CL program, ostane (pre)malo >> memorije za PKZIP (treba mu 85K) koji sam pokretao RUN >> naredbom. Neće da radi! Kaže: "Too big to fit...". ARJ >> program zahteva još više meorije (oko 280K). Znači malo je >> koristi od RUN naredbe. Pre izvesnog vremena si bas od mene dobio odgovor da je veoma lako resiti ovaj problem setovanjem environment variable clipper na sledeci nacin: SET CLIPPER=r:280 To je sasvim tacno, ali samo za verziju '87. Posto sam, otkada sam presao na 5.01 koristio RUN komandu samo za neke sitnije programe, nisam pokusavao pomenuti problem da resim na Clipper-u 5.01. Medjutim, danas sam naleteo na taj problem i po inerciji otkucao set clipper ... ali! program i dalje prijavljuje out of memory ... Pogledam lepo sta pise za varijablu clipper kad tamo ni traga ni glasa nekadasnjem R, a zamene nigde. Dakle, jel zna neko resenje za malo vece programe, komandu RUN i clipper 5.01?! Paya
clipper.126 hercog,
Da li neko zna zbog cega clipper 5.01 ponekad pri in- deksiranju datoteke obrise tu datoteku (strukturu i po- datke ) a ostav njeno ime na disku. 2. da li je nekome poznt razlog blokiranja clippera 5.01 kod naredbe release Hercog
clipper.127 bstevan,
>> Nisu početnice, ali su dobre ove dve knjige:<< Dali se zna gde se mogu nabaviti ? ---POZDRAV--- ---BSTEVAN---
clipper.128 bstevan,
Ovim javljanjem želim da predstavim funkciju MYBROW(). Sam naziv podseća na funkciju BROWSE(), i sve komande iz BROWSE() rade i u MYBROW(). Razlika je sada što nema više dosadnih poruka poput bof,eof,Record itd. Ali nebih zauzimao više ovde prostora o funkciji MYBROW(), dovoljno je skinuti datoteku mybrow.zip, i videti šta pruža funkcija MYBROW(). Sva ostala uputstva u vezi funkcije MYBROW(), možete pročitati u nekom editoru iz fajla readme.txt,a sam rad funkcije startovanjem demo.exe -fajla. Način pozivanja funkcije MYBROW(),možete videti iz demo.prg -fajla. ---POZDRAV--- ---BSTEVAN--- mybrow.zip
clipper.129 ppekovic,
>> Ovim javljanjem želim da predstavim funkciju MYBROW(). >>Sam naziv podseća na funkciju BROWSE(), i sve komande iz BROWSE() >>rade i u MYBROW(). Pošto je bstevan propustio da kaže, datoteka prikačena uz poruku 5.128 je demo verzija funkcije mybrow(). Za kompletnu verziju se treba obratiti autoru, a dobiće se verovatno uz izvesnu materijalnu nadoknadu. Paya
clipper.130 nbatocanin,
Kakva su vam iskustva sa novim Clipper-om? Interesuje me na kakve probleme nailazite. Ja sam veoma zadovoljan. Svi moji stari programi sada bez greske rade, a jedan veoma veliki (oko 900K EXE) radi i bolje (S'97 mi je pravio neke probleme, a 5.01 to savrseno radi). Ja sam naisao na sledece probleme: 1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a program linkuje sa PLL opcijom, Clipper javlja da je los format datoteke. Kad se izbaci DOS=HIGH, sve savrseno radi. 2. Postoji odredjena nekompatibilnost u sintaksi koja je morala da usledi zbog veoma klimave sintakse starog Clipper-a. Na primer: SUM ALL (x+y)*z TO s Ovde nije jasno da li treba sabrati izraz (x+y)*s za sve slogove ili All(x+y)*s - tj. da li je ALL funkcija ili oznaka za scope. Zato sad treba pisati: SUM (x+y)*z TO s ALL 3. Desava se da se program veoma nekontrolisano ponasa - da gubi vrednost nekih promenljivih, ... - a da sve nestane nekom trivijalnom intervencijom kao sto je promena naziva promenljive. Uzrok jos nije otkriven, ali mi lici na neke bagove verzije S'87. Pozdrav, Nenad
clipper.131 hercog,
Evo ti jos nekih , cini mi se , bagova clippera 5.01 1. Blokira kod izvrsavanja naredbe release 2. Ponekad pri indeksiranju datoteke izbrise sadrzaj te datoteke i njenu strukturu , na disku ostavi samo njeno ime. 3. ima toga jos al ne mogu sada da se setim pozdrav Hercog
clipper.133 ppekovic,
>> Kakva su vam iskustva sa novim Clipper-om? Interesuje me na kakve >> probleme nailazite. Ja sam veoma zadovoljan. I ja sam uglavnom zadovoljan osim jedne sitnice (?). Pogledajte sledeći program: use baza č 10,10 get prvo č 12,10 get drugo read ? prvo ? drugo use Kreirajte DBF baza sa poljima: PRVO C 10 DRUGO N 8 2 // mogu i druge definicije i ubacite jedan proizvoljan zapis. Po startovanju programa ćete dobiti dva GET-a. Promenite vrednost bilo kog od njih, pređite na drugo polje i pritisnite ESC. AHA! iako je pritisnut ESC, vrednost polja je promenjena! To zahteva da se get/read uvek radi sa memorijskim promenljivima, pa da se ispituje da li je pritisnut ESC pa ako nije da se vrednosti memorijskih promenljivih prebace u bazu. Paya
clipper.134 ppekovic,
Međutim, ja sam nailazio na mnogo veće probleme sa DEBUGER-om nego sa samim compiler-om. Konkretno, vrlo često mi se desi da se u sred rada source izgubi sa ekrana. Tj. brojevi linija su tu, trace lepo radi i ide po pravimlinijama, ali teksta nema. To se dešava kada u sred programa pređete u neki drugi direktorijum, što se može rešiti stavljanjem punog path-a za program, ali dešava se i u drugim slučajevima koje je teško rešiti. Jedan od takvih je kad naiđem na deo za štampanje tj. komande set device to printer. Onda debuger poludi. Gubljenje source-a mi se dešavalo i u još nekim slučajevima kod kojih nisam uspeo da otkrijem zbog čega se to desilo. Dalje, Debuger ima probleme sa dužim modulima. Tj. čim je modul duži od xx K, kaže da nemože da ga svari. Paya
clipper.135 beki,
Ja sam dusom i telom Clipperas ali jedan moj dobar prijatelj koji nema modem i nije na Sezamu zamolio me je da uputim sledece pitanje do FoxPro-ovaca dusom i telom: Kakva su iskustva sa FoxPro V2, sa Distribution Kit-om, sa C-API za FoxPro V2 i sa svim ostalim sto ide uz njega. Unapred hvala od mene i od mog prijatelja Dragana Beki
clipper.136 vili,
> > 1. Blokira kod izvrsavanja naredbe release Kod mene RELEASE savrseno dobro radi! _ O /|\ / \
clipper.137 vili,
> AHA! iako je pritisnut ESC, vrednost polja je promenjena! Mislim da je to namerno tako uradjeno i da to nije "bug". It's not a bug, it's a feature!. Uostalom u manualu pise: ESC - Terminate READ without saving current GET ^^^^^^^ > To zahteva da se get/read uvek radi sa memorijskim > promenljivima, pa da se ispituje da li je pritisnut ESC pa Mislim da je tako sigurnije. U manualu se predlaze nesto slicno ovome: USE baza memvar->podatak = baza->podatak @ 10,10 GET memvar->podatak READ IF (LASTKEY() != K_ESC) .AND. UPDATED() REPLACE baza->podatak WITH memvar->podatak ENDIF _ O /|\ / \
clipper.138 vili,
Nedavno sam download-ovao: The 3PX Clipper Extended Functions Library, Version 5.0 Ta biblioteka je za Clipper Summer'87. Uz tu biblioteku se nalazi i DEMO program. Probao sam da taj DEMO kompajliram i linkujem sa CLIPPER 5.01, ali nije islo. Tj. DEMO.PRG se bez problema kompajlira, ali RTLink javlja sledece: warning wcl0001:Linking Clipper Summer'87 module 'XMENU' with Clipper5.0 linker warning wcl0001:Linking Clipper Summer'87 module 'XMISC' with Clipper5.0 linker warning wcl0001:Linking Clipper Summer'87 module 'XSTRING' with Clipper5.0 linker UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: SYMBOL FIRST REFERENCE ------ --------------- '_VSTD' 3PX.LIB 'SUMMER87' 3PX.LIB Kako taj DEMO da linkujem sa CLIPPER-om 5.01? Da li je to uopste moguce? Koje opcije za compiler i linker da upotrebim? P.S. Mene, ustvari, interesuju samo funkcije za rad sa misem. Kako da pokrenem misa u svojim aplikacijama? _ O /|\ / \
clipper.139 zkrstic,
> Kako taj DEMO da linkujem sa CLIPPER-om 5.01? > Da li je to uopste moguce? Koje opcije za compiler i > linker da upotrebim? Samo sa Clipperom 87. S njim radi. A i nije nešto :( > P.S. Mene, ustvari, interesuju samo funkcije za rad sa > misem. Kako da pokrenem misa u svojim aplikacijama? Bejaše neki lib na tanjugu, al' ja nikad nisam uspeo da ga skinem jer je bag u zipu :((( Pozdrav, čeljko
clipper.140 ppekovic,
>> Mislim da je to namerno tako uradjeno i da to nije "bug". >> It's not a bug, it's a feature!. Uostalom u manualu pise: >> >> ESC - Terminate READ without saving current GET Sve je to lepo al je lepše bilo onako kako je radio '87. OK. je da radiš sa mem. promenljnivima kada umećeš novi slog, ali kada ispravljaš postojeći, lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane kako je, ako izađeš legalno, promene se automatski zapišu i super! Paya
clipper.141 ndragan,
/ lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane / kako je, Ne ostaje - ako izmenjaš šest polja, a na sedmom zvizneš iskejp, prvih šest je već zapisano. I za ovo je bolje raditi sa memorijskim kopijama. Bue_ NDragan
clipper.142 zdimic,
Hitno mi je potreban razvojni sitem za clipper (87 ?) pod nazivom UI, a cujem da postoji i neki jos mocniji sys za clipper 5. U razmenu nudim npr. Fox pro 2.0, gomilu LIBs za clipper itd. Hvala, Zoran
clipper.143 ppekovic,
>>/ lčakše je direktno sa poljima u bazi, pa ako stisneš esc, sve ostane >>/ kako je, >> >>Ne ostaje - ako izmenjaš šest polja, a na sedmom zvizneš iskejp, prvih šest >>je već zapisano. I za ovo je bolje raditi sa memorijskim kopijama. Znam da to tako sada radi, ali sam rekao da bi bilo bolje drugacije, tj. onako kako je radio clipper '87 (?). Paya
clipper.144 lazo,
Hello everybody! Moj problem je slijedeći: u DBEDIT() funkciji pri pozivanju korisničke funkcije se prenose dva parametra "status" i "fld_ptr". Ovaj drugi ukazuje na tekuće polje u strukturi datoteke kojem se može pristupiti upotrebom funkcije FIELD(). Ovo piše u knjizi. Po meni, ovaj parametar je numerik i sadrži redni broj sloga, kome onda pomoću funkcije FIELD(red_br_polja) pristupam tj. editujem ga. Problem sam riješio tako što sam postavio varijablu koja se uvećava, odnosno umanjuje pri pomjeranju kursorske strlice. U ovisnosti od tog broja pristupam odgovarajućem polju. Slabost ovoga je kad neko pritisne recimo tipku za pomjeranje u desno i ne pušta dok na ekranu ne dobije željeno. U tom slučaju obavezno se desi da je broj koji se uvečava za jedan manji od stvarne pozicije. Kada bih mogao očitati sadržaj pomenutog parametra to se, pretpostavljam, ne bi dešavalo i smanjio bih svoju funkciju za 10-tak (ne)potrebnih IF-ova. Prema tome, zna li neko kako da se preuzme vrijednost iz ovog parametra (fld_ptr). Mickey.
clipper.145 nbatocanin,
> 2. Ponekad pri indeksiranju datoteke izbrise sadrzaj te > datoteke i njenu strukturu , na disku ostavi samo njeno > ime. Ne mogu da verujem! Meni se desavalo da zabrlja kod indeksne datoteke, ali da izbrise glavnu... Ako imas program koji to radi, rado bi ga pogledao.
clipper.146 nbatocanin,
> To se > desava kada u sred programa predete u neki drugi > direktorijum, sto se moze resiti stavljanjem punog path-a > za program, ali desava se i u drugim slucajevima koje je > tesko resiti. Jedan od takvih je kad naidem na deo za > stampanje tj. komande set device to printer. Onda debuger > poludi. Mozes u OPTIONS da postavis sve kataloge gde ti se nalaze programi, pa ces imati brojeve linija. Na primer: \BASE\SYS;\PROG\UK itd. Meni SET DEVICE lepo saradjuje sa dibagerom.
clipper.147 nbatocanin,
> Kod mene RELEASE savrseno dobro radi! Zasto uopste i koristite RELEASE?
clipper.148 nbatocanin,
> P.S. Mene, ustvari, interesuju samo funkcije za rad sa > misem. Kako da pokrenem misa u svojim aplikacijama? Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper biblioteku koja to omogucava (na primer, Flipper, DGE, ...). Drugi nacin je da sam pravis funkcije za komunikaciju.
clipper.149 nbatocanin,
> Ovo pise u knjizi. Po meni, ovaj parametar je > numerik i sadrzi redni broj sloga, kome onda pomocu > funkcije FIELD(red_br_polja) pristupam tj. editujem ga. Drugi parametar u funkciji koju poziva DBEDIT je redni broj KOLONE koja je trenutno aktivna, pa ce FIELD korektno raditi samo ako su u DBEDIT-u navedena REDOM polja datoteke. Najjednostavnije resenje je da definises niz odgovarajucih polja u proceduri u kojoj definises DBEDIT parametre i kasnije radis na sledeci nacin: ... PRIVATE Fields[n] Fields[1] = "IME" ... PRIVATE Column[n] Column[1] = "Left(IME, 20)" DBEDIT (...) Sada, ako su ti parametri funkcije MODE i INDEX, izraz Fields[Index] oznacava tekuce polje, a Column[Index] "sliku" polja na ekranu.
clipper.150 nbatocanin,
Mislim da mozes veoma lako da promenis GET sistem da radi kako ti odgovara - pogledaj datoteku GETSYS.PRG. Pozdrav, Nenad
clipper.151 bulaja,
*** new files *** \ibmpc\program\nf*.* Nanforum Toolkit je velika zbirka raznih funkcija za Clipper 5, a sve su date u souce kodu (Clipper, C ili ASM). Napisali su je (biblioteku) korisnici sa Compuserve-ovog Nantucket Foruma (technical support za Clipper), blah balh ... napisacu nesto vise ovih dana, posto sam upravo uploadnuo datoteke pa se zasluzeno odmaram sada ;). Spisak funkcija je poveci, evo ga u sledecoj poruci (nadam se da se niko nece ljutiti ;) zbog duge poruke, ali ovaj spisak se ne nalazi nigde u dokumentaciji vec sam ga ja skidao iz NG-a pa ce svima koristiti). Bulaja.
clipper.152 bulaja,
Nanforum Toolkit v2.0 ═════════════════════ Array ──────────────── FT_AADDITION() Add elements unique of source array to target array FT_AAVG() Average numeric values in an array FT_ADESSORT() Sort an array in descending order FT_AEMAXLEN() Find longest element within an array FT_AEMINLEN() Find shortest element within an array FT_AMEDIAN() Find middle value in array, or average of two middle values FT_ANOMATCHES() Find the number of array elements meeting a condition FT_AREDIT() 2 dimensional array editing function using TBrowse FT_ASUM() Sum the elements of an array FT_RESTARR() Restore a Clipper array from a disc file FT_SAVEARR() Save Clipper array to a disc file. ════════════════ Conversion ──────────────── FT_BYT2BIT() Convert byte to string of 1's and 0's FT_BYT2HEX() Convert byte to hexadecimal version of its binary value FT_D2E() Convert decimal to scientific notation FT_DEC2BIN() Convert decimal to binary FT_E2D() Convert scientific notation string to a decimal FT_ESCCODE() Convert Lotus style escape codes FT_HEX2DEC() Convert a hex number to decimal FT_INVCLR() Get the inverse of a color FT_NTOW() Translate numeric value to words FT_SQZN() Compress a numeric value into a character string FT_STOD() Convert a date string to a Clipper date data type FT_UNSQZN() Uncompress a numeric compressed by FT_SQZN() FT_XTOY() Convert from any data type to any other data type ════════════════ DOS/BIOS ──────────────── FT_CHDIR() Change the current directory FT_DEFAULT() Retrieve and optionally change the current default drive FT_DOSVER Return the current DOS major and minor version as a string FT_DSKFREE() Return the amount of available disk space FT_DSKSIZE() Return the maximum capacity of a fixed disk FT_FLOPTST() Test diskette drive status FT_HANDCNT() Count number of available DOS (not network) file handles FT_INP() Retrieve a byte from a specified I/O port FT_INT86() Execute a software interrupt FT_ISPRINT() Check printer status FT_ISSHARE() Determine if DOS "Share" is installed FT_MKDIR() Create a subdirectory FT_OUTP() Write a byte to a specified I/O port FT_PEEK() Retrieve a byte from a specified memory location. FT_POKE() Write a byte to a specified memory location FT_REBOOT() Force a warm or cold boot FT_RMDIR() Delete a subdirectory FT_SETDATE() Set the DOS system date FT_SETTIME() Set the DOS system time FT_SYSMEM() Determine the amount of conventional memory installed FT_TEMPFIL() Create a file with a unique name ════════════════ Database ──────────────── FT_FDEC() Return the number of decimals in a numeric (type "N") field. FT_FEMPTY() Determine if a field is empty, i.e., contains no value. FT_FEXIST() Check for the existence of a field. FT_FLEN() Return a field's length. FT_FNUM() Return a field's ordinal position given the field name. FT_FPLACE() Write a new value to a field. FT_FTYPE() Return a field's type, given field name or ordinal position FT_FVAL() Return the value of a field. FT_FVALLEN() Return the length of the value in a field. ════════════════ Date/Time ──────────────── FT_ACCTADJ() Adjust beginning or ending fiscal pd. dates to acctg. dates FT_ACCTMONTH() Return accounting month data FT_ACCTQTR() Return accounting quarter data FT_ACCTWEEK() Return accounting week data FT_ACCTYEAR() Return accounting year data FT_ADDWKDY() Return true number of days to add given number of workdays FT_CALENDAR() Display date/time calendar, find a date, return calendar dat FT_CIV2MIL() Convert usual civilian format time to military time. FT_DATECNFG() Set beginning of year/week for FT_ date functions FT_DAYOFYR() Return calendar, fiscal or accounting day data FT_DAYTOBOW() Calculate no. of days between date and beginning of week FT_DOY() Find number of day within year FT_EASTER() Return the date of Easter FT_ELAPMIN() Return difference, in minutes, between two mil format times. FT_ELAPSED() Return elapsed time between two days and/or times FT_ELTIME() Compute difference between times in hours, minutes, seconds. FT_FDAY() Return first day of the month FT_LDAY() Return last day of the month FT_MADD() Add or subtract months to/from a date FT_MIL2CIV() Convert time in military format to civilian format. FT_MIL2MIN() Convert time in military format to number of minute of day. FT_MIN2DHM() Convert numeric minutes to days, hours and minutes. FT_MIN2MIL() Convert minute of day to military format time. FT_MONTH() Return Calendar or Fiscal Month Data FT_QTR() Return Calendar or Fiscal Quarter Data. FT_SYS2MIL() Convert system time to military time format. FT_WEEK() Return calendar or fiscal week data FT_WORKDAYS() Return number of work days between two dates FT_WOY() Find number of week within year FT_YEAR() Return calendar or fiscal year data ════════════════ Environment ──────────────── FT_COM3OR4() Enable use of COM3 and/or COM4 on IBM/PC compatables. FT_DIR2DB() Create .DBF of directory files, using DOS filespec FT_EXIST() Test for existence of drive and/or subdirectory FT_GETE() Return the entire current environment FT_LINKED() Determine if a function was linked in FT_ORIGIN() Report the drive, path and filename of the executing program FT_RESTSETS() Restore status of all SET command settings FT_SAVESETS() Save the status of all the SET command settings FT_SETCENTURY() Check/Set the CENTURY Setting FT_TREE() Locate all directories and subdirectories on a drive FT_WHEREIS() Locate all occurrences of a filespec on a drive ════════════════ File I/O ──────────────── FT_DFCLOSE() Close file displayed by FT_DISPFILE() FT_DFSETUP() Set up parameters for FT_DISPFILE() FT_DISPFILE() Browse a text file FT_FEOF() Determine when end of text file is encountered FT_FGOBOT() Go to the last record in a text file FT_FGOTO() Move record pointer to specific record in a text file FT_FGOTOP() Go to the first record in a text file FT_FLASTREC() Determine the no. of records in the currently selected text FT_FREADLN() Read a line from the currently selected text file FT_FRECNO() Return the current record number of a text file FT_FSELECT() Select a text file workarea FT_FSKIP() Move the record pointer to a new position in a text file FT_FUSE() Open or close a text file for use by the FT_F* functions ════════════════ Game ──────────────── FT_PEGS() FT_PEGS GAME (all work and no play...) ════════════════ Keyboard/Mouse ──────────────── FT_ALT() Determine status of the Alt key FT_CAPLOCK() Determine and optionally change the status of CapLock key FT_CTRL() Determine status of the Ctrl key FT_MBUTPRS() Retrieve button press status FT_MBUTREL() Get mouse button release information FT_MCURSOR() Set the mouse cursor FT_MDBLCLK() Return true if a double click was detected FT_MDEFCRS() Define the mouse cursor FT_MGETPOS() Get mouse cursor position and button status FT_MGETX() Get mouse cursor row position FT_MGETY() Get mouse cursor column position FT_MHIDECRS() Decrement internal mouse cursor flag and hide mouse cursor FT_MINREGION() Test if the mouse cursor is in the passed region FT_MMICKEYS() Get mickeys FT_MRESET() Reset mouse driver and return status of mouse FT_MSETPOS() Position the mouse cursor FT_MSHOWCRS() Increment internal cursor flag and display mouse cursor FT_MXLIMIT() Set vertical bounds of mouse travel FT_MYLIMIT() Set horizontal bounds of mouse travel FT_NUMLOCK() Return status of NumLock key FT_PRTSCR() Enable or disable the Print Screen key FT_PUTKEY() Stuff a keystroke into the keyboard buffer FT_SCANCODE() Wait for keypress and return keyboard scan code FT_SETRATE() Set the keyboard delay and repeat rate on PC/AT & PS/2 FT_SHIFT() Determine status of shift key FT_SINKEY() Replacement for INKEY() that tests for SET KEY procedures ════════════════ Math ──────────────── FT_GCD() Calculate greatest common divisor of two numbers FT_NETPV() Calculate net present value FT_RAND1() Generate a random number FT_ROUND() Rounds a number to a specific place ════════════════ Menus/Prompts ──────────────── @...PROMPT Define a menu item for use with MENU TO FT_ACH2TB() Replace ACHOICE() with a Tbrowse object FT_ADDER() Pop up a simple calculator FT_BLINK() Display a blinking message on the screen FT_BRWSWHL() Browse an indexed database limited to a while condition FT_CLRSEL() User Selectable Colour Routine FT_DISPMSG() Display a message and optionally waits for a keypress FT_FILL() Declare menu options for FT_MENU1() FT_MENU1() Pulldown menu system FT_MENU2() Vertical lightbar menu FT_MENUTO() Execute light bar menu using prompts created with FT_PROMPT( FT_PENDING() Display same-line pending messages after a wait. FT_PICKDAY() Picklist of days of week FT_PROMPT() Define a menu item for use with FT_MENUTO() FT_XBOX() Display a self-sizing message box and message MENU TO Execute light bar menu using prompts created with @...PROMPT ════════════════ NetWare ──────────────── FT_ENDCAP() Cancel a specific NetWare print queue capture FT_LOGOUT() Logout from all currently connected NetWare file servers FT_NOVDMP2() Determine Novell server's dynamic memory area 2 availability FT_NOVPURGE() Purge all deleted files on a Novell server FT_NWLSTAT() Return the current Novell NetWare logical station number FT_NWSEMCLOSE() Close a NetWare semaphore FT_NWSEMEX() Examine a NetWare semaphore's value and open count FT_NWSEMLOCK() Perform a semaphore "lock" FT_NWSEMOPEN() Open or create a NetWare semaphore FT_NWSEMSIG() Signal a NetWare semaphore (increment) FT_NWSEMWAIT() Wait on a NetWare semaphore (decrement) FT_NWUID() Return the current Novell NetWare User ID FT_PFLUSH() Flush a NetWare capture buffer FT_TTSABORT() Abort explicit and implicit NetWare TTS transactions FT_TTSAVAIL() Check whether default Novell file server supports TTS FT_TTSBEGIN() Begin explicit transaction under NetWare's TTS FT_TTSEND() End explicit or implicit transaction under NetWare's TTS FT_TTSSTAT() Verify if TTS transaction has been written to disk ════════════════ String ──────────────── FT_AT2() Find position of the nth occurrence of a substring FT_BITCLR() Clear (reset) selected bit in a byte FT_BITSET() Set selected bit in a byte FT_BYTEAND() Perform bit-wise AND on two ASCII characters (bytes) FT_BYTENEG() Perform bit-wise negation on an ASCII character FT_BYTENOT() Perform bit-wise NOT on an ASCII character (byte) FT_BYTEOR() Perform bit-wise OR on two ASCII characters (bytes) FT_BYTEXOR() Perform bit-wise XOR on two ASCII characters (bytes) FT_FINDITH() Find the "ith" occurrence of a substring within a string FT_ISBIT() Test the status of an individual bit FT_ISBITON() Determine the state of individual bits in a number FT_METAPH() Convert a character string to MetaPhone format FT_NOOCCUR() Find the number of times one string occurs in another FT_PCHR() Convert printer control codes FT_PROPER() Convert a string to proper-name case ════════════════ Video ──────────────── FT_ADAPTER() Report the type of video adapter installed FT_CLS() Clear screen FT_GETMODE() Get the video mode FT_GETVCUR() Return info about the cursor on a specified video page FT_GETVPG() Get the currently selected video page FT_RESTATT() Restore the attribute bytes of a specified screen region. FT_REVATTR() Reverse colors of specified screen coordinates FT_REVCHR() Reverse the color of a single character on the screen FT_RGNSTACK() Push or pop a saved screen region on or off the stack FT_RSTRGN() Restore region of the screen saved with FT_SAVRGN() FT_SAVEATT() Save the attribute bytes of a specified screen region. FT_SAVRGN() Save a screen region for later display FT_SETATTR() Change color attributes of screen region FT_SETMODE() Set the video mode FT_SETVCUR() Set the cursor position on a specified video page FT_SETVPG() Set the current video page FT_SHADOW() Draw a non-destructive shadow on the screen FT_VIDSTR() Display string on screen in specified attribute FT_WRTCHR() Display character on screen ════════════════
clipper.153 hercog,
Meni uglavnom blokira kod release promenljive u koju je snimljen ekran. NPR: save screen to ekran ................ ........... ............ restore screen from ekran release ekran <- ovde blokira pozdrav Hercog
clipper.154 hercog,
A sto je jos veci stos , glavnu datoteku ne izbrise uvek vec samo ponekad, sto znaci da nekolko puta sve uradi ok, a sledeci put je zezne. pozdrav Hercog
clipper.155 hercog,
Koja je najbolja biblioteka za Clipper 5.01 koja mu daje naredbe za grafiku, gde se moze nabaviti i po kojoj ceni. pozdrav Hercog
clipper.156 bulaja,
│save screen to ekran │................ │........... │............ │restore screen from ekran │release ekran <- ovde blokira └─── A kako je deklarisana promenjljiva [ekran] (public, local, static,...)? Ako je slucajno static onda nije ni cudo sto se zaglavljuje, a ako je local (ili private) onda ti release i ovako nicemu ne sluzi.
clipper.157 ppekovic,
>> A sto je jos veci stos , glavnu datoteku ne izbrise uvek >> vec samo ponekad, sto znaci da nekolko puta sve uradi ok, >> a sledeci put je zezne. U BGD-u znam puno ljudi koji rade sa novim clipper-om, pratio sam i clipper conf. na BIX-u, i cuo sa jos mnogo strana, a i sam naisao na neke bug-ove clipper-a 5.01, ali niko se nije zalio na ono sto se ti zalis. Probaj da nadjes neku logiku kada se to desava pa da vidimo zbog cega se desava, jer kvarovi tipa, zeza po nekad, su znas i sam, najgori. S druge strane, uzrok problema moze biti i cache program npr., ili slicni rezidentni programi. Paya
clipper.158 vkrstonosic,
>> save screen to ekran >> ................ >> ........... >> ............ >> restore screen from ekran >> release ekran <- ovde blokira Koristi ekran=savescreen(1,1,23,79) ....... restscreen(1,1,23,79, ekran) Ovo radi provereno i ne pravi nikakve probleme, a i moguće je snimiti samo deo ekrana.
clipper.159 ndragan,
/ Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper biblioteku FoxPro sam od sebe radi sa mišem, ako je učitan drajver. No frx.
clipper.160 bulaja,
│ekran=savescreen(1,1,23,79) └─── ^ ^ ^^ (0,0,24,79)
clipper.161 vili,
> > Postoje najmanje dva resenja. Prvo, da nadjes neku Clipper > biblioteku koja to omogucava (na primer, Flipper, DGE,...). Gde da nadjem Flipper, DGE,... . Jel to radi sa 5.01? > Drugi nacin je da sam pravis funkcije za > komunikaciju. To ne bih. Nemam vremena da radim nesto sto je neko vec uradio. _ O /|\ / \
clipper.162 vili,
Imam UI. Koristio sam ga neko vreme, ali sam shvatio da mi ne pomaze mnogo. Kasnije sam ga koristio samo za pravljenje maski za unos. Sad je zipovan i cami na disketi. Mozda su neki drugi razvojni sistemi bolji, ali ako su kao UI onda slaba vajda od njih (mislim da je QuickSilver neki takav sistem za Clipper,a mozda i nije?). (UIF.zip = 294Kbyte) _ O /|\ / \
clipper.163 vkrstonosic,
>> (0,0,24,79) Oops, navika ;) uglavnom ne koristim ceo ekran.
clipper.164 makas,
> A sto je jos veci stos , glavnu datoteku ne izbrise uvek > vec samo ponekad, sto znaci da nekolko puta sve uradi ok, > a sledeci put je zezne. Da ne koristiš slučajno DOS 4.00 i FASTOPEN? Kod njega je pravio slične brljotine i Clipper '87. Ako je to u pitanju izbaci FASTOPEN i sve će biti u redu. Pozdrav █▀▀▀▀▀▄ ▄▀▀▀█ █▄▀▀ ▄▀▀▀█ ▄▀▀ █ █ █ ▀▄▄ █ █▀▄▄ ▀▄▄ █ ▀▄▄▀▀▄ ▄▄▄ ▄▄▄ ▄▄ ▄▄ ▄▄ ▄ ▄ ▄JILL▄▄▄▄▀
clipper.165 sveta,
││ ekran=savescreen(1,1,23,79) │ └─── ^ ^ ^^ │ (0,0,24,79) └───── A sta se desava sa 0,60 ; 0,61 ; 0,62 ? Meni ih izbrise kod prvog GET-a :(.
clipper.166 nbatocanin,
> Koristi ekran=savescreen(1,1,23,79) Pogodi kako se pretprocesira SAVE SCREEN TO Ekran!
clipper.167 nbatocanin,
> Probaj da nadjes neku logiku kada se to desava pa > da vidimo zbog cega se desava, ... U tome imas nasu nepodeljenu podrsku!
clipper.168 nbatocanin,
> Koja je najbolja biblioteka za Clipper 5.01 koja mu daje > naredbe za grafiku, gde se moze nabaviti i po kojoj ceni. Ne znam koja je najbolja, ja koristim DGE (bice tekst u novim "Racunarima"). Cena je VRLO priblizno oko 200-300$, nabavljena je preko firme u SAD. Na sajmu u Novom Sadu ovu biblioteku je nudila firma SoftWell (021/51-999). Gledao sam papire za biblioteku Flipper i mislim da je vredi pogledati.
clipper.169 nbatocanin,
> Gde da nadjem Flipper, DGE,... . Jel to radi sa 5.01? 021/51-999 SoftWell, Da.
clipper.170 vkrstonosic,
>>> Koristi ekran=savescreen(1,1,23,79) >> >> Pogodi kako se pretprocesira SAVE SCREEN TO Ekran! Pretpostavljam :) Jako često koristim savescreen i nikada do sada nisam imao nikakvih problema.
clipper.171 dvidovic,
Ima li ŰOneko iskustva sa "Siserom" (ili kako vec bese) razv_.ůÚ]ojnim sistemom za Clipper? Ovo pitam u ime drugara, koji bi da proba to cudo, ali o njemu nista ne zna. Vredi li truda, para, etc. Hvala unapred! Pozdrav Dule
clipper.172 nbatocanin,
> A sta se desava sa 0,60 ; 0,61 ; 0,62 ? Meni ih izbrise > kod prvog GET-a :(. Postavi na pocetak programa SET SCOREBOARD OFF. Time iskljucujes da ti se ispisuje status Insert/Overtype.
clipper.173 nbatocanin,
> Znam da to tako sada radi, ali sam rekao da bi bilo bolje > drugacije, tj. onako kako je radio clipper '87 (?). Jesi li bas siguran? Ja upravo probao i - neces verovati - i Summer '87 radi isto ovako! Eto neotkrivenog gremlinija u vasim starim programima! Pozdrav, Nenad
clipper.174 hercog,
Nikako ne mogu da provalim kada se to desi (i zbog cega). Jedino me program pozdravi sa necim kao CORUPTION DBF SPISAK.DBF. A sto je najsmesnije clipper me zevzeci sa samo 2 datoteke,mada se u tom delu programa indeksira jos jedno 6-7 datoteka, a cli- pper uvek zajebe datoteku SPISAK.DBF ili SPPR.DBF. Vise mi nista nije jasno. pozdrav Hercog
clipper.175 zkrstic,
Aloooooooo, Skidajte onaj TS.ZIP iz DEMO direktorijuma da neko ne vidi, slučajno. Postoji opasnost: 1. Da vidi neki stranac, pa da pomisli kako ovde niko Clipper vido' nije 2. Da neko, ko želi da uči Clipper odustane od istog, jer su mu mogućnosti vrlo skromne 3. Neko može slučajno da vidi program pa da umre od smeha. Pozdrav, čeljko P.S. Tako mi i treba kad sam hteo da špijuniram konkurentske programe P.P.S. Umesto da leeepoo chatujem 20 minuta, ja skidam kojekakve kara- kondžule.
clipper.176 lazo,
**> Drugi parametar u funkciji koju poziva DBEDIT je redni **> broj KOLONE koja je trenutno aktivna, pa ce FIELD **> korektno raditi samo ako su u DBEDIT-u navedena REDOM **> polja datoteke. Najjednostavnije resenje je Ono što meni treba i jeste broj trenutno aktivne kolone (dobro to ne isključuje silne if-ove koji će onda ukazivati na određeno polje). Meni je problem što sam rješavanjem problema sa uvećavanjem I+1 na pritisak kursorske strlice dobijao trenutno aktivnu kolonu. Problem je kada se drži konstantno kurs. strelica pa kursor ode polje više nego što je u stvari uvećana vrijednost promjenljive I. Tako umjesto da dobijem masku za ispravku tekuće, ja dobijem masku prethodne kolone na mjestu aktivne (trebalo bi da je aktivna, ali nije). E moj je problem što ja ne znam kako da dođem do vrijednosti tog drugog parametra uopšte. **> Sada, ako su ti parametri funkcije MODE i INDEX, izraz **> Fields[Index] oznacava tekuce polje, a Column[Index] **> "sliku" polja na ekranu. Vjerovatno bi dosad napravio nešto slično što si mi predložio kad bih ja znao kako uopšte da dođem do odgovarajućeg parametra, tj. do njegove vrijednosti. Zato bih te molio da mi ili detaljnije objasniš kako se preuzima vrijednost iz tog drugog parametra uopšte ili da pošalješ uz poruku kratak prg (kompletan bez ...) iz koga bi ja onda shvatio kako se to radi. Mickey.
clipper.177 dpaun,
Clipper braco i sestre! Da li je neko probao u 5.01 da funkcijom ASORT() sredi fajlove u direktorijumu, ali prema extenziji? dPaun
clipper.178 nbatocanin,
Nisam mogao da nadjem neki jednostavan primer zato sto dosta dugo ne koristim DBEDIT funkciju. Ipak, saljem ti nesto i nadam se da ce ti pomoci. Pogledaj jos jednom u uputstvu. Pozdrav, Nenad dbed.prg
clipper.179 nbatocanin,
PROC Main d := Directory ("*.*") aSort (d,,, { |x, y| Ext(x[1]) > Ext(y[1]) } ) // ... RETURN FUNC Ext (n) RETURN IF ( (i := At (".", n)) <> 0, SubStr (n, i+1), "") Moze ?
clipper.180 mandrejevic,
> Nanforum Toolkit v2.0 > ═════════════════════ ^^^^ Nece da radi sa Clipperom 5.0 Rev.1.03 ? Ili bar nece od prve. .RTLink prijavljuje : UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: SYMBOL FIRST REFERENCE ------ --------------- 'CLIPPER501' NANFOR.LIB Pozdrav milan (mandrejevic)
clipper.181 hercog,
Jos jedna problem sa Clipperom 5.01: Program sam razbio na 6 datoteka, kako bi se lakse snalazio. U prvom programu se nalazi lista naredbi: set procedure to pr1 set procedure to pr2 set procedure to pr3 set procedure to pr4 set procedure to pr5 Ali clipper prevede samo do pr4. Ako zamenim mesta npr : set procedure to pr5 set procedure to pr4 onda se kompajler zablokira. Probao sam sve moguce kombinacije i u svakom slucaju mi se desavalo isto. pozdrav Hercog
clipper.182 vkrstonosic,
>> Program sam razbio na 6 datoteka, kako bi se lakse >> snalazio. U prvom programu se nalazi lista naredbi: >> >> set procedure to pr1 >> set procedure to pr2 >> set procedure to pr3 >> set procedure to pr4 >> set procedure to pr5 Zašto uopšte tako radiš? Ako je program podeljen u više datoteka, dovoljno je da u glavnoj (koju prvu kompajliraš), staviš: do pr1 do pr2 ... Ako ne postoje procedure pod tim imenima, kompajliraće ih sve redom. Ovo redovno koristim i programi su mi razbijeni na dosta delova.
clipper.183 ndragan,
/ set procedure to pr4 / onda se kompajler zablokira. Da nema on neka ograničenja - koliko imena (i to baška lokalna, baška globalna) ti se dotle nakupi? Koliko ti je duži pr4 od pr5 ili obratno? Nisam poterao kliper već 4 godine, ali...
clipper.184 bulaja,
│set procedure to pr1 │... └─── A cemu ti sluzi #include ? Ili sto ne koristis make?
clipper.185 nbatocanin,
Interesuje me zašto ne koristite neki MAKE? Da li znate koliko to štedi vreme i olakšava stvari?
clipper.186 vkrstonosic,
>> Interesuje me zašto ne koristite neki MAKE? Da li znate koliko to >> štedi vreme i olakšava stvari? Razlog je vrlo jednostavan, spremam se da to počnem već godinu dana, problem je u tome što je uvek danas, sutra nikako ne dolazi ;)
clipper.187 dpaun,
Clipper braćo i sestre! Evo malog primera šta mogu kad se dvoje spoje, tj. GET i WHEN. dPaun get.zip
clipper.188 lazo,
**> Nisam mogao da nadjem neki jednostavan primer zato sto **> dosta dugo ne koristim DBEDIT funkciju. Ipak, saljem ti **> nesto i nadam se da ce ti pomoci. Pogledaj jos jednom u **> uputstvu. Thanks, pomoglo je.
clipper.189 dnikolic,
Zna li ko po kom algoritmu rade indexi u Cliperu i Dbase-u? dn
clipper.190 dejanr,
>> Zna li ko po kom algoritmu rade indexi u Cliperu i Dbase-u? Imaš strukturu NTX datoteka u poruci 5.46, ako to nešto pomaže. Više podataka o tome u knjizi "Clipper Programming Guide", verovatno ima i na drugim mestima. Koriste se B-stabla, koliko se sećam.
clipper.191 dejanr,
Imao sam jednu bazu sa jako puno polja, čije sam sadržaje unosio sa @ pozic1 GET polje1 VALID ff (polje1, parametri) @ pozic2 GET polje2 VALID ff (polje2, parametri) @ pozic3 GET polje3 VALID ff (polje3, parametri) itd ff je nekakva funkcija koja određuje da li uneta vrednost zadovoljava uslove da se prihvati, u zavisnosti od parametara. Bilo je, kako rekoh, mnogo polja sa dugačkim imenima, pa nije bilo baš slatko stalno kucati ono ff (poljeNN) tj. još jednom prepisivati ime polja koje je svega nekoliko znakova levo. Najzad sam napravio makro u editoru koji to kao uradi. Zanima me ima li neko "regularno" rešenje u Clipperu, da se kaže nešto kao VALID ff (ovo_polje, parametri) i da se to onda odnosi na polje koje je u toj liniji unošeno?
clipper.192 kanda,
>> Bilo je, kako rekoh, mnogo polja sa dugačkim imenima, pa nije bilo >> baš slatko stalno kucati ono ff (poljeNN) tj. još jednom prepisivati >> ime polja koje je svega nekoliko znakova levo. Najzad sam napravio >> makro Pa, ako je problem u imenu, funkcija sama moze da zakljuci koje polje se upravo unosi. pozove se readvar() i ona vrati ime polja koje se unosi. evo naprimer, ovde VALID funkcija centrira tekst u polju : a := b := space(12) @ 2,5 get a valid pera() @ 4,5 get b valid pera() read function pera local r := readvar() &r := padc(alltrim(&r), 12) return .t.
clipper.193 majkl,
TRHelp za READVAR() kaže: Determines the name of the curent GET or MENU variable. Returns the variable name as a character string. Ovo rešava tvoj prblem, mada se sve ponovo svodi na jedan makro :)) Pozdrav, Majkl
clipper.194 nbatocanin,
Možeš i sa: FOR i := 1 TO n Tmp := "polje" + AllTrim (Str (i,2,0)) @ i,0 GET &Tmp VALID ff () NEXT Naravno, ako se polja zovu polje1, polje2, ...
clipper.196 erol,
Pitanje za sve Clipper gurue. Koristim Clipper : S87 verziju i ne mogu da rijesim sljedeci problem: Prilikom formiranja i otvaranja novog indexa (nove ind. datoteke) na tekucoj DBF datoteci, zatvore se indexi koji su tu vec bili jer ne mogu dobiti informaciju kako se zovu vec otvvorene NTX datoteke.. Dakle pitanje je : Kako saznati ime indexne datoteke koja je aktivna (otvorena ) uz tekucu DBF datoteku ? Ili : Kako dodati jos jedan NTX file u listu vec otvorenih NTX-ova, a da se ovi prethodni ne zatvore ? HHitno je !!!!! ..
clipper.197 dpaun,
Pogledaj detaljno naredbu SET ORDER TO. dPaun
clipper.198 radunovic,
Imam problema u radu sa dbeditom. Stavio sam ga u program i ponasa se vrlo cudno(bar za mene:). Kada prvo udjem u mod za unosenje podataka (gomila SAY i GET naredbi) i izadjem na bilo koji nacin, bilo da unesem nesto, bilo samo ESC i udjem u dbedit on radi. A ako ne udjem u mod za unosenje(u kome inicijalizujem neke interne promenjive i nista vise) kod dbedita program se prekine i javi: Error BASE/1005 No exported variable SKIPBLOCK Called from _skipblock(0) Called from dbedit(0) Called from ... <- Ovde idu moje procedure U cemu je stvar? Hitno mi je! I jos jedno pitanje u vezi dbedita. Mogu li da kao zaglavlje, umesto imena polja napisem proizvoljne stringove(eventualno u 2 reda). I koji su ulazni parametri procedure koju poziva dbedit? Boki PS. Jos jedno pitanje, koliko naplacujete pisanje programa?
clipper.199 radunovic,
Odustao sam od rada sa DBEditom i presao na TBrowse. Koje su sve funkcije koje mogu da upotrebljavam i kako da dobijem da mi se oboji ceo record a ne samo jedno polje. Kako da iskljucim kursor ? Unapred zahvalan Boki
clipper.200 nkbog,
U Nanforum Alatima postoji program koji računa dan u godini za uskrs po gregorijanskom kalendaru. Evo jednog programčića koji to isto radi, samo za julijanski kalendar., t.j. za pravoslavni uskrs. Program je napisao tandem TiBerije (T=algoritam, B=kodiranje, tol'ko je bilo teško ;)), a baziran je na sličnom BASIC programu iz knjige Srpski Kalendar (ili nešto slično). NB. uskrs.prg
clipper.201 erol,
Hvala na paznji, ali mislim da nisi bas najbolje shvatio. Set order mogu koristiti ako je doticna indexna datoteka vec u listi otvorenih indexa. Ali ako sam je tek kreirao sa INEX ON ...TO ind.ntx, tada set order ne pomaze (bar ja tako mislim) . Pitanje ostaje otvoreno , a ja pocinjem da se snalazim na neki nacin !!! Hvala. [7m [5m Erol [0m
clipper.202 banex,
>> Dakle pitanje je : Kako saznati ime indexne datoteke koja je >> aktivna (otvorena ) uz tekucu DBF datoteku ? Ako imaš podatak kako se zovu indexi uz koju datoteku, tada si na konju. Postoji mogućnost da naredba SET INDEX TO koristi i mem promenjljive. Dakle nešto u ovom fazonu... index1 = "prvi_ntx" index2 = "drugi_ntx" SELE 1 USE baza prvi_ntx, drugi_ntx INDEX ON <expresion> TO <novi_ntx> SET INDEX TO (index1), (index2), novi_ntx Nisam našao funkciju koja može da vrati ime indexa ako je on odranije nepoznat. CU! -BANE-
clipper.203 nbatocanin,
Što se tiče TBrowsa, ima previše stvari za ispričati. Pogledaj tekst u "Računarima" o objektima, a imaš sve što ti treba i u NG-u za Clipper. Ceo slog možeš obojiti sa ColorRect - pogledaj NG za objekte.
clipper.204 pedjad,
HPPozdrav svim Clipper-asima. Tek sam od nedavno poceo da se aktivno bavim sa Clipperom, ali ima tu jos nekih stvarcica koje mi nisu jasne. Npr. zasto mi javlja kod naredbe REPLACE - Type mismatch. To mi se desava kada sam mu stavio 22 polja za replace , dok mi je sa tri radio OK, pa me zanima kako da to resim i kako bih mogao da ako imam recimo 30 polja za unos podataka to da izvedem. Inace se nemojte smejati ako sam nesto 'lupio' :). Eto toliko za pocetak, a kasnije ce biti sve vise i vise i vise... pitanja od mene.:)
clipper.205 nbatocanin,
čali mi se drug da ima problema sa Clipper-om S'87 u mreži: mada je, kako kaže, preduzeo sve potrebne mere, vrlo često mu program iskače sa "Index File corrupted". Ima li neko slična iskustva?
clipper.206 dejanr,
>> mada je, kako kaže, preduzeo sve potrebne mere, vrlo često mu >> program iskače sa "Index File corrupted". Ima li neko slična iskustva? Imam, do neba! Na Novell-u 2.12 bilo mnogo, na Novell-u 2.15 jako malo. Nikad se nije dešavalo ako je korišćeno USE...EXCLUSIVE.
clipper.207 draganf,
Najvjerovatnije si pokušao u nimeričko polje upisati karakter string ili obratno. A što se tiče toga da li nešto "lupio" svi smo mi imali svojih bisera, prema tome samo napred sa problemima Dragan
clipper.208 dpaun,
// program iskače sa "Index File corrupted" Clipper braćo i sestre, Nemam iskustva sa mrežom, ali nekome će, možda, koristiti sledeće (mene je prosto izluđivalo dok sam bio u Clipper pelenama): navedenu poruku dobijao sam zbog toga što sam otvarao više DOS fajlova (baza + indeksi) nego što je sa FILES u CONFIG.SYS bilo određeno, a sa "set clipper" u AUTOEXEC.BAT preneto aplikaciji. Prevideo sam da su i indexi DOS fajlovi, kao i svaki drugi. I tako, krene program, otvori koliko mu je dopušteno, dođe na red sledeći fajl (obično index), programu se smrkne i crkne, a zadnje reči su mu upravo one citirane. dPaun
clipper.209 nbatocanin,
> Npr. zasto mi javlja kod naredbe REPLACE - Type mismatch. Ne verujem da ima veze sa brojem polja - verovatno pokušavaš da upišeš broj u polje definisano kao CHARACTER ili nešto slično.
clipper.210 pedjad,
>> Najvjerovatnije si pokusao u nimericko polje upisati >> karakter string ili obratno. Nije do toga jer mi i ako nista ne upisem javlja isto, a i takodje sam pokusao da stavim da mi sve bude CHAR duzine 10 i opet isto.:( Pedja
clipper.211 draganf,
Šta musliš da pošalješ taj prg pa da vidimo. Dragan
clipper.212 vaca,
>> Npr. zasto mi javlja kod naredbe REPLACE - Type mismatch. >> To mi se desava kada sam mu stavio 22 polja za replace , >> dok mi je sa tri Pravo da ti kažem, ja clipper nekoristim ali sam imao sličan problem u foxbase+-u.Pošto je su u pitanju bili novi podaci koji treba da se upišu u .DBF datoteku ispred REPLACE... sam dodao append blank, probaj možda je u tome problem. Vaca
clipper.213 hercog,
Nešto mi nije jasno , dosta često mi se desi da se neka datoteka sama od sebe izbriše, tj da nestane njen sadržaj i struktura, a ostane samo ime na hardu. Dešavalo mi se to i sa datotekama koje se indeksiraju, a i sa onim drugim. Clipper tada prijavljuje CORUPTION DETECTED : DATOTEKA.DBF i gotovo. Da li je neko imao sličnih problema? Hercog
clipper.214 hercog,
Uh zaboravih u prethodnoj mojoj poruci da kažem: u pitanju je clipper 5.01 Hercog
clipper.215 radunovic,
Opet ja za TBrowse. ColorRect mi oboji ceo slog ali samo polja pa mi ostane iseckano. Kako bi mogao da dobijem kontinualnu liniju preko celog ekrana(posto mi konkretno ne treba pojedino polje vec ceo slog). Probao sam da muckam sa bojama i da promenim boje kolona kad pri stabilize dodjem do odgovarajuce reda ali on mi oboji ceo TBrowse u tu boju. Sta da radim?
clipper.216 gvuckovic,
> Nešto mi nije jasno , dosta često mi se desi da se neka datot > sama od sebe izbriše, tj da nestane njen sadržaj i struktura, > ostane samo ime na hardu. Dešavalo mi se to i sa datotekama > koje se indeksiraju, a i sa onim drugim. Clipper tada prijavl > CORUPTION DETECTED : DATOTEKA.DBF i gotovo. Da li je neko > imao sličnih problema? Onak usput, kad si zadnji put skanirao disk od virusa. Goran..
clipper.217 pjankovic,
> Nesto mi nije jasno , dosta cesto mi se desi da se neka > datoteka sama od sebe izbrise, tj da nestane njen sadrzaj > i struktura, a ostane samo ime na hardu. Desavalo mi se to > i sa datotekama koje se indeksiraju, a i sa onim drugim. > Clipper tada prijavljuje CORUPTION DETECTED : DATOTEKA.DBF > i gotovo. Da li je neko imao slicnih problema? Desilo mi se nesto slicno sa verzijom Summer '87. Radi se o slijedecem: Operater je htio da obrise jedan slog iz baze (DELETE pa PACK). Po izvrsenoj operaciji vratio se u masku za unos podataka gdje je stajalo "UNOSITE SLOG BROJ 1". Naravno, nastala je panika i odmah su me zvali. Pregledom pomocu programa "Norton utillites" dosao sam do zakljucka da su svi slogovi i dalje prisutni na disku, ali da u zaglavlju baze stoji da je broj slogova 0. Na svu srecu, redovno su radili COMPRESS pa sam uspio da povratim oko 80% slogova, a ostali su naravno bili razbacani svud po disku. Odmah sam posumnjao da je operater greskom ukljucio brisanje svih slogova (ZAP), pa i ako on to porice ja sam jos uvijek tog ubjedjenja. Ne mogu da povjerujem da bi u CLIPPER-u mogla da se desi jedna tako katastrofalna stvar. Pedja
clipper.218 bulaja,
│Nesto mi nije jasno , dosta cesto mi se desi da se neka datoteka │sama od sebe izbrise, tj da nestane njen sadrzaj i struktura, a │ostane samo ime na hardu. └─── Meni su se desavale neke slicne misteriozne gluposti i na kraju sam shvatio kada iz zasto (sto ne mora znaciti da je i kod tebe isti slucaj) - posle nekih ERASE trebalo je uraditi odmah COMMIT inace bi nastale nekakve haos brljotine i u obrisanoj (posle bi je povratio sa undelete pa gledao) a i u drugim bazama. Ovo mi se sve desavalo na S87, na 5.01 nisam probao (a i poceo sam da stavljam COMMIT i iza svakog REPLACE ;).
clipper.219 hercog,
**> Onak usput, kad si zadnji put skanirao disk od virusa. 14.02.1992 Hercog
clipper.220 vkrstonosic,
>> Operater je htio da obrise jedan slog iz baze (DELETE pa PACK). 1. zašto posle delete koristiš odmah pack ? Pack je dovoljno uraditi samo jednom u toku rada, ja ga obično radim na samom početku. Da li si probao pack na malo većoj bazi, to može i da poootraje. >> Odmah sam posumnjao da je operater greskom ukljucio brisanje svih >> slogova (ZAP), pa i ako on to porice ja sam jos uvijek tog ubjedjenja. 2. Kako i zašto si dozvolio operatoru da koristi naredbu Zap ??? 3. Moj savet ti je da vodiš lepo Log svega što se radi, pa onda lepo odeš u firmu i kažeš: Dana 11.02.1992, u 10:56:43 je neko (i to neko može da se proverava) je uradio to i to i tako obrisao podatak.
clipper.221 pjankovic,
>>> Operater je htio da obrise jedan slog iz baze (DELETE pa > PACK). > > 1. zasto posle delete koristis odmah pack ? Pack je > dovoljno uraditi samo jednom u toku rada, ja ga obicno > radim na samom pocetku. Da li si probao pack na malo vecoj > bazi, to moze i da poootraje. > Slazem se. >>> Odmah sam posumnjao da je operater greskom ukljucio >>> brisanje svih slogova (ZAP), pa i ako on to porice ja > sam jos uvijek tog ubjedjenja. > > 2. Kako i zasto si dozvolio operatoru da koristi naredbu > Zap ??? > Pa radilo se o jednokorisnickom programu sa kojim je i bukvalno radio samo jedan covjek (mozda izraz operater nije najpogodniji). Mislim da je kontrolno pitanje i/ili lozinka razumna zastita od nezeljenog brisanja svih podataka. Pedja
clipper.222 pjankovic,
Zanima me na koji nacin se u bazi mogu naci slogovi koji kroz program nikako nisu mogli biti uneseni. Naime, evo o cemu se radi: Svojevremeno sam u jednoj manjoj opstini radio program za stampanje birackih spiskova. Posto nisu imali mrezu, a zbog kratkoce vremena, podaci su unoseni na nekoliko racunara, da bi po zavrsetku posla sve baze bile spojene u jednu. Tada sam na desetak mjesta primijetio slogove sa besmislenim sadrzajem. Numericka polja su imala vrijednost 0, a karakter polja neki sasvim slucajan sadrzaj. Ovakav sadrzaj se nije mogao unijeti normalno kroz program. Redni broj, npr, je automatski postavljan na prvi sljedeci, a vrijednosti su mogle biti samo >0. Ovakvi slogovi nisu bili grupisani vec sasvim slucajno razbacani. Otpada mogucnost da je neko usao u DBU i tamo vrsljao. Nije, naravno, bilo tesko obrisati ove slogove, ali me zanima da li neko mozda ima ideju kako se ovo desilo. Mozda hard disk, mozda virusi, mozda... Pedja
clipper.223 nbatocanin,
Pošto kontrolišeš celu situaciju, možeš da radiš šta ti padne na pamet. U principu treba samo da vratiš stanje posle skaniranja tastature. Evo primera: WHILE .T. Ch := 0 // Ispisivanje WHILE !TB:stabilize() .AND. ((Ch := Inkey()) == 0) ; END DO // Ekran je ispisan i nista nije pritisnuto IF Ch == 0 .AND. TB:stable // Osvetljavanje tekuce linije (MARK) X := TB:RowPos Y := TB:ColPos ACur := {X, 1, X, TB:colCount} ACurC := {X, Y, X, Y} TB:colorRect (ACur, {5,1}) TB:colorRect (ACurC, {2,1}) // Cekaj taster Ch := InKey(0) // Ugasi kursor (UNMARK) TB:colorRect (ACur, {1,2}) END IF DO CASE // Analiza komandi // ... END CASE Dakle, umesto delova označenih sa MARK i UNMARK mogu se staviti BILO KOJE dve (suprotne) operacije pomoću kojih označavaš tekući slog.
clipper.224 nbatocanin,
Skoro da bi se mogao zakleti da je problem u nečemu drugom, a ne u Clipper-u. Jesi li probao isti program na drugom računaru? Voleo bi da vidim skraćenu verziju tog programa.
clipper.225 radunovic,
Problem je u tome sto mi ColorRect oboji samo deo linije na kome su ispisana polja, a ostanu crne rupe izmedju dva polja. Meni je potrebna neka procedura koja bi bila mesto MARK i koja bi obojila celu tekucu liniju.
clipper.226 nbatocanin,
> Problem je u tome sto mi ColorRect oboji samo deo linije > na kome su ispisana polja, a ostanu crne rupe izmedju dva > polja. Što ne probaš sa sledećim MARK-om: SetColor (Invert) @ Row(), Col() SAY Polje1 + " " + Polje1 + ... ili nešto slično.
clipper.227 dejanr,
>> ps. ovo sve zbog jednog fenomenalnog editora koji se zove bingo. jedna >> od mogućnosti je da učitava fajlove do 240Mb (ne 'k', nego 'M'). >> ima oko 150k, pisan u Turbo C-u, sličan QEdit-u, može da se >> konfiguriše, sve što se radi radi se iz editora (nema config >> datoteke), iako je rađen za pisanje C programa, dobar je i za >> druge datoteke, itd. jednom rečju strava. Šalji i to čudo, da ga oprobamo. Mnogo volim editore koji primaju velike fajlove. Naravno, ako je PD/SW.
clipper.228 radunovic,
Odustao sam i od TBrowsera i napravio svoju funkciju. Tako ispade najbolje. :) Zahvaljujem se na pomoci. Boki
clipper.229 hercog,
**> Voleo bi da vidim skraćenu verziju tog programa. Poslaću deo sorsa ovde, pa probajte. Inače , taj problem se dešava kod mene i jos dvojce ljudi koji koriste taj pro- gram. Da nije možda problem u hyperu, jer na sva tri ra- cučunara je instaliran? Hercog
clipper.230 ndragan,
/ Nije, naravno, bilo tesko obrisati ove slogove, ali me zanima da / li neko mozda ima ideju kako se ovo desilo. Mozda hard disk, mozda To se događa i u foksu, kad okine makina, dbf se ne zatvori i dosu se ne prijavi da treba u direktoriju da se ažurira dužina; tada u hederu DUFa piše tačno stanje (broj slogova kakav je bio kod poslednjeg zatvaranja ili Flush / Commit naredbe), a u FAT ne piše da je fajl dugačak toliko i toliko. Kod sledećeg startovanja foks (a verovatno i kliper) primeti da se tu nešto ne slaže pa poveća dužinu fajla, tj zatraži odsečene klastere od DOSa. Dos mu, naravno, da prve slobodne klastere koje ima, ali to skoro nikad nisu isti oni u koje je pisano pre reseta. U ovima koji su dodati ostaje đubre koje su na ta mesta na disku ostavili neki drugi programi; novi slogovi se dodaju iza svega toga. Verovatno si primetio da su takvi slogovi grupisani - otvori datoteku bez indeksa pa ćeš videti. Fokspro takve datoteke neće ni da otvori; Mfoxplus ih ladno otvara pa se ponekad ispomažemo njim. Verovatno i kliper radi tako, čim si zatekao male kineze u datoteci. Za svaki slučaj napisali smo jedno programče koje ažurura heder prema prostoru koji je javljen dosu - odseca višak DBF iza onog mesta koje je upisano u heder; izgubi se poslednjih nekoliko slogova, a izgubi se i navika da operateri svoje greške brišu resetom :) Bue_ NDragan
clipper.231 pjankovic,
> male kineze u datoteci. Za svaki slucaj napisali smo jedno > programce koje azurura heder prema prostoru koji je > javljen dosu - odseca visak DBF iza onog mesta koje je > upisano u heder; izgubi se poslednjih nekoliko slogova, a > izgubi se i navika da operateri svoje greske brisu resetom > :) Hvala na odgovoru. Kada budem imao vise vremena, pokusacu i ja da napravim nesto slicno. Pedja
clipper.232 hercog,
Šta mislite : koliko maraka vredi program (pisan u kliperu) koji u sebi sadrži : obradu proizvodnje, kretanje robe u trgovini, obradu magacina, računa, popunjavanje i štampanje uplatnica, celokupne rashode jedne pekare (11 rashoda),obra- zac TM1,kalkulaciju cene proizvoda prema cenama sastojaka, proračune : dnevni promet, poslovni rezultati, bilans itd. Molim vas da hitno odgovorite. Hercog
clipper.233 bulaja,
Moze li se sa Clipper 5.01 koristiti neki drugi linker osim RTLink-a? Probao sam TLink i ne radi.
clipper.234 dejanr,
>> Moze li se sa Clipper 5.01 koristiti neki drugi linker osim RTLink-a? >> Probao sam TLink i ne radi. Radi, ali ti treba novi Turbo Link a ne onaj stari od Turbo C-a 1.1. Inače, može i MS linker. Ako ti treba CLIP.BAT, kaži da šaljem.
clipper.235 bulaja,
││ Moze li se sa Clipper 5.01 koristiti neki drugi linker osim RTLink-a? ││ Probao sam TLink i ne radi. │└─── │Radi, ali ti treba novi Turbo Link a ne onaj stari od Turbo C-a 1.1. │Inace, moze i MS linker. Ako ti treba CLIP.BAT, kazi da saljem. └─── Meni ne radi ;), tj. probao sam sa TLINK 4.01 (BC++2.0) i nije mi uspelo. Posto preferiram TLINK umesto MSLINKA ;), dobro bi mi dosao CL.BAT za njega, a moze i za bilo sta drugo brze od RTLjinka.
clipper.236 ndragan,
/ koji u sebi sadrži : obradu proizvodnje, kretanje robe u Zavisi od pekara :)... ovako odokativno, oko 2 Mdin, što bi izašlo oko 1800 DEM, mada opet - sve zavisi od mušterije, i da li je to po sistemu plati pa nosi i da se više ne vidimo, ili sa muzičkim željama (razlika između ove dve varijante ume da ide do 1:2) Bue_ NDragan
clipper.237 hercog,
**> nosi i da se više ne vidimo, ili sa muzičkim željama **> (razlika između ove dve varijante ume da ide do 1:2) Sa muzičkim željama. Hercog
clipper.238 nbatocanin,
> Posto preferiram TLINK umesto MSLINKA ;), dobro bi > mi dosao CL.BAT za njega, a moze i za bilo sta drugo brze > od RTLjinka. Budi oprezan: nećeš imati dinamičke overleje i ponestaće ti memorije kod malo većeg programa. Jesi li probao RTlink /PLL?
clipper.239 radunovic,
Jas sam radio sa TLINK-om iz BC++ 2.0 i nisam imao problema. Mozda nisi stavio sve biblioteke.
clipper.240 ndragan,
/ Zavisi od pekara :)... ovako odokativno, oko 2 Mdin, što bi izašlo oko Izeš brzog čoveka. Hteo sam reći 200 Mdin, tj dvesta kila. Sorry.
clipper.241 alexa,
> Izeš brzog čoveka. Hteo sam reći 200 Mdin, tj dvesta kila. Sorry. Dobro, koliko je sad to para?????
clipper.242 ndragan,
/ Sa muzičkim željama. Najebo si. Ponesi suvu ranu za tri dana (mesuštine itd - valjda će biti leba...). Onda, šta ga ja znam da kažemo 280 mega... ili, ako hoćeš, tezgaroši uzimaju po 90 za jedan LD ili analitiku _bez_ muzike. Rekoh da zavisi od pekara, a zavisi i u čemu pišeš. Ako imaš brz alat, na konju si. Bue_ NDragan
clipper.243 ndragan,
>* Dobro, koliko je sad to para????? 200.000,00 dinara važećih, ali sa ovom inflacijom se nikad ne zna :)
clipper.244 lazo,
Prvo pitanje: Ljudi gdje nabaviste Clipper 5.1? Drugo pitanje: Kako se zadaje ime radnoj stanici tako da mogu koristiti funkciju NETNAME(), a da mi ova ne vrati prazan string? Treće pitanje: Nemam više pitanja :)))))))))!!! Mickey
clipper.245 vilic,
Hi, Par pitanja clipper guru-ima, pošto sam totalni početnik. 1.- Koje mi knjige preporučuju za učenje i prve korake ovog prg. jezika. Služim se c-om i fortranom. 2.- U dodatku računara piše o povezivanju radnih odlasti (datoteka) sa naredbom SET RELATION, pa me interesuje sa koliko se maksimalno radnih oblasti istovremeno može povezati jedna radna oblast (datoteka). bye
clipper.246 bulaja,
│1.- Koje mi knjige preporucuju za ucenje i prve korake ovog │ prg. jezika. Sluzim se c-om i fortranom. └─── Bila je o tome dosta obimna diskusija u ovoj konferenciji, bas sam pre nek dan brisao te poruke iz SOR-a ;), al sam sad opet potrazio, pogledaj diskusiju od poruke 5.93.
clipper.247 hercog,
**> zavisi od pekara, a zavisi i u čemu pišeš. Ako imaš brz **> alat, na konju si. Paz sad ovo. Napisali smo program njemu pre par meseci i uzeli neke pare... Sad smo mu dodali neke opcije nove i tražili 300dm za njih. Kad je tip čuo on je rekao da smo ludi i da je to mnooooooooogooooooo. On uopšte ne može da skopča kakve su cene. Pitam ja njega pa koliko je po tebi normalna cena, a on kaže 100dm , po zvaničnom kursu - 65 din :))))). Sve mi se čini da ću da mu uzmem te pare i da mu dam program koji će da radi još 1 mes i onda go- tovo. Hercog
clipper.248 hercog,
Kako očitati status kurora (da li je islkjučen ili uključen) Hercog
clipper.249 hercog,
**> Ljudi gdje nabaviste Clipper 5.1? Clipper 5.1 ili 5.01? Hercog
clipper.250 dzakic,
>> Kako očitati status kurora (da li je islkjučen ili uključen) U asembleru pozoveš int 10, fja 3 čini mi se (get cursor status), pa ako je donja linija iznad gornje, znači da je kursor nevidljiv.
clipper.251 dusanp,
=>> Kako očitati status kurora (da li je islkjučen ili =>> uključen) => => U asembleru pozoveš int 10, fja 3 čini mi se (get cursor => status), pa ako je donja linija iznad gornje, znači da je => kursor nevidljiv. žak i ako dobiješ /uz pomoć ove f-je/ da je kursor vidljiv, to još uvek ne znači da je na ekranu. U svojim ranijim progra- mima sam stavljao kursor u 26u liniju na ekranu /sada koristim _setcursortype()/ i on bi time bio nevidljiv. Znači, da bi bio siguran moraš da kombinuješ oba sistema - pozoveš funkciju i proveriš koordinate kursora. By the way - kako se na EGA/VGA u višim text modovima gasi kursor ? Da li može stavljanjem kursora u 44/51 liniju ?
clipper.252 bulaja,
│Kad je tip cuo on je rekao da smo ludi i da je to mnooooooooogooooooo. │On uopste ne moze da skopca kakve su cene. └─── A kakve su? O;> Cena ne zavisi od toga "ej gledaj kako su neki tamo tipovi uvalili slican prg za $$$" vec mnogo vise od toga koliko ti vredis (sto je glavni faktor i iz cega slede i funkcionalnost programa, rok izrade i sl.) i koliko si se mucio da uradis program. Ima kreepova koji neke bangave ;) programe valjaju po ogromnoj lovi i misle da su genijalci i prave sjajan posao (doduse, takve stvari se nakratko mogu dosta i isplatiti). Imas i one koji nemaju mnogo veze o programiranju, ali opet misle da mogu da za male pare rade neke programe, za koje se posle ispostavi da ne vrede ni toliko, a onda odjednom pomisle kako mogu da uzimaju i vecu lovu. Takvi ti sigurno ne mogu biti orijentir za odredjivanje cene, a ni slucajno uzor. A programi ne bi smeli da ti javljaju "DBF Corrupted" ;). │Sve mi se cini da cu da mu uzmem te pare i da mu dam program koji ce da │radi jos 1 mes i onda gotovo. └─── Sjana ideja, a imas li mozda nameru da se ovim poslom bavis duze od mesec dana?
clipper.253 bulaja,
│Kako ocitati status kurora (da li je islkjucen ili ukljucen) └─── SETCURSOR() Vraca broj [0..4], 0 je iskljucen kurzor, 1 ukljucen normalni (trepcuci underline, a 2, 3 i 4 trepcuci ▄, █ i ▀.
clipper.254 ndragan,
/ - 65 din :))))). Sve mi se čini da ću da mu uzmem te pare / i da mu dam program koji će da radi još 1 mes i onda go- Ostavi ti njemu lepo sve što je tražio i to tačno onako kako je tražio. Kroz mesec dana će da ukapira da ti nije sve dobro objasnio šta u stvari hoće, pa će sam da traži nadogradnju. A onda opet još 100 DEM, i tako malo po malo. Samo nek njemu aplikacija počne da radi posao i da se on na nju lepo navikne. Pazi - na nju, a ne na tebe. Posle pola godine upotrebe, aplikacija je droga. Pokušaj sledećih mesec dana da živiš bez SORa :) A inače, ne prodaješ ti njemu samo aplikaciju, nego mnogo više informatičke škole koju svaki korisnik mora da popije - koliko ko može. A to je već ono što stvara naviku. Saberi koliko si mu objašnjavao razne stvari dok si radio. Pitanja koja si mu postavljao, i on tebi. Sve je to tvoj rad koji treba naplatiti. Ako on to još ne shvata - *š ga, mušterija je uvek u pravu, čak i kad je konj. Samo strpljivo, doće maca na vratanca. Bue_ NDragan
clipper.255 ndragan,
/ one koji nemaju mnogo veze o programiranju, ali opet misle da mogu da / za male pare rade neke programe, za koje se posle ispostavi da ne I profesionalci moraju od nečega da žive! Nekoliko dooobrih mušterija smo uhvatili tamo gde su pre nas bili neki tipovi koji drže stil "uzmi pare i beži". Podsetio bih na diskusiju od pre mesec dana o zaštitama. Najprljavije tehnike zaštite seju baš takvi - ono malo što znaju čini im se teškim blagom, koje treba zaštititi makar i po cenu korisnikovog diska ;(. Što reče na kraju, slažem se: imam nezgodnu naviku da jedem svakog dana, a mislim da ću je imati i dogodine :) Bue_ NDragan
clipper.256 vkrstonosic,
>> I profesionalci moraju od nečega da žive! Nekoliko dooobrih mušterija >> smo uhvatili tamo gde su pre nas bili neki tipovi koji drže stil "uzmi >> pare i beži". Podsetio bih na diskusiju od pre mesec dana o zaštitama. >> Najprljavije tehnike zaštite seju baš takvi - ono malo što znaju čini im >> se teškim blagom, koje treba zaštititi makar i po cenu korisnikovog >> diska ;(. Xa, i ja sam se nekada nervirao zbog raznih amatera i njihovih bangavih programa (pre neki dan naidjem na knjigovodstvo, robno i finansijsko, za celih 100 (sto) dem), ali sam prestao. Pa ti ljudi nam čine uslugu, oni nam u stvari dižu cene. Pre nekog vremena, u jednoj firmi je prošla naša ponuda koja je bila 5 (pet) puta skuplja od konkurencije - ljudi su imali neka loša iskustva ranije. Samo neka se prodaju bangavi programi, ja najviše volim kad dodjem u firmu koja je kupila takav program, pa posle 2 meseca ne pitaju više da li je jeftino.
clipper.257 lazo,
**> Clipper 5.1 ili 5.01? Ma 5.01 bilo mi mrsko stavljati onu nulu.
clipper.258 hercog,
**> A programi ne bi smeli da ti javljaju "DBF Corrupted" **> ;). Više ne prijavljuje dbfd corupted... Greška je bila kod sort naredbe... **> Sjana ideja, a imas li mozda nameru da se ovim poslom **> bavis duze od mesec dana? Imam nameru da se bavim tim poslom i preko mesec dana. Inače što se programa tiče veoma je dobro urađen i lep ;) Hercog
clipper.259 hercog,
**> tako malo po malo. Samo nek njemu aplikacija počne da **> radi posao i da se on na nju lepo navikne. Aplikacija kod čoeka radi preko 6 mes bez problema (ako izuzmemo dbf corupted koji je ispravljen), a on još ne zna sve opcije da koristi (razlog : nije ih ni probao...) **> A to je već ono što stvara naviku. Saberi koliko si mu **> objašnjavao razne stvari dok si radio. Pitanja koja si **> mu postavljao, i on tebi. Sve je to tvoj rad koji treba **> naplatiti. Ako on to još ne shvata - *š ga, Kukuuuuuuuuu. Mi smo više njemu pričali o programu, objašnjavali razne stvari nego što je trajalo pisanje programa. A to mu nismo naplatili... :(( Hercog
clipper.260 janko,
> i koliko si se mucio da uradis program. Ima kreepova koji > neke bangave ;) programe valjaju po ogromnoj lovi i misle > da su genijalci i prave sjajan posao (doduse, takve stvari > se nakratko mogu dosta i isplatiti). Imas i Biser br. 1: Par firmi je kupilo neke programe (koji su trebali da obrađuju podatke o više stotina ljudi, firme nisu male) od nekog tipa, (piše mu Dipl. Ing. u posetnici, ali ne znam šta je to diplomirao, možda šumarstvo) koji je odmah posle prodaje prestao da sarađuje. To i nije bilo čudno, jer su programi bili na Turbo Basicu. Uuuuužas! To se ne može ni zamisliti kako radi. Biser br. 2: Svojevremeno je JNA kupla od IVASIM-a neki softver, i to za puno kasarni, isto sa inteznivnom obradom velikih količina podataka, pisan na PASCAL INTERPRETERU (*eb*t*!). (Naravno bez sorsa). (Znam još bisera -- silnim video klubovima isto su utopljeni silni BASIC programi itd itd...) U oba programa nešto je bilo i zajedničko -- pošto su radili unos preko nekih ekvivalenata INPUT naredbi, po pravilu nisu radili sa promenom podataka unazad na ekranu -- pritisni enter i pomoli se. Ako pogrešiš, radi sve iz početka. Tako se to radi kod nas. Zbog tipova koji tako useravaju stvari i ne postoje kriterijumi i predstava kod nas da i za dobar program treba da se dobro plati. Drugi problem je što ljudi čuju: ovo radi kompjuter, ono radi kompjuter, pa kad kupe kompjuter misle da se u njemu krije i sve za njihovu pekaru. I misle da ne treba da dalje plaćaju, i programere gledaju ko lopove (izgleda, zbog nekih i zasluženo). Za tebe: PRE NO ŠTO POžNEŠ da radiš nekome, PRVO utvrdi TAžNO sa njim šta si dužan da mu napraviš. Onda se pogodi za cenu, pa tek onda radi. Naravno, time se obavežeš da ćeš ispuniti SVE njegove zahteve za koje ti je platio, ili će ti platiti. Tu treba da preciziraš i koliko si obavezan da održavaš program. Nemoj da brukaš profesiju (makar si i samo u prolazu u njoj, izgleda) ni sa kakvim podvalama! Programi će ionako, ako se ne održavaju, brzo zastareti, pogotovu kod nas gde kad prespavaš jedan dan već ima novih zakona, suprotnih od prošlih. Takođe, ko god koristi program, siguro će primetiti neke nedostatke (niko ne piše bezgrešne programe). Ako sa tobom nije izmirio račune, neće biti otklonjeni.
clipper.261 dpaun,
>> │Kako ocitati status kurora (da li je islkjucen ili ukljucen) >> └─── >> SETCURSOR() >> Vraca broj Š0..4Ć, 0 je iskljucen kurzor, 1 ukljucen normalni >> (trepcuci underline, a 2, 3 i 4 trepcuci ▄, █ i ▀. Ima situacija kada će niže rešenje dobro doći: 1) Zapamti trenutno stanje, napr: LOCAL sCursor := SETCURSOR() 2) Postavi novu vrednost: SETCURSOR(nCursor) // Deo programa 3) Vrati staro stanje: SETCURSOR(sCursor) // Kraj procedure i povratak Ovo se MORA primeniti, napr. kada smo u MEMOEDIT(), želimo da kod inserta povećamo veličinu kursora, a sve vreme da nam se ispisuju podaci o njegovoj trenutnoj poziciji. Prikaz pozicije kursora (Lin i Col) vršićemo sa "ugašenim" kursorom pa je pamćenje njegovog prethodnog stanja neophodno. P.S. Uzgred, neka braća i sestre koja pišu (i izgovaraju, pretpostavljam) "kurzor" - objasne otkud ovaj manir, orto- epski sasvim stran našem jeziku? dPaun
clipper.262 hercog,
**> kompjuter, pa kad kupe kompjuter misle da se u njemu **> krije i sve za njihovu pekaru. I misle da ne treba da **> dalje plaćaju, i programere gledaju ko lopove (izgleda, **> zbog nekih i zasluženo). A još ako je vlasnik pekare glup ko noć, dobiješ neverovatno kombinaciju **> Za tebe: PRE NO ŠTO POžNEŠ da radiš nekome, PRVO utvrdi **> TAžNO sa njim šta si dužan da mu napraviš. Onda se **> pogodi za cenu, pa tek onda radi. Naravno, time se **> obavežeš da ćeš ispuniti SVE njegove zahteve za koje ti **> je platio, ili će ti platiti. Tu treba da preciziraš i **> koliko si obavezan da održavaš program. Ma mi smo tako i uradili , al je problem bio kod nekih kasnijih dodataka. **> Nemoj da brukaš profesiju (makar si i samo u prolazu u **> njoj, izgleda) ni sa kakvim podvalama! Programi će **> ionako, ako se ne održavaju, brzo zastareti, pogotovu **> kod nas gde kad prespavaš Niko nije obrukao profesiju od nas ovde, niti je samo u prolazu. Ja se npr već 6 meseci šetam od kuće do čoeka, jer mu stalno nešto novo sine u glavi. A TO NISMO NAPLATILI, što bi se reklo da je dobio sve to za džabe...:( I kao što rekoh program za pekare koji smo napisali ja i moj ortak je napisan po svim željama čoeka (vlasnika pekare) i održavamo ga čak i više nego što treba.. Hercog
clipper.263 ndragan,
/ tek onda radi. Naravno, time se obavežeš da ćeš ispuniti SVE / njegove zahteve za koje ti je platio, ili će ti platiti. Tu treba To se lepo kaže: ništa bez ugovora. A kad praviš ugovor, pamet u glavu - obezbedi se od više sile (strujni udar, virus, krađa), njegove reorganizacije, izmene zakona; obaveži ga da mora da ima bekap, a onda navedi 90% spiska muzičkih želja; časti ga posle i onih 10%, tek tolko da ti je uvek nešto dužan. Uradi mu sve što traži, ali prvo pogodi dinamiku plaćanja. I ne kloni duhom. Bue_ NDragan
clipper.264 ndragan,
/ A još ako je vlasnik pekare glup ko noć, dobiješ / neverovatno kombinaciju Ne može da bude glup ako te već pola godine preveslava za lovu ;>> / kuće do čoeka, jer mu stalno nešto novo sine u glavi. / A TO NISMO NAPLATILI, što bi se reklo da je dobio Ipak je on pametan... Bue_ NDragan
clipper.265 hercog,
**> Ne može da bude glup ako te već pola godine preveslava **> za lovu ;>> Ma uzeli mu mi ono što je trebalo, al nikako da mu uzmemo za ove nove opcije... Hercog
clipper.266 dpaun,
Clipper braćo i sestre! Iz službenih razloga (etnološka istraživanja) posebno sam zainteresovan za tekstualne baze podataka. To me je odvuklo u Clipper, jer je (pre par godina) on bio jedini alat za kakav-takav komfor u tom pogledu. Te- žište je, dakle, na memo-tipu podataka. Deset godina zamajavanja sa metodologijom tekstualnih kartica ili fiša, sa registratorima i sl. "pešačkim" pomagalima, i dve-tri godine intenzivnog Clipperovanja, rezulti- ralo je i određenim iskustvom koje bih rado podelio sa ostalima. Naravno, u tom iskustvu pretežu ona ve- zana za metodološko-etnološki aspekt, ali ni ona iz samog clipperovanja nisu za bacanje. Pogotovu što su stečena u situacijama kroz koje će, verovatno, morati da prođu sva braća i sestre(?) sa zanimanjem za memo. Ima li, dakle, još koga ovde kome je memo u prvom planu, odnosno kakva su iskustva sa Clipperom kao "školjkom" za upravljanje tekstualnom bazom podataka? dPaun
clipper.267 hercog,
Ovo pita jedan moj ortak : Kako naterati štampač da pre početka štampe ne provlači prvi list pa tek onda štampa? Hercog
clipper.268 kanda,
Da li postoje greske koje kliper ne moze da uhvati ? Konkretno, imam svoju ERRORBLOCK funkciju. Naravno, najvazniji deo je detekcija gresaka pri radu sa fajlovima. E sad, greske tipa 'ne mogu da otvorim datoteku a:\pera.txt', kao i ostale hvata bez izuzetka (tj. tako sam mislio :). Ali, jutros sam startovao program sa diskete (zasticene) i kad je naleteo na naredbu PRO->(DBCOMMIT()), umesto da izleti u rutinu za hvatanje gresaka, on prijavi nesto kao 'Unrecoverable error : DBCOMMIT(0)', i naravno pravo u DOS. I sta sad da radim ? Zasto je ovakva greska 'unrecoverable' ?
clipper.269 vkrstonosic,
>> Ovo pita jedan moj ortak : Kako naterati štampač da pre početka >> štampe ne provlači prvi list pa tek onda štampa? A kakve to veze ima sa Clipperom ?????
clipper.270 mmihajlovic,
Da li neko zna gde je bio .PRG za ispisivanje brojnih vrednosti slovima. kao da sam to negde video (na SEZAM-u ili u RACUNARIMA). Unapred zahvalan. MM
clipper.271 hercog,
**> A kakve to veze ima sa Clipperom ????? Pa zato što čovek piše prg u clipperu i nikako da natera štampač da mu ne provlači prvi list kad nešto štampa pomoću tog prg-a što je napisao Hercog
clipper.272 vkrstonosic,
>> Pa zato što čovek piše prg u clipperu i nikako da >> natera štampač da mu ne provlači prvi list kad >> nešto štampa pomoću tog prg-a što je napisao Uh bre, sa kakvim ti misterijama ovde dolaziš ;)) Rešenje slično kao i ranije, pošalji ovde deo tog misterioznog source-a, imam par ideja zašto bi to moglo da se dešava, ali su sve toliko glupe, da ne želim da vas omalovažavam :)
clipper.273 dejanr,
>> Da li neko zna gde je bio .PRG za ispisivanje brojnih vrednosti >> slovima. kao da sam to negde video (na SEZAM-u ili u RACUNARIMA). Bio je u Bajtovima lične prirode, mislim u decembarskim "Računarima". A imaš ga i na Sezamu uz poruku 5.5 u konferenciji PC.PROG
clipper.274 mmihajlovic,
Hvala !
clipper.275 hercog,
Ovo je deo sorsa iz prg-a set device to printer č 1,0 say "tralala" ... ... ... Pre nego što odštampa "tralala" on izuče jedan papir. Hercog
clipper.276 vkrstonosic,
>> Ovo je deo sorsa iz prg-a >> >> set device to printer >> č 1,0 say "tralala" >> >> Pre nego što odštampa "tralala" on izuče jedan papir. Tja, očigledno ima još nešto, upravo sam ovo probao (Clipper 5.01 i Epson LQ 550) i ne izvlači papir. Proveri da li pre ovoga ima još nekog štampanja, jer može i u tome da bude problem. Clipper, ako recimo prvo staviš č 1,0 say "", pa onda č 0,0 say "", smatra da je ono 0,0 na sledećem papiru. Odnosno, ako je broj reda manji nego prethodni, izbacuje papir i štampa na sledećem. Ovo može da bude vrlo zgodno za neke stvari, ali ne za sve.
clipper.277 kanda,
:))) znas u cemu gresi tvoj drug? JednostavÚno, kad radis sa printerom, koristi ? i ?? komandeÚ jer vidi sta se ovde desava : prvo, komanda @ 4,1 say 'pera' -> printer izbaci 4 prazna reda i ispise 'pera' @ 2,1 say 'zika' -> printer naravno ne moze da se vrati dva reda unazad, nego izbacuje stranu i na novoj strani, izbaci dva prazna reda i tek onda pise. Dakle, ako vec koristi @ ... SAY, neka pise strogo liniju za linijom, bez vracanja unazad.
clipper.278 vili,
> set device to printer > Z 1,0 say "tralala" ------------------------------------------------------------------------ SET DEVICE TO SCREEN | printer Description ( . . .) When sending @...SAYs to the printer, Clipper performs an automatic ELECT whenever the current printhead row position is less than the last print row position. An EJECT resets PCOL() and PROW() values to zero. To reset PCOL() and PROW() to new values, use the SETPRC() function. ------------------------------------------------------------------------ SETPRC(<nRow>,<nCol>) --> NIL Description ( . . .) SETPRC() can also be used to suppress page ejects when printing with @...SAY. This is important when the next row position is smaller than the current row and an EJECT has not been issued. In this situation, Clipper issues an automatic page eject if the next row print position is less than the current PROW() value. Using SETPRC(), you can set PROW() to a number less than the current row, thus suppressing the automatic EJECT. ------------------------------------------------------------------------ PS. Ja licno koristim: SET PRINTER ON SET CONSOLE OFF Vili
clipper.279 hercog,
Pošto ja nemam štampač i nikad nisam pisao ništa u vezi istog, poslao sam vam taj deo sorsa da rešimo čoveku problem Hercog
clipper.280 dpaun,
>> Ima li, dakle, još koga ovde kome je memo u prvom planu, Postavio sam ovo pitanje pre neki dan. Ćutanje me je gotovo ohladilo: nije, valjda, da sam se "zaleteo" i izabrao pogrešan alat za tekstualnu bazu? Hajde da promenim pitanje: Ima li koga ovde kome je memo u srednjem planu? dPaun
clipper.281 zkrstic,
> Pošto ja nemam štampač i nikad nisam pisao ništa u vezi > istog, poslao sam vam taj deo sorsa da rešimo čoveku > problem Ala se raspričasteeeeeee :)))) Da nije neko na virus posumnjaoooo :)) Elem :( Imam isti problem koji sam rešio na mnoooogo bezobrazan način: 1. Štampanje, za rad brzine programa, vršim u fajl 2. Pre nego što ga sa RUN PRINT poteram, pustim funkcijicu koja leeeeepošacne, ima li taj fajl na početku jedan maaali CTRL L znakić i ako ima pošalje ga u večna lovišta, ako ne nikom ništa. Rešenje je tako trivijalno i bezobrazno da sam se dva dana sebi samome divio :)))) Pozdrav, zkr no_eject.zip
clipper.282 ndragan,
/ Ima li koga ovde kome je memo u srednjem planu? Bio sam u frkoj pa se nisam javio. Nije mi u srednjem planu, ali ga često koristim. Napravio sam nekoliko stvari koje bez memo polja mogu da se naprave samo pomoću trikova, a i program onda ispada pet puta duži i nezgodniji za upotrebu. Napravio sam recimo generalnu rutinu za ispis teksta sa makro zamenama iz bilo koje datotetke - recimo generator ugovora, dopisa, čega bilo a o čemu postoje nekakvi podaci u nekakvim DBF. Razne konverzije teksta... recimo ženi sam pravio program koji iz teksta (rada za specijalizaciju) izdvaja literaturu, ubacuje redne brojeve iz popisa literature i usput izdvoji taj popis literature u zaseban tekst, sve naravno sređeno za Venturu. Možda to nije ono što si mislio, ali ako nema drugih zainteresovanih, da ne davimo u konferenciji, šalji mi mail. Uzgred, ne znam kako kliper barata sa memo poljima, ja radim u foksprou i kako mi se čini dosta je moćan po tom pitanju. Bue_ NDragan
clipper.283 ndragan,
/ Rešenje je tako trivijalno i bezobrazno da sam se dva dana sebi samome Ali zvuči kao krpež, pošto nisi rešio uzrok. Ali, ideja svakako može da posluži - ko zna za šta će još trebati.
clipper.284 bingo,
dali neko zna kako se u clipgrafu brise uvodna spica
clipper.285 kzoran,
Hi! Ima li neko DOBRU knjigu o Clipper-u 5.01? Ako je moguće, pozajmio bih je na par dana da je fotokopiram. Dolazi u obzir i kupovina. Pozdrav, Zoran.
clipper.286 draganf,
Probao i nisam uspio, jedino je možeš pretvoriti u svoju reklamu Dragan
clipper.287 terza,
Danas sam pokusao da otvorim grupu Clarion, ali Sezam kaze da ta grupa vec postoji. Dakle, ako vlasnik grupe ovo procita i ima mjesta tu sam:)). Terza
clipper.288 ilotina,
HI! Da li bi neko od vas cliperasa (posto je neznam cliper) mogao da prebaci ovaj txt fajl u DB3 format. Struktura datoteke izgleda otprilike ovako: Ime : pa sad neko ime Prezime : ---| |--- .......... Unapred zahvalan Ivan! P.S. Ja sam ipak pokusao nesto da uradim u TP-u sa nekim dbase.tpu, ali posto tamo nisam razumeo jos jednom vas molim da mi pomognete. Hvala flis.arj
clipper.289 nbatocanin,
> Danas sam pokusao da otvorim grupu Clarion, ali Sezam kaze > da ta grupa vec postoji. Zašto "privatno" razgovarate o tako opšte interesantnim stvarima? Mislim da bi dosta ljudi htelo da čuje nešto o Clarionu, ja prvi.
clipper.290 pedjad,
Zdravo, drugar me je zamolio da pitam gde moze da se nadje onaj program iz Racunara 75 za PREVIEW U CLIPPERU. Ja sam ga trazio u RSOFT-u, ali nije tamo, pa ako neko zna gde je ili ako ga ima molio bih ga da mi ostavi poruku. Pozdrav Pedja.
clipper.291 dpaun,
>> Da li bi neko od vas cliperasa (posto je neznam cliper) >> mogao da prebaci ovaj txt fajl u DB3 format. Radio sam to više puta. Tvoj tekst ne mogu da raspakujem jer imam samo PKUNZIP.EXE. Možeš li da ga spakuješ sa PKZIP-om? Uzgred, da bi se posao uradio najbrže što može, tekst treba da bude: - čist ASCII kod; - uređen u formi tabele ili preciznog spiska. 1. Janković Marko pekar 1982 99. Ilić Jevrosima dadilja 28 100. Nikiforović Jon 178999 itd Pošalji na MAIL. dPaun
clipper.292 vilic,
hi, ovo je PD program za kreiranje objektno-orjentisanih programa na kliperu. Dok nestigne Nant. OO Clipper 6.0 evo malo uvoda u budučnost programiranja (kliper verzija). A evo i izvoda iz oclip.doc LEGAL NOTICE: o:Clip, an object oriented extension to Clipper, is FREEWARE. It may be freely distributed and used by individuals and corporations without charge. It may not, however, be sold or distributed for a price (other than user group diskette duplication and distribution fees.) At all times, the copyright and title for o:Clip remain with CyberSoft, Box 718, Milton, WA 98354. It must be distributed as a whole, including this accompanying documentation. This software is provided on an as-is basis. If you choose to use it, you do so at your own risk. Neither the author nor CyberSoft offers any warranty or guarantee of any kind, nor do they (individually or together) accept any liability for any consequences of the use of this software. REQUIREMENTS: o:Clip requires Clipper 5.01. o:Clip is composed of two files: OCLIP.LIB and OCLIP.CH OCLIP.LIB contains functions to create classes, add methods and variables to classes, and to access self. OCLIP.CH contains UDC's to allow class definitions. The UDC's are extremely minimal, and make the function definition behind the definition of a class transparent. The best way to get an idea of how they do this is to compile the examples with /p and examine the preprocessed output files. DESCRIPTION: o:Clip is an extension to Clipper 5.01 to allow user defined objects and classes. Clipper 5.01 is probably one of the most significant advances in X-Base programming since the invention of the .DBF file. One of the least documented and most understood new features is that of objects. Perhaps the reason for this is that unlike the rest of the language, Clipper classes and objects are inflexible - you can't change them, and you can't create your own. Without these abilities, it is not truly an object-oriented programming (OOP) language, and yields none of the benefits of OOP such as polymorphism, reusability, or inheritance. o:Clip fills in this small but glaring hole in the OOP ability of Clipper 5.01 by providing the ability to create your own classes and objects. You can work with these objects just as you can the ones provided by Nantucket, with the added benefit of inheritance. Objects created with o:Clip return VALTYPE() of "O", and are recognized internally as objects to Clipper itself. bye ps. pitanje za SysOp-ove. Zašto imamo temu Basic, CCCC, Paskal, Asembler... a nema ni pomena niti jedne temice za Objektno orjentisane jezike. Koliko primecujem oni u svetu nisu samo hit već i veoma ozbiljan alat sa kojim se radi, Borland i Microsoft već uveliko napuštaju klasične jezike (da pomenem samo njih) a na Sezamu mogu eventualno da "zalutaju" u PC.PROG--->razno. pps. Svaki reply predlažem u temi razno. bye
clipper.293 draganf,
Dobiješ to za par sati sređeno, bar tako mislim pošto ću tek sad da to prebacim kod sebe. Radio sam već takve stvari pa nebi trebalo biti problema Dragan
clipper.294 draganf,
Evo je sređena kako se moglo, iako je pisana da što više zapetlja prenos u dbf format. Dragan flis.zip
clipper.295 nbatocanin,
Izvinjavam se što programa nema u RSOFT-u. Kad je tekst objavljen, nisam bio na Sezamu. Poslao sam Bulaji program i uskoro će se naći na svom mestu. Pozdrav, Nenad
clipper.296 bulaja,
\RSOFT\r075clpr.zip
clipper.297 dpaun,
>> Evo je sređena kako se moglo, iako je pisana da što više >> zapetlja prenos u dbf format. Možda će još nekom da zatreba rešenje za ovakav problem. Prilažem svoju Clp improvizaciju na temu iLotina & Co. dPaun fli.zip
clipper.298 pedjad,
Thanks. Pozdrav Pedja.
clipper.300 nbatocanin,
Desilo mi se neëto üudno. Imao sam proceduru sa nekoliko otvorenih datoteka. Na jednu od tih datoteka bilo je "usmereno" vise relacija. Neëto ovako: USE d1 INDEX d1 NEW USE d2 NEW SET RELATION TO xx INTO d1 USE d3 NEW SET RELATION TO xx INTO d1 ... Znaüi, na D1 su postavljene dve relacije: iz D2 i D3. Kada se na kraju zatvore sve datoteke, zatvarao sam ih ovako: CLOSE d1 CLOSE d2 CLOSE d3 Znaüi da (posle zatvaranja D1) D2 i D3 ostaju sa relacijama na praznu zonu. E, onda su poüele da se deëavaju üudne stvari. Kada sam redosled promenio tako da se prvo zatvaraju D2 i D3, pa tek onda D1, sve je bilo OK. Ima li neko slična iskustva?
clipper.301 drakce,
│ Desilo mi se neëto čudno. Imao sam proceduru sa nekoliko └───── Nevezano za tvoj problem, svako š(išarka) u tvom tekstu je e sa dve tačke iznad. U tekstu se od naših slova nalazi još samo č(ičak) i ono je prikazano OK. Hoću da kažem, da ti nešto nije u redu sa kodnim rasporedom. Pozdrav od Dragana
clipper.302 nbatocanin,
Pregledao sam i mislim da se radi o izuzetno interesantnoj stvari. Nešto što nisam znao, a piše u dokumentaciji, je da Clipper 5.01 ima nedokumentovane pozive za rad sa objektima, što sigurno znači da će Clipper 6.0 podržavati puno OOP. Bilo bi dobro da se ovaj interesantan prilog premesti u neki dir.
clipper.303 ndragan,
/ Zna<129>i, na D1 su postavljene dve relacije: iz D2 i D3. Kada se na Ne znam za kliper; foks bi ti ladno izbacio poruku 'Target already engaged in relation'. Mada... ne znam zašto ne bi moglo da se napravi da može. Jedini dobar razlog su ambivalentne situacije (iz a imaš relaciju na b i c, iz b u d i iz c opet u d - i kad čitaš kroz a, po kojoj relaciji pristupaš do d: vezom a-b-d ili a-c-d). Zato se prvo čudim što ti je uopšte radio, a tek onda što se buni zavisno od redosleda zatvaranja. Bue_ NDragan
clipper.304 sasa.m,
Profesor informatike me zamolio za postavim neka pitanjca i vezi Clippera 5.01,a tiču se dodatka o clipperu 5.01 iz prošlih "računara": 1. U tom dodatku bilo je reči o kodnim blokovima.Kako se radi sa njima? 2. Kako se koristi TBrowse (to je valjda funkcija koja zamenuje DBedit) i ako može neki konkretan primer za nju u vidu sourca... Hvala unapred,SašA
clipper.305 vbole,
Ne znam da li sam potrefio temu, al' mislim da jesam. Imam jedno pitanje: 1) Da li je kaznjivo pisati nekom program za duplo knjigovodstvo ? Mislim, lova je dobra, ali hoce jednu 'hidden' i jednu 'open' bazu. Kako je to definisano u zakonu (ako je uopste) ? Ajd' pomagajte, lomim se izmedju love i -kako se ono zvase..., ma znam da imam i to... - aha, savest. bye... vbole
clipper.306 nbatocanin,
> Nevezano za tvoj problem, svako š(išarka) u tvom tekstu je > e sa dve tačke iznad. Eh, greška u koracima! Izvinte.
clipper.307 rcojba,
> Ajd' pomagajte, lomim se izmedju love i -kako se ono > zvase..., ma znam da imam i to... - aha, savest. uzmi lovu ionako on moze da vodi dve knjige !!!!!!
clipper.308 bulaja,
│ovo je PD program za kreiranje objektno-orjentisanih programa na kliperu. └─── Prebaceno u \ibmpc\program, thanks na prilogu.
clipper.309 vbole,
> uzmi lovu ionako on moze da vodi dve knjige !!!!!! Ma, nisam bas siguran u to - raspitacu se - ali mi je rekao da se sada komp priznaje kao knjiga, znaci ako dodju poreznici, traze stanje i iz kompjutera. Program bi morao da frizira stvarno stanje u zavisnosti od toga ko trazi podatke i da ih 15-to dnevno uskladjuje - e, sad, da li je to dozvoljeno, moralno... ?
clipper.310 banex,
>> 1) Da li je kaznjivo pisati nekom program za duplo knjigovodstvo ? Hm, ovo je jedan od čestih zahteva korisnika. Koliko sam ja upoznat nije u pitanju da li program to omogućava ili ne. Završni račun potpisuje neko i taj je odgovaran za njegovu ispravnost. A i kad\ako dođe kontrola (revizor :) ) on uvek traži originalne dokumente a ne listinge ili kartice. No, za svaki slučaj, ja bih ti preporučio da tražiš da ti potpiše neku listu zahteva koje program mora da ispunjava i da tamo explicitno stoji takva želja. To je u slučaju da bude ono "nemam ja pojma kako je taj program napravljen i kako radi, ja to nisam tražio" :)
clipper.311 dejanr,
>> Program bi morao da frizira stvarno stanje u zavisnosti od toga ko trazi >> podatke i da ih 15-to dnevno uskladjuje - e, sad, da li je to dozvoljeno, >> moralno... ? Pa, u stvari, čovek to ne traži da bi lagao državu (gde bi on!) nego zbog crnog fonda koji skriva od žene. A lagati ženu možda nije moralno, ali teško da može biti zakonom zabranjeno ;)) Sve to zavisi kako se gleda na stvari, traži da ti napišu i potpišu projektni zahtev pa slobodno radi.
clipper.312 nbatocanin,
> Zato se prvo čudim što ti je uopšte radio, a tek onda što se buni > zavisno od redosleda zatvaranja. Ako relacije u bazi podataka modeliraju realne relacije, ova situacija je besmislena, ali u praksi se često javi situacija da je tako najlakše. Primera radi, imaš datoteku artikala i datoteku ulaza i izlaza artikala. Ako se radi neki zbirni izveštaj, zgodno je postaviti relacije na artikle i iz ulaza i iz izlaza - bez obzira što se ove dve relacije nikad ne koriste istovremeno. Jednostavno, kad se kaže SET RELATION TO x INTO Zona Clipper treba da izvrši Zona->(dbSeek(x)) pri svakom pomeranju pokazivača sloga u primarnoj zoni. I tu nema neke mudrosti. Ako mu ja zadam cikličnu relaciju, ima da se zaglavi, ako mu zadam bezmislenu vezu, radiće bezveze. Zato mislim da je neki bug. Ispitaću stvar čim budem našao vremena. Uzgred, pošto vidim da radiš na Fox-u, imaš li neka iskustva sa verzijom 2.0. Izgleda dosta interesantno. Pozdrav, Nenad
clipper.313 nbatocanin,
> 1. U tom dodatku bilo je reči o kodnim blokovima.Kako se > radi sa njima? Kodni blokovi su bezimene funkcije koje se mogu tretirati i kao podaci. Ima previše stvari da bi sve ovde napisao. Pitaj određenije ili pogledaj u "Računarima". > 2. Kako se koristi TBrowse (to je valjda funkcija koja > zamenuje DBedit) i ako može neki konkretan primer za nju u > vidu sourca... tBrowse nije funkcija, to je klasa objekata koji (izuzetno uspešno) zamenjuju dbEdit. Važi ista napomena kao gore: pitaj preciznije pa ćeš dobiti odgovor. Pozdrav, Nenad
clipper.314 vbole,
> Pa, u stvari, covek to ne trazi da bi lagao drzavu (gde bi on!) nego > zbog crnog fonda koji skriva od zene. A lagati zenu mozda nije moralno, > ali tesko da moze biti zakonom zabranjeno ;)) To je to !!! Kako meni ne pade na pamet ??
clipper.315 vbole,
> Hm, ovo je jedan od cestih zahteva korisnika. Koliko sam ja upoznat > nije u pitanju da li program to omogucava ili ne. Zavrsni racun > potpisuje neko i taj je odgovaran za njegovu ispravnost. A i kad\ako > dode kontrola (revizor :) ) on uvek trazi originalne dokumente a ne > listinge ili kartice. No, za svaki slucaj, ja bih ti preporucio da Ok, da ne tupim i ja vise o tome - ubacicu mu opciju da stanje moze da azurira samo onaj ko ima lozinku. Prodavci unose robu kao prodatu/primljenu - ide u privremenu bazu dok se pomocu tih podataka ne azurira stanje u glavnoj bazi - onda se brise. Posto su svi prodavci malo priglupi ;), gazda mora uvece ( ili jednom nedeljno, nije bitno ) da prekontrolise sta je od toga stvarno prodato odn. primljeno, i tek ti podaci se unose u glavnu bazu. Tako bi trebalo da bude OK ??
clipper.316 ndragan,
/ Uzgred, pošto vidim da radiš na Fox-u, imaš li neka iskustva sa / verzijom 2.0. Izgleda dosta interesantno. žuj, iskustva. Leži mi na disku žuta verzija za po kući još od decembra i nikako da stignem da pogledam šta sve ima. Ima moćnih stvari, rad sa pendžerima (njegovim, ne windows) je poboljšan, neke stvari su nešto logičnije postavljene, ali dve-tri stvari bih izdvojio kao ključne: editori za maske, izveštaje i menije - sa sve generatorima sorsa. Parametri svega toga se drže u nekim .DBF fajlovima (sa nastavcima .SCX, .MNX i .FRX), sa brdom memo i jednobajtnih polja; urađeno je dosta gazdački. Drugo je što može da se iskoristi mnogo više tipova unosa u masci: popap meniji, radio dugmići itd - pljunuti GEM u tekst načinu sa još nekim proširenjima; sad ima i tzv Foundation Read, što je READ bez GET, nego ima procedure koje se izvršavaju kod aktiviranja i deaktiviranja; on može da poziva svoje READ maske i tako do 5 nivoa. Još malo pa kao event-driven, mada kažu da je to pogrešna koncepcija za DBF programiranje, a ako neko počne baš to da radi onda nije shvatio šta su hteli. Treća stvar je Rašmor (njihov proizvoljan naziv, nastao navodno posle gledanja nekog Hičkokovog filma, mislim '39 stepenika') indeksiranje koje mi liči na ono što radi vaksov RMS kod Prolog3 fajlova - svaki novi indeks sadrži samo ofset bajta od kojeg se razlikuje od prethodnog, i naravno samu razliku; na taj način se dobijaju dosta sitni .CDX indeksi čak i kad je indeksni pojam dugačak. Pretrage se u nekim slučajevima poprilično optimizuju, a konačno je ubačena i SQL sintaksa, sa dijalog boksom za generisanje pretrage, koja može da se zapamti u nekoliko formata, uključujući i čisti sors. At last, but not at least, tu je i generator projekata, koji može da popakuje sve fajlove nužne za rad aplikacije u jedan .APP (ko je reko GEM :) ili .EXE; model za EXE verziju može da bude od spartanskog do male ale koja jede XMS i ima nekakvo interno keširanje/baferisanje itd. Zaista zvuči moćno; to što mi leži tri meseca na disku nije mi čudno. I za 1.02 nam je trebalo pola godine dok smo počeli da mislimo drugačije i da koristimo njegove trikove i zavlačimo ih sve dublje u programe. Zato sad imamo problema sa XENIX instalacijama gde sve to treba vratiti u kameno doba (Foxplus 2.1 ;( ). Zasad na njemu držim svoj tekući račun :). Bue_ NDragan
clipper.317 ndragan,
/ Mislim, lova je dobra, ali hoce jednu 'hidden' i jednu 'open' bazu. If you want to do something wrong, do it right, or don't do it. Sve po redu i zakonu, a koga uhvate, sam je kriv. U načelu: program je tvoj, podaci su njegovi. žuo sam za slučaj noćne more zvane "a šta ako ja otkucam pogrešnu šifru kad mi dođu pa ispadne pogrešan izveštaj?". Bue_ NDragan
clipper.318 kzoran,
Hi, narode! Kako da u Clipperu 5.01 izbegnem pojavljivanje sistemskih upozorenja tipa Invalid date, Range 100-999 i sl. u gornjem desnom uglu ekrana? Usput ponovo pitam ima li neko neku dobru knjizicu za Clipper 5.01 na par dana dok je ne fotokopiram, ili na prodaju? Pozdrav, Zoran
clipper.319 dpaun,
>> Kako da u Clipperu 5.01 izbegnem pojavljivanje sistemskih >> upozorenja tipa Invalid date, Range 100-999 i sl. u >> gornjem desnom uglu ekrana? Probaj sa SET SCOREBOARD OFF. Ovo isključuje prikazivanje poruka u nultom delu ekrana, u toku izvršavanja naredbe READ i funkcije MEMOEDIT(). Vraćanje prikaza poruka je sa SET SCOREBOARD ON. dPaun
clipper.320 andrejl,
Pozdrav svima, Pa da odmah nešto i pitam. (ovo sam glupo sročio :)) Nedavno sam eksperimentišući sa Clipperom 5.01 pravio neku proceduru i prosleđivao joj niz kao parametar. E, u proceduru nije stizao niz nego NIL-ovi, a jednom i đubre. Da li to znači da niz ne može da ide kao parametar? Retko koritim nizove u Clipperu, a i ovo sam rešio bez njih ali me i dalje kopka ko je kriv, ja ili Clipper ? bye, andrejl
clipper.321 dpaun,
Clipper braćo i sestre, 5.01! Verujem da je svako prokukao majčino mleko dok se dovijao kako najefikasnije da napiše help za svoje Clipper programe. Prilažem ovde fajl Pomoc.Zip koji je nasta(ja)o tokom mog rvanja sa Clipperom. Pošto "programiram" na uvce, bez neke unapred određene koncepcije, to se help stalno menja. Kako se koji zahtev postavljao, tako sam frizirao svoje help procedure. Uveren da više nema nijednog zahteva koji ovaj help paketić ne može da reši - stavljam ga Clipper rođacima na slobodno korišćenje. Ovaj help koncept podrazumeva prevođenje .prg programa sa uključenim linijama. U osnovi, korišćenje su Strelijeve procedure i dopune iz najnovijeg paketa 5.01, uz neke sitne šminke ličnog karaktera. Pa, javite kako služi! dPaun pomoc.zip
clipper.322 hercog,
Ima nešto što me živo interesuje : Zašto dosta ljudi kad im se pomene clipper i programiranje na njemu počnu da se smeju i upiru prstom na onog ko radi sa clipperom, drugim rečima šta mnogo njih ima protiv cli ppera? Hercog
clipper.323 dnikolic,
>> Zasto dosta ljudi kad im se pomene clipper i programiranje >> na njemu pocnu da se smeju i upiru prstom na onog ko radi >> sa clipperom, drugim recima sta mnogo njih ima protiv cli >> ppera? Stvarno ne znam ko bi to radio! Pa ako neko dize lovu, to su Kliperasi. dn
clipper.324 andrejl,
Zanimljivo, Kada linkujem sa .RTLinkom sa /PLL opcijom, prilikom startovanja programa javi mi Illegal format in loadable file. Problem nestaje kada startujem NG ?!? bye, andrejl
clipper.325 andrejl,
>│ Da li to znači da niz ne može da ide kao parametar? žini mi se da sam izvalio glupost. U Achoice() ide niz, zar ne? Mada ja Achoice() ne koristim, ali i dalje mi nije jasno zašto mi procedura nije radila. bye, andrejl
clipper.326 dejanr,
>> Zašto dosta ljudi kad im se pomene clipper i programiranje >> na njemu počnu da se smeju i upiru prstom na onog ko radi >> sa clipperom, drugim rečima šta mnogo njih ima protiv cli >> ppera? Možda zato što zavide onima koji pišu programe na Clipperu i sasvim pristojno žive od toga, što bi i oni radili da su u stanju? Istina je da Clipper u nekim apsolutnim merilima nije "neki" jezik (naročito mu zameram što ne kontroliše tipove pri dodeljivanju, fuj clipper ;), ali svoj posao (bar po meni) izvanredno obavlja.
clipper.327 sasa.m,
=> Zašto dosta ljudi kad im se pomene clipper i programiranje => na njemu počnu da se smeju i upiru prstom na onog ko radi => sa clipperom, drugim rečima šta mnogo njih ima protiv cli => ppera? Mislim da je ovo pitanje više za temu Misterije ;)))
clipper.328 bulaja,
│Zasto dosta ljudi kad im se pomene clipper i programiranje na njemu │pocnu da se smeju i upiru prstom na onog ko radi sa clipperom, drugim │recima sta mnogo njih ima protiv clippera? └─── Mogu ih razumeti u velikoj meri (a sam se uglavnom i bavim Clipper-om). Ovakvo misljenje je uglavnom rasprostranjeno jer je cinjenica da se Clipper-om bavi najveci broj kretena, sharlatana i slicnih kreatura, koji misle da njihovo "iskustvo", steceno na dvonedeljnom i.ak kursu ili neki slican nacin, vredi mnogo $$$ i da su oni sad neki "profesionalni" programeri. Programi (?) koje pisu su obicno trash. A i ja, iako radim u Clipper-u godinama, imam mnogo toga protiv njega, i jedva cekam da ga se konacno otarasim ;).
clipper.329 vili,
> Da li to znaci da niz ne moze da ide kao parametar? Moze: a:={1,"a",date(),.F.} fun(a) quit function fun(b) ? b[1], b[2], b[3], b[4] return Vili
clipper.330 vili,
Evo jos jednog DEMO programa za vodjenje evidencije o cekovima! Znam da su vam ovakvi programi na vr' *****, ali voleo bih da cujem nekoliko razlicitih misljenja o programu. Sta je dobro, a sta je lose u njemu. Ovo je prvi program koji sam radio u Clipperu. Bio bih zahvalan za bilo kakvo misljenje! Vili cekdemo.zip
clipper.331 hercog,
**> Stvarno ne znam ko bi to radio! Pa ako neko dize lovu, **> to su Kliperasi. Jeste to tačno, al pre neki dan mi se desilo sledeće : Pričam ja sa par ortaka (svi programiraju) i jedan re- če da programira neku bazu na clipperu za jednu firmu. Ostali umalo da umru od smeha - clipper :))))))))))))))))))). A i na drugim mestima srećem podsmehe kad se pomene cli- pper, ima toga i na sezamu Hercog
clipper.332 hercog,
**> A i ja, iako radim u Clipper-u godinama, imam mnogo toga **> protiv njega, i jedva cekam da ga se konacno otarasim **> ;). Na šta ćeš da pređeš? Hercog P.S. force, clarion, sql
clipper.333 bulaja,
│Na sta ces da predes? P.S. force, clarion, sql └─── It's a mystery to me. O;> Clarion - NE Force - najradje bi na njega, kad bi se pojavila neka novija verzija CodeBase - suvise spor, ali maybe Paradox - mrzi me da se petljam drugim standardima sem .DBF, ali maybe ;) SQL - do ya know what d hell is SQL??? O;>
clipper.334 dejanr,
>> > A i ja, iako radim u Clipper-u godinama, imam mnogo toga >> > protiv njega, i jedva cekam da ga se konacno otarasim >> > ;). >> >> Na šta ćeš da pređeš? Nije meni upućeno al da kažem mišljenje - ni na šta. Clipper je sjajan za to za šta je (baze podataka), i ništa ne valja za druge stvari. Zato i imam nameru da ga koristim za to što mu je namena dok se ne pojavi nešto bolje, a to teško da je force ili clarion, pa čak i fox (mada fox ima svojih prednosti, a valjda i ovi ostali) Voleo bih neki Clipper 6.0 koji bi ličio na 5.01 i samo imao kao dodatak deklarisanje tipova promenljivih i kontrolu tipova pri dodeljivanju vrednosti, naravno uz prijavljivanje greški tokom kompilacije. Jes da bi morao da izmenjam sve sorsove, ali bi mi programi bili znatno pouzdaniji što mi je veoma bitno.
clipper.335 slom,
Drug mi radi sa Clipperom 5.0 pa ima nekih problema. Kaze ovako: Ima programce koje radi sa nekih 20-30 datoteka na Clipper-u i sve je to radilo ko zmaj sa DOS-om 3.30. E sad na novom racunaru 386 i DOS-u 5.0 isti taj program nece da radi.. U Config-u ima: buffers=20 files=200 a u autoexec-u SET CLIPPER = f 150 ili tako nekako.. Program pocne da radi i posle jedno 14,15 datoteka javi otprilike nesto kao: DBF ntx Open Error Dos error 4 (culi smo se telefonom pa ne znam dal je bas takva poruka, al tu je negde..) Jel zna neko o cemu se radi?? SM
clipper.336 ztuke,
­> SQL - do ya know what d hell is SQL??? O;> Nije mi jasno što se ovde na sezamu svi toliko smeju i čude kada neko nešto pita pa u neznanju ili mahinalno pogreši? :(( Ako je omanuo ti mu se "MALKICE" nasmej ovako ;)), ne više, i u nastavku mu objasni! To bar nije teško! Ovo nije upušeno samo tebi već svima na sezamu! SQL nije database već je to neka vrsta jezika kojom se upravlja database-om na mreži (programom koji se upravlja pomoću datebase-a) ili tako nečim! Nisam stručnjak al' ovoliko znam! Dakle reč je o mogućnosti koju poseduju neke datebase (ne znam tačno šta) a ne o samom datebase-u kao programu! Sorry, nije bilo stručno al' je bilo opisno! ;)) ZT
clipper.337 andrejl,
>│ Stvarno ne znam ko bi to radio! Pa ako neko dize lovu, to >│ su Kliperasi. To je ono. on dize lovu, a ja ne pa ajde da ga blatim pa sledi clipper ovo clipper ono ... bye, andrejl
clipper.338 andrejl,
Ma primetio sam i ja da može, ali ona procedura i dalje ne radi pa sam je "ubio" i namestio lepšu :) bye, andrejl
clipper.339 hercog,
**> Evo jos jednog DEMO programa za vodjenje evidencije o **> cekovima! Zamerke : 1. Zašto korisnici : boca, bole i boban nisu dozvoljeni? 2. Pri unosu čekova brojevi čekova ne moraju da idu jedan za drugim (npr. 41958510, 41958529...) 3. Ukoliko se unese negativna uplata više nije moguće unositi uplatu 4. Uvod predugo traje 5. User interface nije baš prijateljski Pohvale : 1. Mogućnost vođenja računa za više korisnika 2. Evidencija namene čekova Hercog P.S. ovo su prijateljske zamerke
clipper.340 janko,
> Voleo bih neki Clipper 6.0 koji bi ličio na 5.01 i samo > imao kao dodatak deklarisanje tipova promenljivih i > kontrolu tipova pri dodeljivanju vrednosti, naravno uz > prijavljivanje greški tokom kompilacije. Jes da bi morao > da izmenjam sve sorsove, ali bi mi E da. Ja sam se čak zanosio da napišem takav prekompaljer, koji bi zahtevao i da su imena polja u bazi poznata pri prekompajliranju i da svaka promenljiva mora biti deklarisana, ali avaj, pojavio se Clipper 5.0, koji sada dozvoljava toliko igranja sa sintaksom, da mi se realizacija moje ideje učinila nemogućom?
clipper.341 ndragan,
/ Zašto dosta ljudi kad im se pomene clipper i programiranje Pa znaš, ima nekih šmekera koji su pravo sa spektruma prešli na kliper, i imaju dosta rupa u programerskom obrazovanju, misle da sve znaju, prave lepo našminkane aplikacije u kojima takođe ima mnogo rupa, više vode računa o zaštiti svog autorskog prava nego korisnikovih podataka, tu i tamo neke stvari napišu prljavo, i uglavnom posluju po principu "uzmi pare i beži". Mislim da ih ima malo koji imaju _sve_ ove osobine, ali ih mnogi imaju po nekoliko. Bilo je priče o takvima poslednjih meseci, mislim u temi "zastita" ili čak i u novi.racunari. Znak raspoznavanja je da uglavnom nisu napisali ništa ozbiljno u nekom drugom jeziku osim klipera. Među njima svakako ima i dobrih, ali većini nedostaje iskustvo. Oni moraju postojati - treba odnekud da se regrutuju budući dobri programeri. Ja se, recimo, ne naježim čim čujem da je neko "kliper programer", ali me vata strava kad vidim rezultate nekih od njih - brdo loše organizovanih datoteka, izveštaji koji rade sporo (zamisli dve sekunde pauze između štampanja dve stavke na fakturi), zavarivanje kojekakvih konstanti u program i tako dalje. Šteta je za takve ljude da nemaju stručnu pomoć - daj mi bilo koga od njih da ga malo pročešljamo u firmi, napravićemo od njega valjanog programera. Bue_ NDragan
clipper.342 nbatocanin,
> Da li to znači da niz ne može da ide kao parametar? proc main x := {1, 2, 3} pp (x) return proc pp (x) ? x[1], x[2], x[3] return Ne znam u čemu je štos, ali možeš poslati program pa da vidimo.
clipper.343 bulaja,
│Voleo bih neki Clipper 6.0 koji bi licio na 5.01 i samo imao kao dodatak │deklarisanje tipova promenljivih i kontrolu tipova pri dodeljivanju │vrednosti, naravno uz prijavljivanje greski tokom kompilacije. └─── I dugaaaacke nazive procedura (mrzim ogranicenje na 10 char :( ), pa nek bude sporo samo da mogu da im dajem razumljive nazive ;). Force inace lici na to sto tebi treba, al da je u Clipperu lakse raditi - jeste, i to dosta.
clipper.344 bulaja,
││SQL - do ya know what d hell is SQL??? O;> │└─── │Nije mi jasno sto se ovde na sezamu svi toliko smeju i cude kada neko │nesto pita pa u neznanju ili mahinalno pogresi? :(( └── Come on, nisam mislio nista lose, jednostavno mi dosla inspiracija jer se hell-sqL lepo rimuju ;). Evo sad cu se osmehnuti samo ;)) i ukratko objasniti sta je SQL. SQL (Structured Query Language) je standardni (ANSI) upitni jezik za relacione baze podataka. Znaci da definise kakve treba da budu naredbe za osnovne operacije sa bazom podataka - kreiranje, unosenje podataka, pretrazivanje, etc. Kao standard je nastao jos pocetkom 70.-ih godina, i prakticno je (sa manje ili vise izmena) implementiran u vecini danasnjih database sistema, izmedju ostalog i u dBaseIII+ (tj. i u ranijim verzijama), sto znaci i u svim programima nastalim na osnovama dB (a to opet znaci npr. i Clipper).
clipper.345 jpiri,
>> DBF ntx Open Error.... Da li je stavio SET CLIPPER = f 150 (kako si napisao) ili SET CLIPPER=f150 (bez razmaka!) kako treba da bude? Verovatno je to uzrok problema. Pozdrav.
clipper.346 alexa,
Koliko znam, u dBaseIII+ nema ni pomena od SQL-a.
clipper.347 gstojkovic,
// problemi sa clipperom// Ne ulazim u to koji je jezik za prave programere. Cinjenica je ta da clipper sasvim dobro radi ono za sta je namenjen, a to je rad sa bazama. Ja sam frisak u radu sa clipperom a najvise imam problema sa uredjivanjem stampe. Ne mogu najbolje da uredim izvestaj koji se sastoji iz mase podataka koje zadovoljavaju neki uslov. Zato molim sve one koji imaju po neki primer napisan u clipperu koji se bavi stampanjem izvestaja ili tako nesto slicno sto mi moze pomoci. U unapred zahvalan Gstojkovic.
clipper.348 vili,
> 1. Zasto korisnici : boca, bole i boban nisu dozvoljeni? "Bug" zaostao iz prethodne verzije (svako ime koje pocinje sa "b" nije bilo dozvoljeno iz odredjenih razloga). > 2. Pri unosu cekova brojevi cekova ne moraju da idu jedan za > drugim (npr. 41958510, 41958529...) Mislim da ovo ne necu menjati! Meni su uvek cekovi isli jedan za drugim pa pretpostavljam da je to uobicajeno stanje stvari kada uzimas cekove iz banke. Ako ti banka da cekove koji nisu jedan za drugim treba ih uneti jedan po jedan. > 3. Ukoliko se unese negativna uplata vise nije moguce unositi > uplatu Ako je uplata negativna znaci da si pogresio pa zato treba tu uplatu ispraviti u pozitivnu pa ce moci da se unosi i druga uplata! Pretpostavljam da uplata moze biti samo pozitivna :). P.S. Hvala na utiscima. Vili
clipper.349 nbatocanin,
> programa javi mi Illegal format in loadable file. Imaš li DOS=HIGH? Izbaci i rešio si problem.
clipper.350 nbatocanin,
čao mi je što me svi smatraju nekim zaštitnikom Clipper-a, pa će neko možda ovo protumačiti pogrešno. Ipak, da napomenem da sam najmanje svojih programa napisao u Clipper-u. Ljudi su u suštini veoma podložni šablonima. Većina onih koji kritikuje Clipper nikada i nije radila na njemu. Obično se on vezuje sa antipatičnim poslovima koji se njime rade: to je isto kao kad čistača ulice poistovetite sa poslom koji obavlja. Sasvim lično, Clipper se sjajno bori sa svojim problemima. Nezanemarljiva grupa (koju je neko nazvao računarskim snobovima) programera svrstava u neku grupu po jeziku koji koristi, baš kao što pravi snobovi ljude grupišu po odelu. Taj "programerski elitizam" je do skora (?) one koji nisu znali Prolog dovodio u opasnost da budu označeni kao neznalice. U istim krugovima se "tezgarenjem" nazivaju svi poslovi gde se čovek bavi "prizemnim" i "nedostojnim" poslovima. Sa krajem komunističkih navika valjda ćemo se osloboditi i ovih krugova (obruča). Napisi o performansama u stilu "Clipper 2 dana, Modula 2 minuta" su blago rečeno netačni i nemaju osnova. Ali, kao po logici da bolji vozač ima bolja kola, tako su i oni koji programiraju na mašincu bolji programeri od onih drugih. Iskreno, obično svi potenciraju kao najvažniju karakteristiku jezika performanse prevoda. Meni je daleko važnija udobnost, moć i elegancija jezika: briga me što će korisnik da čeka na obradu 10 sec manje, ako držim nos zapušen dok pišem program. A i korisnika, koliko sam ustanovio. Moram da napomenem i da sujeta vlada našim programerima u upravo neverovatnim količinama: da li ste sreli nekog programera, da mu kažete da nešto ne zna ili nije dobro, a da se ne naljuti? Iskreno, veoma retko! A ovih drugih, koliko oćeš. Kad bi se po nadutosti pojedinaca merila naša softversko-hardverska moć, bili bi bez premca. Na žalost, delovi rasprava na Sezamu govore ovo isto.
clipper.351 nbatocanin,
Bio je skoro u BYTE-u uporedni prikaz nekoliko DBMS paketa. U tekstovima se uglavnom govori o performansama. U tome je ubedljivo najjači FoxPro, sledi ga Clipper, a ostali su prilično udaljeni. žesto čujem priču o raznim sistemima (ZIM, Oracle, ...) kao nečemu daleko moćnijem od Clipper-a. Zvanično se ti ljudi malo oglašavaju: stiče se utisak da svi rade na Clipper-u. Voleo bih da čujem korisnike tih paketa u čemu je njihova prednost, po njima. Primera radi, meni performanse nikako nisu odlučujuće. Dakle, zašto koristiti baš DBMS taj i taj? I samo napred, pitanje nije zlonamerno!
clipper.352 nbatocanin,
Meni stroga tipizacija nikada nije nedostajala, a mislim da bi u Clipper-u više smetala nego koristila. Jer, priznaćete da je teško deklarisati ovakav niz: {1, "ABC", {1, 2, 3}, { |x| x++ }} u jeziku koji traži strogu tipizaciju, a još teže kreirati ga po potrebi, za vreme izvršavanja programa. Tipizacija podataka u Clipper-u bi izazvala pravu lavinu izmena, i mislim da nikad neće biti uvedena u punoj meri. O nekoj slaboj tipizaciji bi moglo da se porazgovara. žini mi se da ako je programer dosledan, ne bira jednoslovne nazive promenljivih, pravi dovoljno kratke module, neće mu previše zasmetati ova osobina. Meni lično ova osobina odgovara - Clipper mi, između ostalog, služi za "brzo" pisanje programa (oni koji ovo rade, razumeće), a deklaracije pri tome, uprkos svim pravilima ovog sveta, SMETAJU! Interesantno rešenje je notacija koju zagovara Nantucket (mislim da se zove "mađarska"): nazivi svih promenljivih počinju prefiksom koji označava tip i značenje promenljive. Na primer, nCount je brojač, acTmp je niz stringova, itd.
clipper.354 janko,
> Ne ulazim u to koji je jezik za prave programere. > Cinjenica je ta da clipper sasvim dobro radi ono za sta je > namenjen, a to je rad sa bazama. Ja sam frisak u radu sa > clipperom a najvise imam problema sa uredjivanjem stampe. > Ne mogu Rad sa bazama uključuje i prikaz njihovog sadržaja. I sam vidiš da to NE 'radi sasvim dobro.' :)
clipper.355 janko,
EJ, LJUDI! JAKO JE VAčNO DA PRE NEGO ŠTO ODGOVORITE NA OVU PORUKU, PROžITAJTE JOŠ JEDNU MOJU KOJU DANAS PIŠEM, U OVOJ ISTOJ TEMI! U suprotnom, bojim se, počeće opet još jedno nadjačavanje na Sezamu, što uopšte ne volim. > Clipper-u više smetala nego koristila. Jer, priznaćete da > je teško deklarisati ovakav niz: > > š1, "ABC", š1, 2, 3ć, š đxđ x++ ćć (Zgroz!) (trnci mi prođoše kroz kičmu) > žini mi se da ako je programer dosledan, ne bira > jednoslovne nazive promenljivih, pravi dovoljno kratke > module, neće mu previše zasmetati ova osobina. Pa da, što bi mu smetala. Lepo napiše svoje programersko remek-delo, koje radi neku iole složeniju obradu (čitaj: dovoljno da program ima if-ove). Prevede program. Kompajler kaže sve je u redu. Proda program. Program fino radi. Ali jedna grana nekog if-a nikada se ne izvrši tokom testiranja i sledeća 2-3 meseca. A onda: kupac vidi magičnu poruku (parafraziram): Variable not found at module LOVA, line 123 Tako se pišu remek dela, zar ne? :)
clipper.356 janko,
> žesto čujem priču o raznim sistemima (ZIM, Oracle, ...) > kao nečemu daleko moćnijem od Clipper-a. Zvanično se ti > ljudi malo oglašavaju: stiče se utisak da svi rade na > Clipper-u. Voleo bih da čujem korisnike tih paketa u čemu > je njihova prednost, po njima. Primera radi, meni > performanse nikako nisu odlučujuće. Dakle, zašto koristiti > baš DBMS taj i taj? I samo napred, pitanje nije > zlonamerno! Da ne dužim. :) Daleko moćniji sistemi baza podataka, (a Clipper čak ni to nije, subjektivno) obično, verovali ili ne, imaju daleko slabije perfomanse. Ali, upravo su moćniji zato što ti je 'nos daleko zapušeniji' dok pišeš aplikacije. Ideja i jeste da se čovek-programer što manje bavi trivijalnim stvarima. Po pravilu su takvi sistemi interpreteri. Po pravilu, za izveštaj koji možeš da generišeš sa dva-tri reda u SQL-u, naprimer, morao bi da se oznojiš, i pišeš satima na Clipperu. SQL iskazi se, inače, po pravilu ugrađuju u C, FORTRAN, pa i COBOL, kada se pišu aplikacije. Problem je što takve aplikacije nisu nezavisne: svaki korisnik MORA da kupi DBMS - database management system, koji je, u suštini, neki superjak rantajm modul, odnosno, nadgradnja operativnog sisteme, napr. Oracle. Pa što svi ne pređu na SQL i slična čuda? Vrlo prosto: kod nas se programeri za PC angažuju sa 'Je li, mali, ti si onaj što zna sa kompjuteri, deder, napiši mi to i to.' Naručiocima je prilično teško objasniti da pre nego što počnete da im pišete program treba da dokupe još neki MB memorije, i, da biste im napisali program, moraju prvo da kupe neki drugi program, koji NE RADI njihov problem a košta dve hiljade dolara. Sve se ovo odnosi, naravno, na programiranje na PC-jima. Na jačim mašinama je sasvim druga priča. I na njima su sistemi za baze izuzetno spori. Ako hoćete brrrz program, morate da pišete na COBOL-u. (!) (Baš mi je žao što taj jezik (još) ne znam. Karakteristično je da ga i kod nas i u svetu uglavnom predaju samo na višim školama, i na nekim levim mestima, pa ga malo jakih programera zna, što apsolutno nije u redu). Ali, opet, često je brzina izvršavanja nebitna. Bitno je brzo podesiti program prema zahtevima koji se značajno promene, a da se ne unosi nova nestabilnost u sistem. Hvala bogu, moji omiljeni računari, tipa SUN microsystems i klonovi, sve su jeftiniji. Nažalost, kod nas ima sve manje para, inače bi i mi već sada osećali ono širenje kakvo je PC imao svojevremeno, ali sa SUN klonovima, na kojima bismo, naravno, pisali ljudski. Šta je bottom line ove priče? Pa možda to da sam ovaj računar na kome radim zaradio pišući aplikacije na Clipper-u, i da još nisam bio u prilici da mi neko plati da pišem na nečem drugom. A kad budem bio, drage volje ću pisati na tim divotama. Ima li ponuda? mail send janko :> Hvala na pažnji.
clipper.357 dejanr,
>> Koliko znam, u dBaseIII+ nema ni pomena od SQL-a. Verovatno je mislio na dBASE IV koji ima SQL (kakav - takav). Mada tim dBASE-om IV ne da nisam oduševljen nego sam ga i sa disketa obrisao ;)
clipper.358 dejanr,
>> Meni stroga tipizacija nikada nije nedostajala, a mislim da bi u >> Clipper-u više smetala nego koristila. Jer, priznaćete da je teško >> deklarisati ovakav niz: >> >> {1, "ABC", {1, 2, 3}, { |x| x++ }} Tačno, ali moram reći da meni takav niz nije potreban, il ajd' da kažem "jako mi je retko potreban". A kontrola dodeljivanja (tj. njen nedostatak) prave svakodnevne (ili bar svakonedeljne) probleme.
clipper.359 ppekovic,
>> Rad sa bazama uključuje i prikaz njihovog sadržaja. I sam vidiš >> da to NE 'radi sasvim dobro.' :) Lepo je čovek rekao da je početnik i da se zbog toga ne snalazi najbolje sa načinima za pripremu i slanje izveštaja na štampač. Dakle, to što neko nešto nezna, neznači da određeni kompajler tu mogućnost nema. S obzirom da si izjavio da si radio u Clipper-u, onda bi trebao da znaš da clipper pruža sasvim solidne mogućnosti za generisanje izveštaja za štampu, pa pored "čisto programerskog" č say ... sistema, tu je i mogućnost štampe uz pomoć .frm i .lbl fajlova. Paya
clipper.360 ppekovic,
>> 2-3 meseca. A onda: kupac vidi magičnu poruku (parafraziram): >> >> Variable not found at module LOVA, line 123 Viđao sam programe na "ozbiljnim" jezicima koji su me pozdravljali sa RUN-TIME EROOR ili čak blokiranjem računara. Dakle, sve to zavisi od znanja i umeća programera. Clipper ima odličan error sistem koji ti pruža mogućnost da u ovakvim slučajevima program prepusti kontrolu tvom sistemu za obradu greški koji će se pobrinuti da podaci budu bezbedni, upisati u LOG fajl šta se desilo, i ostaviti odgovarajuću poruku korisniku da se javi autoru programa. >> Tako se pišu remek dela, zar ne? :) Kao što sam već napisao, slažem se sa tobom, tako se ne pišu remek dela. Zato hvala clipper-u na onako divnom eroor sistemu! Paya
clipper.361 hercog,
Pre neki dan uvatim ja i napišem sledeće : procedure pro(pass) pass2="" for i:=1 to len(pass) pass2=pass2+chr(asc(substr(pass,i,1))+10) next i pass=pass2 return I sadržaj promenljive pass ostane nepromenjen. Zašto? Hercog
clipper.362 hercog,
**> Voleo bih neki Clipper 6.0 koji bi ličio na 5.01 i samo **> imao kao
clipper.363 andrejl,
Da pitam za nečije mišljenje : Neko ko se bavi Clipper-om treba odjednom (bez prethodnih iskustava) da uradi software u Foxbase (po mogućstvu) koji će da radi pod Unix-om. Elem taj neko u životu pre nije radio ništa po Unixom i sad paf.:) Kakve su mu šanse ? bye, andrejl P.S. dajte ljudi ohrabrite me
clipper.364 janko,
> Viđao sam programe na "ozbiljnim" jezicima koji su me > pozdravljali sa RUN-TIME EROOR ili čak blokiranjem > računara. Dakle, sve to zavisi Ali ne zbog greške u kucanju programa, već zbog konceptualnih greški ugrađenih u program. > Kao što sam već napisao, slažem se sa tobom, tako se ne > pišu remek dela. Zato hvala clipper-u na onako divnom > eroor sistemu! > Ma ni 'eroor' i error sistem ne obezbeđuju te od toga da rad može bezbedno da se NASTAVI, već samo da se malo bezbednije PREKINE. A imaj u vidu da se rad prekida najverovatnije zbog obične greške u kucanju imena promenljive! Tako nešto u jezicima u kojima se deklarišu promenljive je potpuno nemoguće.
clipper.365 janko,
> nema. S obzirom da si izjavio da si radio u Clipper-u, > onda bi trebao da znaš da clipper pruža sasvim solidne > mogućnosti za generisanje izveštaja za štampu, pa pored > "čisto programerskog" č say ... sistema, tu je i mogućnost > štampe uz pomoć .frm i .lbl fajlova. Znam. Znam i ograničenja tih koncepata koje pruža. I baš su svojska. Hajde pomoću .FRM ili .LBL fajlova probaj da generišeš izveštaj koji nije potpuno nalik onome što su tvorci dBase-a zamislili. I jedni i drugi su pogodni, po meni, samo za kućnu upotrebu (kada interaktivno, za sebe, i samo jedanput, želim da prikažem neke podatke). Teško da se mogu ugraditi u neku aplikaciju, iole sofisticiraniju. No, nije potrebno da pričamo o tome, bolje da se raspravljamo oko toga koji su koncepti generisanja izveštaja najbolji, i ko kakve primenjuje, kako bismo svi pisali bolje programe. Napr. ja izveštaje generišem obavezno u datoteku, koja obično pre slanja na štampač 'prođe' i kroz tekst formater koji sam sam napisao, naravno ne u Clipperu. To je vrlo zahvalan koncept. U Oraklu, naprimer, postoje čak dva nivoa reformatera sirovih izveštaja. Takođe, mislim da je prilično neisplativo, sa stanovišta prelaska na nove verzije, pisati dodatne funkcije za Clipper u mašincu, osim piscima FUNCKY i sličnih paketa koji od toga žive. Ipak, mislim da se SAMO korišćenjem Clipper-a ne može napraviti elegantna aplikacija. Itd, itd. Možda vam je sad jasnije zašto sam rekao to što sam rekao. Verujte, sve što sam napisao ima neki smisao (B.Đ). :)
clipper.366 nbatocanin,
> Kao standard je nastao jos pocetkom 70.-ih godina, i prakticno je (sa > manje ili vise izmena) implementiran u vecini danasnjih database > sistema, izmedju ostalog i u dBaseIII+ (tj. i u ranijim verzijama), > sto znaci i u svim programima nastalim na osnovama dB (a to opet > znaci npr. i Clipper). dBASE jezici ne podržavaju SQL, jedino nisam siguran za dBASE IV. Primera radi, za Clipper se mogu dokupiti programi koji omogućavaju SQL naredbe.
clipper.367 andrejl,
>│ Ne znam u čemu je štos, ali možeš poslati program pa da >│ vidimo. Kasno je. Uništio sam ga :)
clipper.368 andrejl,
>│ I sadržaj promenljive pass ostane nepromenjen. Zašto? Ja probao i kod mene se menja pass pre i posle petlje. Ne znam šta je problem bye, andrejl
clipper.369 vkrstonosic,
>> Ma ni 'eroor' i error sistem ne obezbeđuju te od toga da rad >> može bezbedno da se NASTAVI, već samo da se malo bezbednije >> PREKINE. A imaj u vidu da se rad prekida najverovatnije zbog >> obične greške u kucanju imena promenljive! Tako nešto u Pa postoji i nešto što se zove testiranje programa. Svaki program, pre nego što se pusti u rad, prvo se dobro istestira u samoj firmi, posle se jedno vreme radi kod kupca i to sa unošenjem nebitnih podataka, pa se tek onda počinje stvarno korišćenje programa. Ja svaki program probam mnogo puta i prolazim kroz sve moguće kombinacije. Kako si to istestirao program (i prodao), ako uopšte nisi stigao do odredjene grane u programu ??? To opet dolazi do priče o "raznim" programerima, a oni ovde nisu ni bitni.
clipper.370 hercog,
**> Mislim da ovo ne necu menjati! Meni su uvek cekovi isli **> jedan za drugim pa pretpostavljam da je to uobicajeno **> stanje stvari kada Bogme kod pošte nije takav slučaj. Ja dobijam čekove koji ne idu jedan za druim po brojevima... Hercog
clipper.371 bulaja,
│Verovatno je mislio na dBASE IV koji ima SQL (kakav - takav). Mada tim │dBASE-om IV ne da nisam odusevljen nego sam ga i sa disketa obrisao ;) └─── Malo sam gledao po literaturi koju imam, i sad sam malo zbinjen sta je zvanicno definisan SQL. Kao jedan se spominje onaj koji je nastao jos 70.-ih i za koji se kaze da je izmedju ostalog ugradjen cak i u dB II (izvor neka knjiga o Oracle-u), dok sam naisao i na ANSI standard za SQL koji je zvanicno izdat tek '86 (sto znaci da nema sanse da je bio pre dB IV). A inace i ja se secam da je dB IV bio uzas ...
clipper.372 bulaja,
│clipper pruza sasvim solidne mogucnosti za generisanje izvestaja za │stampu, pa pored "cisto programerskog" Z say ... sistema, tu je i │mogucnost stampe uz pomoc .frm i .lbl fajlova. └─── Ma ti .frm i .lbl su blagi uzas, jos do ksam se patio samo sa dBase (tj. FoxBase) trudio sam se da ih izbegavam koliko god je to bilo moguce. Cak i obicno list ... to print mi je bilo bolje. A "programerski" @ .. say sistem je vise nego dovoljan i sasvim solidno uradjen, ne vidim sta mu fali?
clipper.373 bulaja,
│procedure pro(pass) │ pass2="" │ for i:=1 to len(pass) │ pass2=pass2+chr(asc(substr(pass,i,1))+10) │ next i │ pass=pass2 │return │ │I sadrzaj promenljive pass ostane nepromenjen. Zasto? └─── Kakva misterija! O;> Posto imam resign na extra:misterije, evo ipak odgovora ovde ;). Resenje: izbaci pass kao parametar, posto ga vec koristis kao public promenljivu nema svrhe da ga tako deklarises, zato ti i vraca staru vrednost. Konstruktivna kritika: konstrukcija procedure je uzasna - napisi bre normalnu funkciju sa parametrom a:=pass koja vraca b:=novi_pass. Konstruktivni savet: nauci se da deklarises kao local/ private promenljive poput "i" i "pass2" (to kad naucis ono prvo ;). Kriticko opazanje ;) : sigurnost zastite ti je DJ O;>.
clipper.374 nbatocanin,
Ako se program prevodi sa /W biće prijavljene sve nedeklarisane promenljive. Pri interpretiranju izraza (makroi) jedini način za kontrolu su "statički simulatori izvršavanja", što ne sadrže u sebi ni jezici sa veoma strogom tipizacijom, pa sledi da ovo tvoje nije baš tačno. A i pričaj malo tiše. Pozdrav, Nenad
clipper.375 nbatocanin,
Mislim da bi se statističkom analizom utvrdilo da neki ljudi više prave sintaksne (pogreše pri kucanju imena promenljive) a drugi logičke greške (program je sintaksno ispravan, ali ne radi). Sad je samo pitanje kojoj grupi ljudi prilagoditi jezik. Nešto se setih, a da li koristite opciju /W pri prevođenju? Ona javlja sve nedeklarisane promenljive, čime se jako smanjuje verovatnoća greške. Jer, da bi onda naredba Pera := Mika + 1 proizvela sintaksnu grešku, pri pogrešnom kucanju se mora "potrefiti" neka već deklarisana promenljiva ili sabrati broj sa stringom, što je manje verovatno. Voleo bih da neko pošalje svoj primer iz prakse gde je ova osobina zaslužna za grešku, da malo proanaliziramo.
clipper.376 nbatocanin,
> Daleko moćniji sistemi baza podataka, (a Clipper čak ni to > nije, subjektivno) Zašto? žini mi se da se Clipper sasvim solidno uklapa u školske definicije DBMS-a. > Po pravilu, za izveštaj koji možeš da generišeš sa dva-tri reda u > SQL-u, naprimer, morao bi da se oznojiš, i pišeš satima na Clipperu. Ja solidno poznajem SQL i ne čini mi se da ja baš ovako. > Ako hoćete brrrz program, morate da pišete na COBOL-u. (!) (Baš mi je > žao što taj jezik (još) ne znam. Da ne ispadne da se hvalim, ali ja znam COBOL i ovo mi zaista nije ni poznato ni logično. Ostatak poruke govori o tvom odnosu prema poslu i nije odgovor na moje pitanje. Dakle, pitanje i dalje ostaje otvoreno. Može li neko ukratko reći bar za FoxPro? NDragane?
clipper.377 nbatocanin,
Zato što se PASS mora prenositi po adresi, da bi izmena bila prihvaćena. Tada se f-ja poziva sa F(@PASS). Ali, nemoj bre tako da programiraš! Funkcije služe da vrate neku vrednost, pa smisli nešto. Kad ćeš da pošalješ parče onog tvog programa sa SORT-om što je brljalo po disku? Ovo bi i druge interesovalo. Pozdrav, Nenad
clipper.378 dejanr,
>> Pa postoji i nešto što se zove testiranje programa. Svaki program, >> pre nego što se pusti u rad, prvo se dobro istestira u samoj firmi, >> posle se jedno vreme radi kod kupca i to sa unošenjem nebitnih >> podataka, pa se tek onda počinje stvarno korišćenje programa. Tačno, ali je bolje da pri samom prevođenju kompjuter pronađe što više grešaka i potencijalnih grešaka! Rad računara je mnogo jeftiniji od rada čoveka.
clipper.379 draganf,
> > Da pitam za nečije mišljenje : > Neko ko se bavi Clipper-om treba odjednom (bez prethodnih > iskustava) da uradi software u Foxbase (po mogućstvu) koji > će da radi pod Unix-om. Elem taj neko u životu pre nije > radio ništa po Unixom i sad paf.:) > Kakve su mu šanse ? > Otprilike dobre ako imaš barem spisak maredbi koje postoje samo u jednom od ta dva jezika (npr. ACHOICE ni u kom slučaju ne postoji u Foxbase - u). Editorom možeš automatski promjeniti naredbe koje rade isti posao ali imaju drugačiji naziv (npr. COMMIT u FLUSH). žini mi se da su naredbe za menije nešto drugačije. Sve u svemu nije neki problem izuzev toga što nisi prije koristio Foxbase. Mogu ti pomoći u nekum stvarima pošto koristim Clipper i Fox istovremeno. što se tiče Unix -a tu neznam šta da ti savjetujem, ali imaš priliku da upadneš u to i nešto naučiš. Tu je sad stvar koliko imaš vremena da to uradiš. Dragan
clipper.380 vbole,
>> š1, "ABC", š1, 2, 3ć, š đxđ x++ ćć > > (Zgroz!) (trnci mi prođoše kroz kičmu) Šta mu fali ? Tako ( slično ) možeš da deklarišes ček, rešio si problem sa korisnikom, sumom, uplatom u tri rate itd. Dodeli imena poljima i pristup je logičan i shvatljiv.Ako dodaš i komentar... > kaže sve je u redu. Proda program. Program fino radi. Ali jedna > grana nekog if-a nikada se ne izvrši tokom testiranja i sledeća > 2-3 meseca. A onda: kupac vidi magičnu poruku (parafraziram): A bez ove deklaracije to ne može da se desi ? To je greška koja se obično pojavljuje kod krpljenih programa, koji nemaju logičan tok programa, nego se dodaje opcija na opciju, a ne na glavni program. bye... vbole
clipper.381 vkrstonosic,
>> Tačno, ali je bolje da pri samom prevođenju kompjuter pronađe što više >> grešaka i potencijalnih grešaka! Rad računara je mnogo jeftiniji od >> rada čoveka. Slažem se, ali ipak u testiranju programa treba probati sve opcije i sve slučajeve, jer sintaksne greške su najmanji problem (najlakše se nalaze), mnogo veći problem može da nastane zbog logike. Uostalom, Clipper 5.01 dozvoljava da se sve promenljive deklarišu. Posle treba kompajlirati sa opcijom /w i kompajler će naći sve pogrešno napisane promenljive, jer nisu definisane.
clipper.382 janko,
> podataka, pa se tek onda počinje stvarno korišćenje > programa. Ja svaki program probam mnogo puta i prolazim > kroz sve moguće kombinacije. Kako si to istestirao program > (i prodao), ako uopšte nisi stigao do odredjene grane u > programu ??? To opet dolazi do priče o "raznim" > programerima, a oni ovde nisu ni bitni. Prolaz kroz sve moguće kombinacije je nešto što u teoriji testiranja spada u tzv. metode bele kutije. Da bi testirao neku proceduru, moraš ispred sebe imati njen sors i napisati test primere za njega i stabove ili drajvere, zavisi od toga kojim redom testiraš delove programa. Recimo da procedura ima 10 if-else-va, jedan iza drugog. Ukupno postoji 2**10=1024 putanja kroz tu proceduru. Ti ih, naravno, po svom iskazu, prođeš sve? :) To znači da program od sedam hiljada linija (nije to puno za program na Clipper-u, to i sam, valjda, znaš) testiraš koliko godina, pre nego što ga daš kupcu? Ili priznaješ da spadaš u "razne" programere, po sopstvenoj definiciji? Uostalom, prvo pisanje programa nikad nije kritično koliko kasnije izmene. Ti, naravno, i posle svake izmene, smisliš nove test primere, pa opet istestiraš ceo program? > pre nego što se pusti u rad, prvo se dobro istestira u > samoj firmi, posle se jedno vreme radi kod kupca i to sa > unošenjem nebitnih podataka, pa se tek onda počinje > stvarno korišćenje programa. Ja svaki Testiranje unošenjem NEBITNIH podataka je izuzetno slabo testiranje. - * - Nantucket je svestan problema koji nastaju zbog toga što kompajler ne može da uoči greške o kojima sam pričao. Oni pričaju o leksičkoj i dinamičkoj vidljivosti (lexical and dinamical visibility), uvode Local definiciju, savetuju da se svaka promenljiva mora deklarisati pre upotrebe, i da 'lexical scoping' daje 'greater degree of protection.' Ipak, Clipper pri prevođenju ne zna koje su promenljive prave, koje su polja iz baza, a koje niodakle. Znaš, davne '86. kada sam razmišljao o svom pozivu, a poznajući teorijske domete u računarskim naukama, brinuo sam se da li će za nekoliko godina, možda, softverski stručnjaci postati skoro nepotrebni. Onda, kada sam video šta se događa u svetu sa ovim igračkama PC-jima, postalo mi je jasno da gnjusni proizvođači svi proizvode tako, da se to ne dogodi. To je za nas koji zarađujemo u toj struci dobro. Tako gledano, čak i to što je Clipper takav kakav jeste je dobro -- ne daj bože da je savršeniji, pa tako, razumem i neke tvoje stavove, a na neki način se i slažem sa njima, više haosa u računarstvu, više posla! :) Što opet ne znači da pravi stručnjak treba da slepo veruje da je takav haos najbolji način i privatno. Stručnjak od spoljnjeg haosa pravi svoj interni mir, i po tome se razlikuje od onih drugih :) A koliko ja ozbiljno pristupam poslu, možda bi upravo trebalo moje ostale poruke u ovoj temi da ti govore, pa ih pročitaj, ako nisi. Za kraj, divna konstatacija NBatoćanina. > Moram da napomenem i da sujeta vlada našim programerima u > upravo neverovatnim količinama: da li ste sreli nekog > programera, da mu kažete da nešto ne zna ili nije dobro, a > da se ne naljuti? Iskreno, veoma retko! A ovih drugih, > koliko oćeš. Kad bi se po nadutosti pojedinaca merila naša > softversko-hardverska moć, bili bi bez premca. Na žalost, > delovi rasprava na Sezamu govore ovo isto. T-T-T-Thats all falks!
clipper.383 ivans,
* Testiranje unosenjem NEBITNIH podataka je izuzetno slabo * testiranje. Da, zato se i uvodi paralelna obrada podataka, svaki put kada dode do izmena u programu (u novoj verziji softvera :)... Pozdrav, Ivans.
clipper.384 vkrstonosic,
>> redom testiraš delove programa. Recimo da procedura ima 10 >> if-else-va, jedan iza drugog. Ukupno postoji 2**10=1024 putanja Da, redovno mi dešava da u programima imam 10 if-ova jedan u drugom. >> nego što ga daš kupcu? Ili priznaješ da spadaš u "razne" >> programere, po sopstvenoj definiciji? Tja, klasičan metod diskusije na Sezamu, sve mora da bude lično. Kakav sam ja programer je moj problem, ako te posebno zanima, nema problema, reci i vrlo radu ću ti demonstrirati neke svoje programe, objasniti ti šta sve rade i kako rade. >> Testiranje unošenjem NEBITNIH podataka je izuzetno slabo >> testiranje. Pod nebitnim podacima, podrazumevam realne podatke i realno korišćenje programa, uz razne ograde, kao čest backup, vodjenje podataka onako kako je vodjeno ranije, sve dok se ne ustanovi da je program pouzdan i da se na njega može osloniti. Dužina ovog perioda zavisi od mnogo faktora. Ovo naravno važi u slučaju kada se pravi karakterističan program za odredjenu firmu i primenu. U slučaju "štanc" programa, stvar je drukčija.
clipper.385 nimi,
/da ne duzim. :) Povodom toga da u sql covek moze da napise izvestaj u dva reda. moze ali samo trivijalan takav se u Clipper-u moze dobiti sa naredbom list a sql-ov join se moze prevazici u vecini slucajeva ili jednostavnim set relation ili prostijom funkcijom koja pretrazuje tabelu(datoteka tipa .dbf u clipper-u) Neznam da li si pokusao da u sql prebacis da ti jedna kolona ide u zaglavlje tabele za to bi morao da napises program u Pro*C-ju ili Pro*Cobol-u Da je sql mocan kao sto mislis ljudi iz oracla ne bi ubacili PL/SQL koji u svojoj strukturi predstavlja proceduralni jezik, jos uvek ne snabdeven nizovima(najavljeno za verziju 1.1). Na tvojoj omiljenoj masini (Sun SPARC ) ja trenutno radim na ORACLU V6.0 i nisam prezadovoljan brzinom iako imamo dva servera jedan ocenjen sa 28 mips-a a jedan sa 18. Jer ORACLE pojede onako divnu masinu, pa sem RDBMS-a je sve ostalo maltene besmisleno koristiti i ako su ustede u programiranju velike narocito ako si sklon maltretiranju korisnika da pritiskaju funkcionalne Ú]tipke. Ne kazem da je lose raditi na ORACLU narocito za one koji pocinju jer se sa malo rada mogu postici neke stvari za koje je bilo ranije potrebno puno vremena narocito na velikim masinama. Sto se Clipper koncepcije tice vise mi odgovara da na jednom mestu saspem sve sto znam nego da kroz par prozora ispisem ono sto zelim. Sa 6 i nije tako lose raditi ali sa 5.1.xx je cist mazohizam . pozdrav MNikolic.
clipper.386 hercog,
**> Resenje: izbaci pass kao parametar, posto ga vec **> koristis kao public Otkud ti ideja da je pass public promenljiva? **> Kriticko opazanje ;) : sigurnost zastite ti je DJ O;>. Nije mi ni trebalo nešto bolje, ovo je samo da se zamažu oči neznalicama ;) **> vrednost. Konstruktivna kritika: konstrukcija procedure **> je uzasna - Šta fali proceduri? Hercog
clipper.387 nbatocanin,
Otkrio sam grešku u programu za generisanje izveštaja R075CLPR.ZIP. Evo ispravljene verzije. Izvinjavam se ako sam vam ovim napravio neke neprilike. Pozdrav, Nenad clp.zip
clipper.388 nbatocanin,
Kada se Clipperov sistem za upravljanje datotekama približi granici od 20 otvorenih datoteka, mogu se desiti vrlo čudni efekti: u dibageru nestaje deo teksta, prijavljuju se neke čudne i nepostojeće greške i sl. Tada treba izvršiti DOS komandu SET CLIPPER = FXX ( XX > 20 ) i stvar će se srediti. Može se i program startovati sa: PROG //FXX
clipper.389 dpaun,
Clipper braćo i drugovi, čeleo sam ozbiljnu razmenu iskustava sa memo podacima. Sve diskusije za i protiv Clp - bez ovog njegovog dela - su falične. Avaj. Stavio sam svima na raspolaganje kompletnu help radionicu (vidi poruku 5.321 i fajlić POMOC.ZIP uz njega). Avaj. ====> O sî va rugac vuoj đi minje! Za uzdarje, molim za odgovor na sledeće pitanje: 1) čeleo bih da registrujem svoj program. Šta sve treba pripremiti i gde odneti. (Priča se da ima neka autorska agencija, da treba odneti listinge i sl. Da li je neko od vas to već radio? Molim za uput.) dPaun
clipper.390 bulaja,
│Otkud ti ideja da je pass public promenljiva? └─── Pa bez obzira da li si je deklarisao kao private ili public, ona je za proceduru koju pozivas vidljiva. │Sta fali proceduri? └─── Sto nije funkcija.
clipper.391 andrejl,
>│ Kad ćeš da pošalješ parče onog tvog programa sa SORT-om >│ što je brljalo po disku? Ovo bi i druge interesovalo. SORT i brljanje na disku ? Jedan moj programčić je sa sortom kod mene savršeno radio, dok je na drugoj mašini kad bi se broj slogova nešto povećao brljao i brljao. Da nije u pitanju neka konfiguracija sistema ?
clipper.392 andrejl,
>│ nisi prije koristio Foxbase. Mogu ti pomoći u nekum >│ stvarima fox sam koristio (istina kratko) Hvala na utehama. Sad samo da stvorim vremena :) P.S. prethodna iskustva se odnose na Unix O:)
clipper.393 dpaun,
Evo još jedne osobine Clp5.01 Uključio sam u svoj program FILEMAN.PRG iz priručnog .prg paketa (omgućava da se iz vaše aplikacije šet- kate po direktorijumu i sl.). U početku je bili kam sve u redu, ali kako mi se prog povećavao (a rastao je ko kvasac!) - u pojedinim trenucima primećivao sam u spisku dos fajlova neke "fantome" (kao: ABGHHUT i slično), koji su se gubili po izlasku iz programa! Poslao sam FILEMAN bratu nBatocaninu na pregled, ali - ništa, veli on! I zaista ništa kad se FILEMAN prevede i startuje sam za sebe. Oni fantomi pojavlju- ju se samo kad je program pozamašan. Posle dužeg eksperimentisanja - shvatih: ti fantomi su nazivi internih overleja! Ovo sam zaključio po tome što program "poludi" kad ih obrišem, a kad siđem u DOS (ako u međevremenu ne dođe do blokade) i startam ponovo - sve bude u redu. Ne znam da li ima načina da se ovo spreči? dPaun
clipper.394 hercog,
Evo nečeg interesantnog : use datoteka go top sort on polje to datoteka close databases Ovo je deo jednog programa koji je pravio probleme dok nismo primetili da je sortiranje u istu datoteku. Naime ovaj programa će s vremena na vreme da izbriše celokupnu datoteku (sve podatke i strukturu), da osta- vi njeno ime na disku. Kad to uradi, sledeći put kad se pozove ta dato- teka dobiće se poruka : CORUPTION DETECTED ON DATOTEKA.... Hercog
clipper.395 hercog,
**> ====> O sî va rugac vuoj đi minje! ???? Hercog
clipper.396 bulaja,
│Otkrio sam gresku u programu za generisanje izvestaja R075CLPR.ZIP. │Evo ispravljene verzije. └─── Eno je u \RSOFT\r075clpr.zip umesto stare.
clipper.397 dejanr,
>> Ne znam da li ima načina da se ovo spreči? Pa, naravno da nema, program ih kreira omogućavajući time da se izvršava nešto što inače ne bi stalo u memoriju. I to se dešava sasvim automatski, što je glavna prednost clipper-a 5 nad slavnim prethodnikom.
clipper.398 dpaun,
>> >> Ne znam da li ima načina da se ovo spreči? >> >> Pa, naravno da nema, program ih kreira omogućavajući time >> da se izvršava nešto što inače ne bi stalo u memoriju. Nisam mislio da se spreči kreiranje internih ovl, već da se spreči prikazivanje njihovih imena u listi DOS fajlova koju prikazuje FILEMAN, jer to unosi zabunu. Postoji li neki Clipperov način, ili se mora pribeći triku. Kom i kako, važno je jako. dPaun
clipper.399 dpaun,
>> **> ====> O sî va rugac vuoj đi minje! >> >> ???? A, to? To je jedan stari balkanski jezik. Pogodi koji. dPaun
clipper.400 dpaun,
cLp Braćo. Clp 5.01, kao ni ranije verzije, ne može da dođe do oznake tekućeg drajva (ili uređaja, kako kaže prof. Darko V). CURDIR() vraća ime(na) dir, ali bez drajva. Kod Strelija ima jedan primer u C-u (čini mi se). Nisam ga isprobao jer nemam C. Koristio sam dosetke preko RUN DIR > BrljBrlj, pa onda AT, MEMOREAD() i slično. Nezgodno, prilično. Ima li neko asemblersko rešenje? => Mjar fi drag sîn spunjec! dPaun, uom bun.
clipper.401 bulaja,
│use datoteka │go top │sort on polje to datoteka │close databases └─── Aaaaaaaahhhhh, da li je ovo resenje misterije oko BUG-a clipper-ovog SORT?
clipper.402 hercog,
**> u spisku dos fajlova neke "fantome" (kao: ABGHHUT i Slična stvar se dešavala i sa jednim programom koji smo pisali iako nije imao fileman u sebi. Jednostavno na disku program ostavi neki fajl kao "DDHAKSAA", a da niko ne zna zašto. Hercog
clipper.403 kole,
>> tekućeg drajva (ili uređaja, kako kaže prof. Darko V). Slučajno je i meni trebalo nešto slično, pa evo gotovog rešenja,... Poziva se sa _GETDRIVE() i vraća broj trenutnog drajva (0=A, 2=C, ...) Radi za Clipper 5.01. Pozdrav, Kole getd.obj
clipper.404 hercog,
**> Aaaaaaaahhhhh, da li je ovo resenje misterije oko BUG-a **> clipper-ovog SORT? Nisam rekao da je bug u clipperovom sortu već samo da je bilo problema u vezi njega Hercog
clipper.405 nbatocanin,
> SORT i brljanje na disku ? Ja sam svedok, brljalo je. Doduše, ne znam čemu uopšte i koristiti naredbu SORT. Za šta je vi koristite?
clipper.406 nbatocanin,
> Ne znam da li ima načina da se ovo spreči? Da li bi program mogao da razlikuje te interne overleje (u stvari, swap datoteke) po nazivu i atributima?
clipper.407 radunovic,
Da li bi neko mogao da mi posalje kratak primer povezivanja clipper i c programa ukljucujuci i sviceve za kompajler i linker, pri cemu c program poziva neku od biblioteckih funkcija, npr. printf, putch,.. (u MSC 6.0).
clipper.408 nbatocanin,
> Aaaaaaaahhhhh, da li je ovo resenje misterije oko BUG-a > clipper-ovog SORT? Aha! :))))
clipper.409 nbatocanin,
> Pogodi koji. Staroslovenski?
clipper.410 nbatocanin,
> Kom i kako, vaćno je jako. Je li brother Paune, a ëta mislië da postavië SWAPPATH i TEMPPATH na neki levi katalog? Koliko znam ovo se moće uraditi i pri startovanju programa: PROG //SWAPPATH:xxxxx
clipper.411 nbatocanin,
Evo i mog priloga na ovu temu: ASM programüiä koji podrćava DISKNAME, DISKCHANGE, DIRCHANGE, DIRMAKE, DIRREMOVE. Program je krajnje jednostavan, samo poziva odgovarajuäe DOS funkcije. Zgodno da "simulirate" CD, RD i MD. dir.zip
clipper.412 sasa.m,
=->**> ====> O sî va rugac vuoj đi minje! Vlaški?
clipper.413 ppekovic,
>> Da li bi neko mogao da mi posalje kratak primer povezivanja clipper i c >> programa ukljucujuci i sviceve za kompajler i linker, pri cemu c program >> poziva neku od biblioteckih funkcija, npr. printf, putch,.. (u MSC 6.0). O ovome se stvarno pričalo xxx puta i nijednom nismo došli do rešenja. Neke stvari rade bez problema a neke neće ni da čuju. Loše u svemu tome je što najkorisnije stvari ne rade a to su grafičke funkcije, chart funkcije, ali i neke osnovnije kao što su sve iz stdio.h hedera. Problem se javlja prilikom linkovanja kada te linker zaspe gomilom upozorenja o duplo definisanim simbolima. Linker generiše izvršni program, ali je on totalno nepouzdan. Paya
clipper.414 dpaun,
>> Da li bi program mogao da razlikuje te interne overleje >> (u stvari, swap datoteke) po nazivu i atributima? Koliko sam ja mogao da zaključim iz dosadašnje prakse: a) njihovo se ime formira baš sa namerom da nema neke ovozemaljske logike (verovatno da se ne bi preklo- pile slučajno sa nekim fajlom); b) nemaju prezime, verovatno iz razloga a); c) veličina im varira, od 0 do 100 i više K. Zaključak: nema neke pravilnosti na osnovu koje bi se mogla napisati naredba za sprečavanje njihovog uključenje u fajl listu. dPaun
clipper.415 dpaun,
>> Je li brother Paune, a ëta mislië da postavië SWAPPATH i >> TEMPPATH na neki levi katalog? Koliko znam ovo se moće >> uraditi i pri startovanju Brate Nenade, ovo bi mogao biti dobar pravac traganja za rešenjem. Proveriću čim dobijem malo (programerskog) vremena. dPaun
clipper.416 dpaun,
>> Staroslovenski? Malko stariji od staroslovenskog (što se Balkana tiče, bar). Kare ljimbâ, vrej sîc spun? Ći sarutâ, dPaun
clipper.417 dpaun,
>> ====> O sî va rugac vuoj đi minje! >> >> Vlaški? Pun pogodak, dragi komšija. Sezam je, dakle, progovorio i Vlaški. Sî krjaskâ, sî trajaskâ, la mulc anj ku sînataće. ----------------------- (Na mnogaja ljeta, što bi se reklo na bratskom staroslovenskom!) P.S. Saša, je si li pročitao zadnji broj "Borskih novosti"? dPaun
clipper.418 ilazarevic,
█ Malko stariji od staroslovenskog (što se Balkana tiče, bar). Ilirski, tračanski, dačanski?
clipper.419 hercog,
Evo nečeg što me malko ***ebava : lepo napišem set cursor off da isklju- čim kurzor, al on se i dalje vidi na ekranu?!?! Hercog
clipper.420 sasa.m,
=-> P.S. Saša, je si li pročitao zadnji broj =-> "Borskih novosti"? Ovlaš (tj. prelistao).Što jel' ima nešto zanimljivo?
clipper.421 dpaun,
>> Evo i mog priloga na ovu temu: ASM programüiä koji >> podrćava DISKNAME, Preuzeo, preveo, uvezao. Radi. Hvala. dPaun
clipper.422 dpaun,
>> nije imao fileman u sebi. Jednostavno na disku program >> ostavi neki fajl kao "DDHAKSAA", a da niko ne zna zašto. Mislim da je reč o istoj pojavi, stim što je u mom slučaju, zbog Fileman opcije, overlej vidljiv još u toku korišćenja samog programa. dPaun
clipper.423 dpaun,
>> Ovlaš (tj. prelistao).Što jel' ima nešto zanimljivo? Zbog feljtona "Slovo o Vlasima" koji pišu neidentifikovani borski "etnogenetičari". U ovom zadnjem nastavku ("Vlasi među srpskim stvaraocima", čini mi se) spomenuta je i moja ("etnološka i etnomuzikološka") malenkost, i to sa takvim atributima da se već nekoliko dana osećam kao "istorijska ličnost"! Koji li će se sokak po meni zvati, da mi je znati? d(Es)Paun. P.S. Pošto sam malo uvrnuo Clp conf sa ovim lingivističkim e(g)zoterijama, evo i jednog Clp pitanja za tebe: Koji ti se to profa interesuje za Clipper?
clipper.424 dpaun,
>> lepo napišem set cursor off da isključim kurzor, >> al on se i dalje vidi na ekranu?!?! Javljam se ne zato što mislim da znam koja je to ko tebe misterija, već zato što sam imao sličan problem, a o(d)sedeo sam dok sam shvatio u čemu je stvar. Za početak: stanje kursora u Clp501 se može kontrolisati. Kursor sakriješ sa SETCURSOR(0), a sa ? SETCURSOR() proveravaš da li je to programu doprlo do mozga. Odgovor treba da bude 0. Za nastavak: kod mene je cela misterija bila u tome što je između radnje koja se obavljala sa sakrivenim kursorom i sledeće radnje (sa normalnim kursorom) prolazilo izvesno vreme pa je kursor oživljavao, dabome, zatečen na poslednjoj poziciji! Tako sam imao (lažan) utisak da se kursor ne sakriva, već mi tera inat ... * Problem sam rešio na sledeći način: (1) SETCURSOR(0) // Sakrij kursor (2) č 2,65 Say to-i-to // Radnja sa skrivenim kursorom (3) č 26,0 // Šaljem kursor van ekrana, pa nek // mrda tamo koliko hoće // rešenje! (4) .................. // Normalan nastavak programa Za kraj: jednom ranijom prilikom poslao sam bio kroki na temu kursora, ali kako nisam siguran da je stigao do Bratstva, podsetiću ponovo na korisnu mogućnost da se prethodno stanje kursora zapamti, recimo: LOCAL sCurs := SETCURSOR() ... da ne žljebim ponovo gde se (sve) ovo moćže (korisno) primeniti. dPaun
clipper.425 bulaja,
│kod mene je cela misterija bila u tome sto je izmedu radnje koja se │obavljala sa sakrivenim kursorom i sledece radnje (sa normalnim │kursorom) prolazilo izvesno vreme └─── Ne uspevam bas da uhvatim smisao ovoga ;). Ako se vec isklucuje kurzor, logicno je da iza toga ide neka pauza ili operacija koja dugo traje, tj. posto je kurzor prakticno uvek iskljucen, onda se samo ukljucuje za read-ove, sto opet ukljucuje prolazak izvesnog vremena. Ja nisam primetio nikakvih problema kod kontrole kurzora. Doduse koristim setcursor() funkciju, ali se i "set cursor to" valjda pretprocesira u setcursor().
clipper.426 dpaun,
>> Ne uspevam bas da uhvatim smisao ovoga ;). Naravno, jer je teško objasniti bez primera, a još je teže shvatiti ako nam ta vrsta misteriji nije pred očima. Reč je konkretno o MEMOEDIT() i korisničkoj funkciji. Pre poziva MEMOEDIT(memo_polje,koordinate,korisnička_funcija...), sakrivenim kursorom markiram poziciju desne margine teksta, stavljajući neki znak (npr: Đ). Onda se poziva MEMOEDIT() a preko nje i korisnička funkcija. MEMOEDIT() pozivam sa para- metrima o poziciji kursora unutar prozora, kao i o poziciji unutar editovanog teksta. U korisničkoj funkciji na samom početku je set instrukcija da kursor bude vidljiv. Poznato je, inače, šta radi MEMOEDIT() kad naiđe na korisničku fun- kciju: odmah joj prepusti dizgine! Tako imamo sledeću situ- aciju: 1) nevidljivim kursorom ispisan je navedeni znak; 2) kursor je "ostao" na toj koordinati; 3) MEMOEDIT() aktivira KorFunkciju, ova izda naredbu da kursor "oživi"; 4) Kursor oživljava. Gde? Na onim poslednjim koordinatama! Oči mi, dabogda, ispale ako nije tako! Pazi sad: 5) MEMOEDIT()-u tek sledi glavni posao: da sa diska "usisa" odgovarajući memo-tekst. Tu je ta pauza, koja može biti kraća ili duža, u zavisnosti od veličine teksta ... 6) Kada ga MEMOEDIT() "učita" i gurne na ekran, tek onda šalje kursor na pozociju gde treba. Između koraka 4 i 6 gospon kursor trepće li trepće tamo gde mu mesto nije. => Rešenje je, kao što sam naveo, u isterivanju kursora van ekrana, odmah posle koraka 1). Javio sam se bratu Hercogu zato što znam kako može da izluđuje ova vrsta problema. Jednom mi se gotovo desila "Zona sumraka" zbog RMAKE-a, ali o tome drugi put. P.S.1) Izvinjavam se Clipper rođacima na nejasnim i nepreciznim objašnjenjima, jer ja sam samo jedan običan programer-naivac. P.S.2) Što se ne bi uvelo jedno ovakvo zvanje, a? Kad može u slikarstvu ... (Ot)Pozdrav, dPaun
clipper.427 zkrstic,
Jel vido' neko library NETLIB za Clipper, naravno? Ako je vido', nek našara malo, o čemu se radi i ima li ikakve upotrebne vrednosti. Pozdrav, zkr PS. Podrazumeva se da je LIB za net-funkcije :))
clipper.428 andrejl,
Nešto načuh o Clipper-u 6.0, pa da li neko zna nešto više ? bye, andrejl
clipper.429 bdm.,
Da li postoji nacin da se u Clipper-u ostvari veza izmedju SET FILTER i DBEdit ?
clipper.430 ppekovic,
>> Da li postoji nacin da se u Clipper-u ostvari veza izmedju SET FILTER i >> DBEdit ? ? Kakve te konkretno veza zanima? DBedit poštuje trenutno aktivni filter, tj. prikazuje samo one slogove koji zadovoljavaju uslov u filteru. Paya
clipper.431 ndragan,
/ e(g)zoterijama, evo i jednog Clp pitanja za tebe: Koji ti se Zar se ne kaže egzotermija?
clipper.432 ndragan,
/ objašnjenjima, jer ja sam samo jedan običan programer-naivac. / Kad može u slikarstvu ... Pogodi ga. Isto su u slikarstvu akademski slikari šizeli na naivce što dižu lovu. Problem: kako ćeš posle moći bilo koga da ubediš da si, eventualno, švorc? Bue_ NDragan
clipper.433 nbatocanin,
> Da li postoji nacin da se u Clipper-u ostvari veza izmedju > SET FILTER i DBEdit ? dbEdit uzima u obzir SET FILTER uslov. Budi malo određeniji. Na šta tačno misliš?
clipper.434 nbatocanin,
Nekoliko ljudi me je pitalo da li mogu moje programe sa Sezama da ugrađuju u svoje aplikacije. U uputstvima za programe prilično nespretno sam formulisao moj jedini zahtev: ne smete da moj program *neizmenjen* skinete sa Sezama i prodate nekom. Mislim da je ovo samo po sebi jasno. Znači, slobodno ugrađujte kalkulator i ostalo u svoje programe koje prodajete - puno sreće pri tome! Neću vam zameriti i ako nešto izmenite. Ako negde napišete i poreklo ovog dela programa, biću zahvalan i počastvovan, mada nije obavezno. A ako se neko obogati tako što se bogatom arapskom maharadži svidi moj kalkulator, ima da plati piće celom Sezamu! Pozdrav svima, Nenad
clipper.435 skoprivica,
>-> nespretno sam formulisao moj jedini zahtev: ne smete da moj >->* program neizmenjen* skinete sa Sezama i prodate nekom. Mislim da Ovo je vrlo skakljivo sa pravne strane, posto ti je program objavljen u casopisu (tj. njegov listing) on je freeware po mom misljenju...ORKA:zakoni, nastavak... Aje... CTEBO.
clipper.436 bdm.,
## filter, tj. prikazuje samo one slogove koji ## zadovoljavaju uslov u filteru. Hvala to me je zanimalo nesto davno sam petljao ali sam dobijao sve slogove sad cu ponovo da pokusam. BDM.
clipper.437 zkrstic,
> ## filter, tj. prikazuje samo one slogove koji > ## zadovoljavaju uslov u filteru. > > Hvala to me je zanimalo nesto davno s > am petljao ali sam dobijao > sve slogove sad cu ponovo da pokusam. Staviš filter, udariš GO TOP (obavezno) i to neizostavno radi. SET FILTER je spor, ali radi, uvek. Pozdrav, zkr.
clipper.438 kzoran,
Hi! Moze li mi neko pomoci? Treba da linkujem jednu rutinu pisanu u C sa programom pisanim u Clipper-u 5.01. Ima li nekih posebnih pravila za linkovanje? Ili - pošto nemam gotovu nikakvu literaturu za Clipper 5.01 - kakva su uopšte pravila za povezivanje Clipper programa sa C ili asemblerskim rutinama? Unapred hvala na pomoći. Pozdrav, Zoran.
clipper.439 dpaun,
>> Problem: kako ćeš posle moći bilo koga da ubediš da si, >> eventualno, švorc? Pogodi me i ti, brate! Lično, nisam "naivac" samo u onom smislu da me nije pokvarila neka "programerska" škola, već, možda i više, zbog toga što ja sve to radim za badava! Meni bi, dakle, odgovaralo zvanje "programer - naivčina"! žak sam i za SPS napisao jedan (besplatni) program. O, gde će mi duša?! * Ovo zvanje je u odnosu na slikarsku podelu. A kako bi bilo ako za uzor uzmemo muzičare? Programer - sluhista! Lepo. Ja sam ranije već rekao da programiram "na uvce"! * Da rezimiramo: Sezamova programerska zvanja: 1) Programer naivac 2) Programer naivčina 3) Programer sluhista. Od mene, braćo, dosta. Ajte i vi malo! dPaun
clipper.440 ppekovic,
>> Ima li nekih posebnih pravila za linkovanje? Ili - pošto nemam gotovu nikakvu >> literaturu za Clipper 5.01 - kakva su uopšte pravila za povezivanje Clipper >> programa sa C ili asemblerskim rutinama? Sa assemblerom nema nikakvih problema, a sa C-om ima. Da nebi po xx-ti pun ponavljao istu priču, pogledaj malo stare poruke u ovoj temi. Ukratko, linkovanje sa C-om može, ali samo neke osnovne stvari. Npr. funkcije iz stdio i graph header-a, kao i chart funkcije, zaboravi. Kako se linkuje sa assemblerom i C-om, naći ćeš u NG-u koji si dobio uz Clipper 5.01. Nije teško! Paya
clipper.441 dpaun,
>> Zar se ne kaže egzotermija? egzoteričan - a) namenjen onima koji ne pripadaju nekoj zajednici, javni, opšti; b) razumljiv, pristupačan svima, popularan; ezoteričan - koji nije svakome pristupačan; unutarnji, skriven; strogo naučan, stručan egzotermičan - koji je propraćen razvijanjem toplote, pri kojemu se oslobađa toplota ... /Prema: REžNIK SRPSKOHRVATSKOG KNJIčEVNOG I NARODNOG JEZIKA, Knj. V, SANU, Beograd, 1968, kod na- vedenih reči/ Zato sam napisao e(g)zoterija, a da ne pređe u egzotermiju, ja ću malo da o'ladim! dPaun
clipper.442 nbatocanin,
Nisam baš najbolje razumeo. žini mi se da je ono što ja tražim sasvim normalno i da mi nisu rekli da napišem napomenu o ograničenjima pri korišćenju, ne bi to ni pisao. Zar neko misli da je moj zahtev preteran?
clipper.443 skoprivica,
>-> Zar neko misli da je moj zahtev preteran? Ne smatram da je preteran, nego se pitam da li bi mogao nesto da dokazes kad bi neko iskoristio tvoj program ? Listing je objavljen u casopisu koji se prodaje, pa samim tim taj (preprodavac) je kupio i prava na tvoj listing... Aje... CTEBO.
clipper.444 dpaun,
Clipper rodbino! Upravo mi je poštar doneo paketić, i u njemu: Rick SPENCE, CLIPPER 5 - VODIž ZA PROGRAMERE, Mikro knjiga, Beograd, 1991 (?) Autor je saradnik na razvoju Clippera; knjiga ima 513 strana. Isto je onako jasna i krasna kao i ona Strelijeva. Neko se bio ovuda raspitivao za literaturu, pa bi mogao da krene od ove knjige. Šta misle ostala braća? dPaun
clipper.445 dpaun,
Clipper braćo, amo, amo! Rešen problem fantoma iz poruka 5.393 (i passim), ili: Kako je jedan programer-naivac ukrotio swap file! I. Citat /starija braća mogu da ga preskoče/: KORIŠĆENJE MEMORIJE RTLink-ov program za upravljanje overlejima obezbeđuje da se neko- rišćeni kod nalazi na disku dok ne zatreba, ali ne upravlja podacima programa. Nantucket je uveo sistem prividne (engl. virtual) memorije u verziju 5.0 koji ima sličnu ulogu za podatke. Kada nema dovoljno memorije da zadovolji neki zahtev, Clipper pre- bacuje podatke u proširenu memoriju, ako je to moguće i naznačeno sa opcijom E u promenljivoj okruženja CLIPPER. U suprotnom, podaci se smeštaju na disk u DATOTEKU ZA ZAMENU (engl. swap file). Za aplikaciju je svejedno da li se podaci nalaze u memoriji ili na disku. (...) Možete specificirati Clipper-u maksimalnu veličinu datoteke za za- menu koju može da kreira definišući vrednost parametra SWAPK u promen- ljivoj okruženja CLIPPER. Vrednost od 256K do 64MB su dozvoljene. Cli- pper će koristiti 16MB ako ne navedete vrednost. Podrazumeva se da će datoteka biti kreirana u trenutno aktivnom direktorijumu, ali i to možete da promenite navođenjem parametara SWAPPATH u Clipper-ovu promenljivu okruženja. /Rick S p e n c e: CLIPPER 5 - vodič ..., p. 26-27/ II. Šta je Clipper-ova "promenljiva okruženja"? /Mogu da preskoče i mlađa braća/ Zamislimo da je naše Clipper čedo, dika naša programerska, gluva za ono što piše u CONFIG.SYS ili AUTOEXEC.BAT! Što god mi tamo napi- sali, ne prima. Jogunac hoće svoje, pa svoje, a to je jedna linijica u AUTOEXEC.BAT, koja počinje sa SET CLIPPER. To vam je to, braćo! III. Kako se navode parametri "u Clipper-ovu promenljivu okruženja"? /Može da preskoči svako ko ima Norton Guid/ Ako imamo samo jedan parametar, primer: SET CLIPPER=f35 Ako imamo više parametara, dodajemo separator ; pa parametar: SET CLIPPER=F35;E:120 IV. Kako ubiti fantoma, ili kako preusmeriti SWAP FILE? /Obavezno čitanje za sve. Biće propitivanja!/ Formula glasi: SWAPPATH:'<putanja>' a celo rešenje: SET CLIPPER=F35;E:120;SWAPPATH:'C:Đ' itd Važno: navodnici su obavezni! Naravno, umesto C:Đ možete napisati vaše konkretne idejne smernice ... V. Epilog /Ne mora da čita niko/ Usporedbom poruke 5.393 i onog što je potom sledilo, može se zaključiti ko ovde zna znanje. Hvala braćo, drži tata! dPaun
clipper.446 bdm.,
## Rick SPENCE, CLIPPER 5 - VODIC ZA PROGRAMERE, Mikro knjiga, ## Beograd, 1991 (?) Koliko si para dao postaru ? BDM.
clipper.447 vkrstonosic,
>> ## Rick SPENCE, CLIPPER 5 - VODIC ZA PROGRAMERE, Mikro knjiga, >> ## Beograd, 1991 (?) >> >> Koliko si para dao postaru ? 1.200 dinara u knjižari kod PMF-a.
clipper.448 janko,
> Rick SPENCE, CLIPPER 5 - VODIž ZA PROGRAMERE, Mikro > knjiga, Beograd, 1991 (?) > > Autor je saradnik na razvoju Clippera; knjiga ima 513 > strana. Isto je onako jasna i krasna kao i ona Strelijeva. ============== Strelijeva jasna i krasna? Jel' to ironija?
clipper.449 ndragan,
/ malo da o'ladim! Mogao bih i ja, da se ne ubacujem i gde treba i gde ne treba... ali stvarno nisam verovao da _egzotermičan_ postoji u rečniku. Zvučao je tako iskonstruisano.
clipper.451 bulaja,
│Listing je objavljen u casopisu koji se prodaje, pa samim tim taj │(preprodavac) je kupio i prava na tvoj listing... └─── Nikako! Autor i dalje zadrzava svoja (autorska) prava i na programe objavljene u casopisima, knjigama, etc. Cak i npr. ako si kupio (i skupo platio ;) od nekoga program i dobio i source kode, opet nemas nikakvih prava, sem naravno da koristis program. Drugacije je jedino ako je tako eksplicitno navedeno u kopoprodajnom ugovoru ili tekstu u casopisu. Analogno ovome je npr. i kod knjiga - kupovinom knjige naravno da nisi stekao nikakva prava na piscev rad, sem da isti procitas.
clipper.452 ppekovic,
>>>> ## Rick SPENCE, CLIPPER 5 - VODIC ZA PROGRAMERE, Mikro knjiga, >>>> ## Beograd, 1991 (?) >>>> >>>> Koliko si para dao postaru ? >> >> 1.200 dinara u knjižari kod PMF-a. Kamo sreće da je tolko. Knjiga je 7.200 din. Danas, kad smo Vkr i ja bili tamo bile su tri knjige na polici i jedna u izlogu. Paya
clipper.453 bdm.,
## 1.200 dinara u knjizari kod PMF-a. Kad to bejase. Danas je 7.200 dinara. BDM.
clipper.454 vkrstonosic,
>>>> 1.200 dinara u knjižari kod PMF-a. >> >> Kamo sreće da je tolko. Knjiga je 7.200 din. Danas, kad smo Vkr i >> ja bili tamo bile su tri knjige na polici i jedna u izlogu. Moje izvinjenje svima, nešto sam pogrešno video :(
clipper.455 skoprivica,
-> Analogno ovome je npr. i kod knjiga - kupovinom knjige naravno da -> nisi stekao nikakva prava na piscev rad, sem da isti procitas. Pa smem li ja da ukucam taj njegov program? I kako ce on dokazati da je to bas njegov program (ja ne dam source)...4
clipper.456 dpaun,
>> Koliko si para dao postaru ? U odnosu na trenutnu cenu (reče neko na Sezamu da je kod vas u Bgd 1200) - dao sam samo 940 din, ali mnogo ranije kao pretplatu. Ko li je bolje prošao, a? dPaun
clipper.457 dpaun,
>> Strelijeva jasna i krasna? Jel' to ironija? Jok, asonanca. A pitao bih te da si Clipper počeo da učiš iz one "Cuciceve" knjige! => Streli mi je posle toga zvučao ko Tagora! Mir s tobom, brate, dPaun
clipper.458 prerad,
Jedno pitanje : Posto jos uvek imam Hercules karticu , zanima me da li u Clipper 5.01 mogu na mom monitoru da dobijem vise od te 3-4 razlicite nijanse. Tj., da li su definisane neke "sare" (fill patterns) ,(na primer na nacin kao sto Hercules simulira CGA grafiku) ili nesto slicno. Pedja
clipper.459 zkrstic,
> > Pa smem li ja da ukucam taj njegov program? I kako ce on d > da je to bas njegov program (ja ne dam source)...4 Veruj mi, vrrrrrlo lako :)) Samo šacne .exe i malko prekopa i naći će bar neke svoje definicije (promenljive, funkcije...) Posebna priča, je kako to zakonski dokazati Pozdrav, zkr
clipper.460 janko,
> Mir s tobom, brate, Mir, mir brate mir... (nije neka poruka, ali sam prosto morao). PS. Ej, dPaune, voleo bih da objasniš zašto su ti svi braća (i sestre, al' ih ovde ima malo). PPS. Moderatore, molim ne briš, odgovor na pitanje u PS će sigurno razjasniti misteriozne elemente konferencije...
clipper.461 kzoran,
Zdravo! Ima li neka dobra duša na SEZAM-u koja ima NG za Clipper, a spremna je da ga ustupi (iskopira, unloadujeKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKploaduje i sl.)? Pozdrav, Zoran. H P.S. Prilično je hitno!
clipper.462 nboskovic,
*> Ima li neka dobra duša na SEZAM-u koja ima NG za Clipper, *> a spremna je da ga ustupi (iskopira, *> unloadujeKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKploaduje i sl.)? Ako imaš instalacionu verziju Clippera 5.01 u okviru paketa imaš i kompletan NG sa datotekama za isti. (c) klap nikola
clipper.463 ppekovic,
>> Ima li neka dobra duša na SEZAM-u koja ima NG za Clipper, a spremna je da ga >> ustupi (iskopira, unloadujeKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKploaduje i sl.)? Ako imaš clipper 5.01, onda mora da imaš i NG. Sam NG za clipper nije ni PD ni SW. Paya
clipper.464 kzoran,
Hvala svima na pomići oko NG-a. Nisam imao instalacionu verziju (tad bih instalirao i NG), ali sam je uz vašu pomoć nabavio. Pozdrav, Zoran.
clipper.465 kzoran,
Hi! I dalje ne uspevam da linkujem Clipper program sa MSC 6.0 rutinom. U C rutini imam samo <dos.h>, i vrlo je jednostavna. Ne vraća vrednost u glavni program, a ne ostavlja ni "trag" o svom radu koji bi eventualno glavni program mogao koristiti. Pokušao sam sve moguće perverzije - kada linkovanje nije išlo sa RTLink-om, uzeo sam C linker, a zatim sve meni poznate i dostupne DOS linkere - i ništa. RTLink mi javlja "Input parsing error" i to na mestu na kom u komandnoj liniji kojom startujem linkovanje navodim ime C objektnog fajla. Ima li neko ideju šte bi moglo da bude u pitanju? Pozdrav, Zoran.
clipper.466 kanda,
>> RTLink mi javlja "Input parsing error" i to na mestu na kom u >> komandnoj liniji kojom startujem linkovanje navodim ime C objektnog >> fajla. >> >> Ima li neko ideju šte bi moglo da bude u pitanju? Ova 'input parsing error' mi se javljala samo kad bih RTLINKu pogresno prosledio parametre. Naprimer, kada umesto RTLINK FI prvi,drugi stavis RTLINK FI prvi drugi dobijes 'input parsing error'
clipper.467 ppekovic,
>> I dalje ne uspevam da linkujem Clipper program sa MSC 6.0 rutinom. Napisi C program koji izgleda otprilike ovako: #include <extend.h> /* header koji dobijaš uz clipper */ ... ostali include-ovi koji ti trebaju ... CLIPPER ime_funkcije() Š ... ... ... Đ iskompajliraj ovo sa CL /AL /c /Oalt /FPa /Gs ime.c zatim napisi program u clipper-u koji koristi C funkciju. iskompajliraj sa clipper ime.prg linkuj sa MS Linkerom LINK /NOE /SE:1024 c_obj clipper_obj,,, Ako ti linker prijavi gomilu grešaka tipa symbol defined more than once, onda koristiš neke C funkcije koje baš ne "prijaju" clipper-u. Već sam pomenuo da npr. graph i stdio funkcije ne idu uz clipper. Paya
clipper.468 kzoran,
EUREKA!! To je to!! Ppekovic-u, nikad ti ovo neće oprostiti!KKKKKKu oprostiti! Pozdrav, Zoran.
clipper.469 janko,
> linkuj sa MS Linkerom LINK /NOE /SE:1024 c_obj > clipper_obj,,, A zar to ne pravi frku na Clipper-u 5.0x jer samo RTlink obezbeđuje onu Virtelnu memoriju?
clipper.470 ppekovic,
>>> linkuj sa MS Linkerom LINK /NOE /SE:1024 c_obj >>> clipper_obj,,, >> >>A zar to ne pravi frku na Clipper-u 5.0x jer samo RTlink >>obezbeđuje onu Virtelnu memoriju? Sa kraćim programima ne pravi problem. Inače, nema problema i ako se koristi RTLink. Onaj primer sam naveo samo kao kratak primer za prvo povezivanje C-a i Clipper-a. Za detaljniji opis, tj. kad, šta, gde i sl. bi mi trebalo malo više prostora od jedne poruke ;) Paya
clipper.471 dpaun,
>> Ej, dPaune, voleo bih da objasniš Clipperfamilijorodbinosestrebraćoipolubraćo! Priznajem: JasamčuveniClippernacionalistaseparatistaseceionistaišovinista specijalnoobučenzaClipperdiverzijeujednomtajnomcentruuHomoljui ubačennaSezamkaoagentjednevelikesileuokvirumeđunarodnezaveresa zadatkomdasveClipperašeujediniujednovelikobratstvoisestrinstvo dapodmetneidejuodirektnomporekluClipperjezikasaLepenskogvirate daseodandeširioposredstvomvlaškogjezikaadajeulogahetitskogipak bilaredundantaidatoobjašnjavaotkudtajanstvenaimisterioznapojava dainanatpisimauLepenskomViruikodhomoljskihpastirakaoinasvimbelo svetskimkompjuterskimtastaturamaodneolitadodanasatakođeiubuduće dirkeEscCapsEnterPageAltitakotoimajuistoznačenjeiistoporeklo: Vlaško!IkudbimibiokrajdameneotkrijedanJankoasvakiJankoradinaopa komadaseuHomoljuJankorimujeisadrugimrečimatakojetouopštejednori mujućeimedasedičišiponosišnjimeaokokosokosvevididuboko Za Clipper i otadžbinu! dPaun
clipper.472 nbatocanin,
> Ako imaš clipper 5.01, onda mora da imaš i NG. Sam NG za > clipper nije ni PD ni SW. žini mi se da sam NG za Summer'87 video na Tricklu, što bi značilo da može da se deli.
clipper.473 bulaja,
│Cini mi se da sam NG za Summer'87 video na Tricklu, sto bi znacilo │da moze da se deli. └─── Problem je u readeru (ng.exe) koji nije PD :(. Taj NG za S87 Clipper valjda ima i negde u pc.soft:clipper.
clipper.474 ppekovic,
>> žini mi se da sam NG za Summer'87 video na Tricklu, što bi značilo da >> može da se deli. Za '87-icu postoji TR Help, koji je neuporedivo bolji od NG-a. Paya
clipper.475 dpaun,
Clipper familijo, Verujem da nisam jedini koga interesuje odgovor na pitanje zašto u zadnjem broju Računara nema Clipper savetovališta? * Molim nBatocanina da napiše neko slovo kao odgovor na ovo. dPaun
clipper.476 nbatocanin,
> Za Clipper i otadžbinu! Brate dPaune, mlogo ti težak ovaj tekst za čitanje, al' snađosmo se! dNenad
clipper.477 nbatocanin,
> Molim nBatocanina da napiše neko slovo > kao odgovor na ovo. SET DATE 01 APR Prestajem da radim za "Računare" i prelazim u "Svet kompjutera" :))
clipper.478 dpaun,
>> Prestajem da radim za "Računare" i prelazim u "Svet kompjutera" :)) Nisam zadovoljan odgovorom. Priznajem da Računare u poslednje vreme kupujem pretežno zbog Clippera; zbog Clp kupujem i "Svet kompjuetera". Ako Redakcija ceni da je Savetnik za Clp nepotreban, i Clp svede na poneki slučajni Bajt lične prirode - neka ne računa više na jednog kupca. (A moj primerak čita još petoro braće, kao posleratnu agitprop literaturu!) Pošto je, slutim, reč o šali, još uvek mi(nam) duguješ pravi odgovor. Imaš Ti svoje obožavaoce, brate Nenade, pa nemoj s nama ko da si nam narodni poslanik! dPaun
clipper.479 hercog,
Pročitao sam u onom dodatku iz računara o clipperu da pri kompajliranju može da se navede " /Ddemo" "kako bi se u aplikaciju ugradile naredbe koje ograničavaju upotrebu demo programa" , pa me interesuje kako to sve radi, tj nije mi jasno šta se time postiže i sama uloga direkti- ve #ifdef **** Hercog Odgovor NBATOCANINA **> Kad u programu napišeš: **> **> USE Radnici **># if def DEMO **> IF LastRec() > 100 **> ZAP **> END IF **># endif **> LIST ALL **> **> ograničavaš da se ne može u tekućoj datoteci upisati **> više od 100 slogova, ali samo ako je demo verzija **> programa. Naime, ako prethodni program prevedeš sa **> CLIPPER, dobiće se: **> **> USE Radnici **> LIST ALL **> **> a ako prevedeš sa CLIPPER /DDEMO **> **> USE Radnici **> IF LastRec() > 100 **> ZAP **> END IF **> LIST ALL **> **> Kao što vidiš, uključiće se deo koji ograničava upotrebu **> programa. Prednost je u tome što ne moraš da praviš dve **> verzije programa. **> **> Nemoj se ustručavati i slobodno postavljaj slična **> pitanja u konferencijama - one zato i služe. Tako ćeš **> mnogima olakšati stvar (onima koji ovo takođe nisu **>ć razumeli), a i mene ćeš rasteretiti, jer e ti **> odgovarati i drugi ljudi. **> **> Predlažem ti da celu ovu poruku sa tvojim pitanjem **> pošalješ kao poruku u Clipper. **> **> Pozdrav, Nenad
clipper.480 ndragan,
/ JasamčuveniClippernacionalistaseparatistaseceionistaišovinista Mmmm... da, nije loše; imaš li još neku mantru? Ova ne drži duže od tri dana.
clipper.481 nbatocanin,
Ma, šalim se, naravno! Savetnik nije izašao zbog nekog banalnog razloga (frka sa prostorom u poslednjem trenutku). Ja nemam veze sa tim.
clipper.482 bulaja,
Bug (?) Clipper-a 5.01 u @..GET VALID-u. Stavio sam incijalizaciju GET-a za neki niz u petlju: for i:=1 to n @ y+i,x get aa[i] picture pic valid vld( aa[i]) next a pretprocesor to razlozi ovako: for i:=1 to n SetPos( y+i, x) AAdd( GetList, _GET_( aa[i], "aa[i]", pic, {|| ( vld( aa[i]))}, ) ) next Problem je jer Clipper jednostavno ne prihvata VALID-e. Read krene Ok ali se pri prvom pozivanju valid-a javlja greska "Error BASE/1132 Bound error: array access" (?).
clipper.483 kanda,
>> Problem je jer Clipper jednostavno ne prihvata VALID-e. Read krene Ok >> ali se pri prvom pozivanju valid-a javlja greska >> "Error BASE/1132 Bound error: array access" (?). Problem je (valjda?) u tome sto se VALID izraz evaluira tek u toku READ komande, a u tvom primeru, ako je npr. READ odmah ispod NEXT, promenljiva 'i' u tom trenutku ima vrednost 11 - a niz 'aa' ima 10 elemenata, pa aa[i] javlja gresku... Kao prva pomoc, moze uz VALID da se stavi samo poziv funkcije vld(), bez argumenata, a ona sama da sa readvar() dohvati ime promenljive koja se edituje, pa da je makro-operatorom ispituje/menja... ovako nesto (izgleda) radi (mada kad malo razmislim ne bi trebalo da radi, al' da ne baksuziram :)
clipper.484 bulaja,
│ Problem je (valjda?) u tome sto se VALID izraz evaluira tek u toku READ │komande, a u tvom primeru, ako je npr. READ odmah ispod NEXT, promenljiva │'i' u tom trenutku ima vrednost 11 - a niz 'aa' ima 10 elemenata, pa aa[i] │javlja gresku... └─── Verovatno, ali je glupo to sto se razlicito tretiraju promenljive za get i valid, sve bi bilo Ok kada bi se i valid promenljiva razvijala kao macro. Da stvar bude jos gora, nije moguce ni staviti valid aa[ &i]).
clipper.485 squsovac,
Kliperaši, ima li rešenja sledećem problemu: Na disku se nalaze npr. baze: BAZA_1 BAZA_2 BAZA_3 ... BAZA_n, koje su istovetne po strukturi, ali ih je zbog određenih razloga ipak potrebno ovako razdvojiti, a ne podatke smeštati u jednu bazu. Program bi trebalo negde na početku čoveku da ponudi menu u kojem bi čovek odabrao rad sa bazom koja ga zanima. Ja sam otvorio posebnu bazu u kojoj su imena ovih baza (1, 2, ..., n), tako da je problem u principu rešen. Međutim, interesuje me ima li Clipper 5.01 mogućnosti da na primer pregleda direktorij i da pregled baza nekako ubaci u promenljive da se ja onda ratosiljam one jedne nepotrebne(???) baze sa imenima baza.
clipper.486 zkrstic,
> Program bi trebalo negde na početku čoveku da ponudi menu u kojem bi > čovek odabrao rad sa bazom koja ga zanima. Ja sam otvorio posebnu > bazu u kojoj I stari kliper je to mogao, a i još uvek može ;))) Lepo poteraš sva imena baza u niz sa ADIR, pa lepo napraviš meni sa ACHOICE, i teraj dalje. Tako sam ja radio. Konkretan primer je bio poziv starih obračuna LD-a, obzirom da je svaki imao svoju bazu LD9101.DBF, LD9102.DBF.... Kratko i jasno. :)) Na žalost, nemam taj source pri ruci, al' ako ga nađem, tvoj je. Pozdrav, zkr
clipper.488 ndragan,
/ macro. Da stvar bude jos gora, nije moguce ni staviti valid aaŠ &iĆ). Ovo je rešivo; slične cake se pojavljuju kad treba da prebacim nešto iz foksproa u stari foks, pa naletim na neku caku koju stari ne podržava. Možda ovako dum=ltrim(str(i)) pa onda pod a) vv&dum=aaŠiĆ ... valid vld(vv&dum) ili pod b) vv&dum=aaŠiĆ dum2='vld(vv&dum)' ... valid &dum2 Moj drugar je pisao sličnu rutinu, ali u njoj je čak stajalo valid &q(i), i u foksprou je radilo ko ludo, ali za mfoxplus smo morali da izmišljamo nekakve međupromenljive kao ovo gore, i proradilo je. Ne znam samo kako se kliper odnosi prema izmišljanju novih promenljivih u trku i to iz makroa (mislim na vv&dum=) Bue_ NDragan
clipper.489 ndragan,
/ BAZA_2 Jel ima kliper aliase? U foksu na neki način izabereš (meni itd) i neka se izbor nalazi u nekoj promenljivoj x: _dbf='baza_'+ltrim(str(x,3)) use &_dbf alias baza Ovo je potrebno ako se u programu pozivaš sa baza->>polje; ako se pozivaš sa d->>polje i tu bazu uvek otvaraš u istoj zoni, onda nema veze. U foksprou stvar ide još lepše use ('baza_'+ltrim(str(x,3))) alias baza tj samo strpaš izraz u zagrade i ne treba ni pomoćna promenljiva. Bue_ NDragan
clipper.490 nbatocanin,
> Ne znam samo kako se kliper odnosi prema izmišljanju novih > promenljivih u trku i to iz makroa (mislim na vv&dum=) Kako 'oćeš!
clipper.491 nbatocanin,
> Verovatno, ali je glupo to sto se razlicito tretiraju > promenljive za get i valid, ... Štos je što se za GET navodi *promenljiva*, a za VALID logički *izraz*, pa se i ne mogu isto tretirati. Da ne dužim, evo kako se tvoj problem može rešiti. Glavni program je ovakav: FOR i := 1 TO n @ i,0 GET a[i] VALID v() NEXT READ 1) Kao što je Konda rekao, moguce je uz pomoc ReadVar() funkcije dobiti ime promenljive koja se upravo učitava, pa onda uz pomoć makroa ispitivati vrednost: FUNC v () cVar := ReadVar() // cVar == "a[i]" IF &cVar == ... Niz a[i] mora biti klase MEMVAR (PUBLIC ili PRIVATE), da bi ovo radilo - makroi "ne vide" LOCAL i STATIC promenljive. 2) Bolje je upotrebiti funkciju GetActive() - ona vraca trenutno aktivan GET objekt, a to je slog sa *svim* podacima koji ti padaju na pamet, pa i nazivom tekuće promenljive. Na primer: FUNC v () oGet := GetActive() ... oGet:name sadrzi naziv niza "A", a oGet:subscript tekuci index. Kombinacija ta dva ti daje mogucnost da adresiraš element niza. 3) U prethodnom slučaju ti i ne treba KAKO se zove tekuća promenljiva, već njena vrednost. Njenu ASCII reprezentaciju imaš u oGet:buffer. Na primer, ako je a[1]=123, oGet:buffer=" 123". Ovo je savršeno dovoljno za bilo koju proveru. Ako ti zatreba da u VALID-u promeniš tekucu vrednost, samo napišeš: oGet:buffer := NovaVrednost oGet:assign() 4) Ako ti je baš stalo da u validu funkciju pozivaš sa tekućom promenljivom, napiši ovako: @ i,0 GET a[i] VALID { |o| V(a[o:subscript[1]]) } Da ne davim, ako nekog interesuje kako ovo radi, neka pita. Problem se može rešiti i makroima, ali budževine ne treba koristiti bez preke potrebe.
clipper.492 jtitov,
Da li bi neko hteo da mi mailuje jedan fajl iz paketa clipper 5.01? Radi se o fajlu doc.lif jer mi je u njemu "korumpiran" fajl errata.doc. NAPOMINJEM, nije mi potreban fajl errata.doc, nego "ono" u cemu se on nalazi spakovan, tj. doc.lif. Volim da imam kompletne verzije instalacionih programa, pa je zato upucena molba. Inace clipper, kao clipper, pa i nije los, ALI Fox Pro 2.0 zajedno sa distribution kit-om je zakon. I sto se tice lakoce izrade programa, a i po mogucnostima. Pozdrav, Jura.
clipper.493 ppekovic,
>> Da li bi neko hteo da mi mailuje jedan fajl iz paketa clipper 5.01? Radi se o >> fajlu doc.lif jer mi je u njemu "korumpiran" fajl errata.doc. NAPOMINJEM, >> nije mi potreban fajl errata.doc, nego "ono" u cemu se on nalazi spakovan, >> tj. doc.lif. Volim da imam kompletne verzije instalacionih programa, pa je >> zato Uh, to je deo komercijalnog paketa, pa kao takav se nebi smeo naći u konferencijama. Paya
clipper.494 nbatocanin,
> Inace clipper, kao clipper, pa i nije los, ALI Fox Pro 2.0 zajedno sa > distribution kit-om je zakon. I sto se tice lakoce izrade programa, a > i po mogucnostima. Još kad bi ovo i obrazložio...
clipper.495 jtitov,
>Jos kad bi ovo i obrazlozio... Ah, vrlo rado, ali ne ide u tri reci. Najbolje bi bilo da se raspitas kod IMTEL-a. (Mogu ti dati i ime osobe). Oni su tamo razvili jednu ogooomnu aplikaciju za relativno kratko vreme. Ja sam inace stari kliperas, ali kada sam video mogucnosti razvoja programa u FOX-u (da ne spominjem da odlicno podrzava SQL), batalio sam i kliper i sve ostalo sto uz njega ide (fliper).
clipper.496 andrejl,
Kada kompajliram sa opcijom /w sve lepo radi osim što mi kao Abigious reference javlja i getlist što se valjda pretprocesira. Deklarisao sa onda i getlist sa memvar, ali da li to može nekako lepše :) bye, andrejl
clipper.497 andrejl,
Zatrebala mi je jedna rekurzivna funkcija, i da bi malo eksperimentisao napisao sam ovo: procedure main(br) rekur(1,val(br)) return function rekur(broj,br) ? broj if broj==br return else broj:=rekur(broj+1,br) endif return broj /kompajlira se sa /n i poziva sa rekur n gde je n neki broj/ Kada je n>=91 javi grešku Unrecoverable error 650: Processor stack fault Nešto slično sam očekivao (ili nisam :). Pitanje je da li može ovo nekako da se sredi. Funkcija koja mi treba je mnogo veća i pozivala bi se ko-zna-kolko-puta (zavisi od sreće :) od 2 pa do +oo pa ne bi da mi se nešto nepriatno dešava u programu. bye, andrejl
clipper.498 andrejl,
Da li postoji razlika između = i == ili je samo 'estetske' prirode. bye, andrejl
clipper.499 ilazarevic,
█ Da li postoji razlika između = i == ili je samo 'estetske' prirode. = je dodela podataka a == poređenje :) PS. Kliper sam pogledao samo jednom u životu ;)
clipper.500 vili,
> Da li postoji razlika izmedu = i == ili je samo 'estetske' prirode. Postoji: "=" - Equal "==" - Exactly equal Razlika se odnosi na poredjenje stringova i memo-a: SET EXACT OFF "ABC" = "ABC" - TRUE "ABC" = "ABCDE" - FALSE "ABCDE" = "ABC" - TRUE "ABC" = "ABC " - FALSE "ABC " = "ABC" - TRUE "ABC" = " ABC" - FALSE " ABC" = "ABC" - FALSE "ABC" = "" - TRUE "" = "ABC" - FALSE SET EXACT ON "ABC" = "ABC" - TRUE "ABC" = "ABCDE" - FALSE "ABCDE" = "ABC" - FALSE "ABC" = "ABC " - TRUE "ABC " = "ABC" - TRUE "ABC" = " ABC" - FALSE " ABC" = "ABC" - FALSE "ABC" = "" - FALSE "" = "ABC" - FALSE SET EXACT ON ili OFF "ABC" == "ABC" - TRUE "ABC" == "ABCDE" - FALSE "ABCDE" == "ABC" - FALSE "ABC" == "ABC " - FALSE "ABC " == "ABC" - FALSE "ABC" == " ABC" - FALSE " ABC" == "ABC" - FALSE "ABC" == "" - FALSE "" == "ABC" - FALSE Operator "==" moze da poredi i nizove: a1:={1,2,3} b1:={1,2,3} a1:=c1 a1 == b1 - FALSE a1 == c1 - TRUE Vili
clipper.501 dpaun,
Clipper za početnike i programere sluhiste (1) Svaki iole ozbiljniji Clp program zahteva kontrolu podataka koje u bazu unosimo preko ekranske maske. U principu, posle otkrivanja greške, prog- ram treba da omogući ispravku pogrešno upisanog podatka. Lepo bi bilo, a a naš program bi ličio na programe onih iz starijih razreda - kad bi se u povratku kursor pozicionirao direktno na mesto greške. To se može us- pešno rešiti preko KEYBOARD, ubacivanjem u bafer tastature koda za kur- sorsku strelicu "na dole" onoliko puta koliko je to potrebno. Za domaći zadatak videti niže navedeni primer. * PROC Unos // ... Err := .T. DO WHIL Err Err := .F. // č 2,1 GET Var1 č 2,COL() GET Var2 č 2,COL() GET Var3 READ DO Kontrola ENDD * PROC Kontrola // Provera uslova za Var1 IF (nije u redu) // Err := .T. č red,kol SAY ' Uput za ispravku Var1' RETURN ENDI // Provera uslova za Var2 IF (nije u redu) Err := .T. č red,kol SAY ' Uput za ispravku Var2' KEYBOARD CHR(24) RETURN ENDI // Provera uslova za Var3 IF (nije u redu) Err := .T. č red,kol SAY ' Uput za ispravku Var2' KEYBOARD CHR(24)+CHR(24) RETURN ENDI Made în dPaun
clipper.502 andrejl,
>│ = je dodela podataka a == poređenje :) mislio sam na = i == kao poređenja pošto postoje = i := za dodeljivanje, a među njima ima razlike. bye, andrejl
clipper.503 dpaun,
Clipper za početnike i programere sluhiste (2) / a mogu da gvirnu i ostali, ali da ne galame / Da li službeni broj sloga, koji se dobija funkcijom RECNO(), može biti indeksni ključ? I to da se upisuje direktno, bez akrobacija preko nekih promenljivih i sl.? Može. Za domaći: USE Baza INDEX ON RECNO() TO IndFajl Kad se vrši upis, ovaj IndFajl otvoriti kao i svaki drugi: USE Baza INDEX IndFajl Ja probao i uspeo, a to je dovoljno! dPaun
clipper.504 dejanr,
>> Svaki iole ozbiljniji Clp program zahteva kontrolu podataka koje u bazu >> unosimo preko ekranske maske. U principu, posle otkrivanja greške, prog- >> ram treba da omogući ispravku pogrešno upisanog podatka. Lepo bi bilo, a >> a naš program bi ličio na programe onih iz starijih razreda - kad bi se >> u povratku kursor pozicionirao direktno na mesto greške. To se može us- >> pešno rešiti preko KEYBOARD, ubacivanjem u bafer tastature koda za kur- >> sorsku strelicu "na dole" onoliko puta koliko je to potrebno. Možda nisam dobro razumeo, ali zašto ne koristiš klauzulu VALID (ili RANGE ako je polje numeričko)? Radi "samo" i ostaje na željenom polju dok se ne unese ispravna vrednost ili ne lupi Esc.
clipper.505 andrejl,
Hm, da probam ovako. Kako da budem siguran koliko puta će se procedura pozvati pre nego što sve odleti u vazduh :) ? Račun u stilu (cVAR+nVAR+...)*K=N n-broj poziva procedure k-koeficijent zauzimanja memorije i sl. :) bye, andrejl
clipper.506 andrejl,
Hvala na opširnom objašnjenju !
clipper.507 vili,
> procedure main(br) > rekur(1,val(br)) > return > function rekur(broj,br) > ? broj > if broj==br > return > else > broj:=rekur(broj+1,br) > endif > return broj Malo sam se igrao sa ovim programcicem i dosao do sledecih rezultata: Ako linkujes sa: |za: br | dobijes gresku: ------------------------------|--------|------------------------ RTlink FI rekur /STACK:4096 | 92 | Processor stack fault. RTlink FI rekur /STACK:5000 | 120 | Processor stack fault. RTlink FI rekur /STACK:10000 | 276 | Processor stack fault. RTlink FI rekur /STACK:12000 | 339 | Processor stack fault. RTlink FI rekur /STACK:15000 | 433 | Processor stack fault. RTlink FI rekur /STACK:18000 | 526 | Processor stack fault. RTlink FI rekur /STACK:18550 | 544 | Processor stack fault. RTlink FI rekur /STACK:18600 | 544 | Eval stack fault. RTlink FI rekur /STACK:19000 | 544 | Eval stack fault. RTlink FI rekur /STACK:20000 | 512 | Eval stack fault. RTlink FI rekur /STACK:22000 | 480 | Eval stack fault. RTlink FI rekur /STACK:25000 | 419 | Eval stack fault. RTlink FI rekur /STACK:30000 | 352 | Eval stack fault. RTlink FI rekur /STACK:40000 | 160 | Eval stack fault. RTlink FI rekur /STACK:45000 | 64 | Eval stack fault. RTlink FI rekur /STACK:47700 | 32 | Eval stack fault. Za STACK < 4096 greska je : Cannot execute REKUR.EXE. Za STACK > 47747 greska je : null pointer assignment. Zakljucak: tvoja funkcija moze da se rekurzivno pozove najvise 543 puta. --------- ---------------- Da li to vazi samo za ovu funkciju ili ne, that's the question! Vili
clipper.508 nbatocanin,
Ne može. Ovo piše i u uputstvu. Pogledaj u "Release Notes".
clipper.509 nbatocanin,
"=" se upotrebljava i za dodelu vrednosti. Po meni, najbolje je uopšte ne upotrebljavati "=", već samo ":=" i "==".
clipper.510 ilazarevic,
█ = je dodela podataka a == poređenje :) He, baš sam budala :(( Sorry svima.
clipper.511 ilazarevic,
█ mislio sam na = i == kao poređenja pošto postoje = i := za █ dodeljivanje, a među njima ima razlike. Ma ja sam se malo zeznuo, kad se petljam gde mi nije mesto...
clipper.512 dpaun,
>> zašto ne koristiš klauzulu VALID (ili RANGE ako je polje numeričko)? Koristi(m) se. Ali je stvar u ideji, karakterističnoj za sluhistički stil u programiranju. Šteta je da se ne objavi svoj Clipper rodbini! Naravno, nisam ni očekivao Nobelovu ( a ni noblesovu) nagradu za nju. dPaun++
clipper.513 andrejl,
>│ Da li to vazi samo za ovu funkciju ili ne, that's the >│ question! Baš si se trudio ! Hvala ! Bojim se da sve to zavisi i od broja promenljivih koje koristi procedura i da tu još treba pipati. Na žalost, kad sam ostavio to pitanje ostao sam i bez vremena. Stalno nešto izbije :(, pa nisam stigao da puno petljam. bye, andrejl
clipper.514 ndragan,
/ INDEX ON RECNO() TO IndFajl Indeksni pojam mož da bude svašta: index on 1 to indfajl će isto lepo da uradi. žak se dobija i isti redosled kao sa Recno(), samo će Seek 1 da uvek ode na prvi slog.
clipper.515 ndragan,
/ Koristi(m) se. Ali je stvar u ideji, karakterističnoj za sluhistički Mnogo mi je ličilo na starostavnu kobol logiku iz doba paketnog unosa, odložene obrade i još odloženije povratne informacije. To je bataljeno - prihvaćena je bolja logika da se greška ispravlja na licu mesta, onog trenutka kad se napravi.
clipper.516 zkrstic,
Ajd jedno maaalo konstruktivno pitanjce :)) Ko ima nandef.h i extend.h, al' prerađene da rade sa Borlandovim C-ovima, sve jedno koja varijanta, TC, BC... To je bar, koliko ja znam jedini problem, da bih vezao TC i Cli- pper 87. Originalni hederi iz clippera 87 rade, na žalost, samo sa MSC-om :(( Obzirom da su mali fajlići, mogao bi ovdi da okači, kopirajt ne kršimo ;)) jel' nisam ja kriv Nantucketu što im niko nije rekao da Je Borland firma koja ne pravi usisivače i ostalu belu tehniku, veš nešto sasvim drugo ;)))) Pozdrav, zkr
clipper.517 squsovac,
Hi kliperaši. Imam jedan problem koji sam rešio na prilično nezgrapan način, pa me interesuje ima li neko kakvu dobru ideju ili iskustvo. Naime pretpostavimo da imam bazu tipa: A - Char(20) B - Num(5.2) C - Char(20) D - Num(5.2) I sada bi trebalo prikazati/štampšati/menjati/brisati ili sl. podatke koji zadovoljavaju prilično komplikovan splet uslova koje korisnik zadaje. I tu ne bi bilo problema kada bi komplet uslova bio na primer: A = "Petrovic" .AND. B>20 itd međutim u kompletu uslova može da se desi i na primer A=C .AND. B>35 ili sl. Uslove naravno ne mogu zadati u početku, jer ih valja računati za svaki slog (a u bazu je unešeno već podataka za oko 15.000 ljudi. Dakle, postoji li u kliperu nešto slično onom delu assista iz dB3+ ili je uslove obavezno rešavati ovako pešački preko makroa kako sam ja to uradio. Problem je što baza ima oko 20 polja a za svako od njih može korisnik dati po jedan uslov (teoretski). Zahvaljujem unapred na korisnim savetima SQ
clipper.518 dpaun,
>> Mnogo mi je ličilo na starostavnu (...) logiku (...) >> prihvaćena je bolja logika da se greška ispravlja na licu mesta Rekoh ja braćo da nije stvar u logici, ali nemam kome. Ako, samo da ste Vi meni živi, zdravi i Clipperavi. dPaun()
clipper.519 dpaun,
Clipper rodbino, Ponavljam jedno pitanje od ranije ... 1. Kako da se izvrši autorska registracija programa ? (žuo sam o autorskoj agenciji. Ako je tačno, gde, šta, kad, kako, koliko. Ako niko od braće nije to činio do sada, neka se raspita. Baš mi je hitno.) ... i dodajem dva nova: 2. Koliko veliki .Exe program može da napravi Clp501 ? (Ako teoretski nije ograničen, šta kaže praksa.) 3. Pošto volim da mi je listing piciš-piciš, naredbe koje me nerviraju (na primer, SET CURSOR ON/OFF) zamenjujem domaćim funkcijama (DajK(), SkloniK()) koje ih pozivaju. Zanima me da li, sem estetskog zadovoljstva, ovi surogati rade i neku pakost koju ja zasad ne vidim! dPaun()
clipper.520 ppekovic,
>> Ko ima nandef.h i extend.h, al' prerađene da rade sa >> Borlandovim C-ovima, sve jedno koja varijanta, TC, BC... To >> je bar, koliko ja znam jedini problem, da bih vezao TC i Cli- >> pper 87. Originalni hederi iz clippera 87 rade, na žalost, >> samo sa MSC-om :(( I ako središ hedere, zaboravi sa TC-om sve što pomisli na "plivajuće zareze" jerbo se način rada sa istim razlikuje u odnosu na msc ( pa samim tim i na clipper, jer je clipper pisan u msc-u). Nezgodno je što se tc grafika oslanja na gore pomenute "zareze". Paya
clipper.521 ppekovic,
>> I sada bi trebalo prikazati/štampšati/menjati/brisati ili sl. podatke koji >> zadovoljavaju prilično komplikovan splet uslova koje korisnik zadaje. I tu ne >> bi bilo problema kada bi komplet uslova bio na primer: >> A = "Petrovic" .AND. B>20 itd Rešenje ovog problema preko makroa je mnogo klimava stvar jer je ograničena kako dužina makro stringa tako i broj uslova (neznam na koliko). Ta stvar je i mene mučila dugo, pa sam (vkr i ja) rešio to tako što ubaciš još jedno polje u bazu (nek se zove recimo tag). Onda ti lepo pustiš korisnika da unese uslov, pa odmah po unosu setuješ tab polje za sve slogove koji zadovoljavaju taj uslov. Kad unese sledeći, ponoviš operaciju. Dodaš mu još i opciju da može da izvrši i deselekciju, znači da u zavisnosti od određenog uslova skine tag-ove sa onih slogova koji zadovoljavaju uslov i dobio si sasvim upotrebljiv sistem za selekciju. Još dodaš da može da tag-uje jedan po jedan slog (strelicama pa space i sl.) i gotovo. Paya
clipper.522 nbatocanin,
Ako promenljive koje se unose imaju neku složeniju zavisnost, kontrola se ne može obaviti VALID i WHEN opcijama, već mora tek posle unosa svih.
clipper.523 squsovac,
Hvala za savet. Nešto sam se stalno lomio oko toga kako najbolje da rešim problem, i ideju sa poljem sam već bio odbacio iz jednostavnog razloga što mi nije palo na pamet da odmah posle prvog uslova, dakle pre zadatog i/ili pretrči po bazi i taguje bitne slogove. Stalno mi se činilo da bi to ostajalo na kraju. Ovako će, siguran sam funkcionisati.
clipper.524 dejanr,
>> 1. Kako da se izvrši autorska registracija programa ? >> (žuo sam o autorskoj agenciji. Ako je tačno, gde, >> šta, kad, kako, koliko. Ovo je jedno od češćih pitanja na Sezamu. Ukratko, adresa Autorske agencije je Majke Jevrosime 38, Beograd, tel. 325-997. Najbolje se, dakle, raspitaj kod njih - mislim da treba listing programa i neki opis.
clipper.525 vkrstonosic,
>> 2. Koliko veliki .Exe program može da napravi Clp501 ? >> (Ako teoretski nije ograničen, šta kaže praksa.) Ja sam video program od oko 900 K, moj rekord za sada je samo 500K :))
clipper.526 andrejl,
>│ činio do sada, neka se raspita. Baš mi je hitno.) E, čini mi se da sam ovo već negde pisao, ali može opet. Moj drug ih je zvao (adresu i brojmogu da tražim od njega) i saznao da: - plaća se registracija (1000 din pre 2,5 meseca) - treba predati listing ili disketu - takođe vrše nešto u smislu distribucije (posreduju pri prodaji, koliko sam raumeo) i tada uzimaju nekih 15% - rade samo pre podne, zvali smo jedno popodne i javila se spremačica, a moj drug već počeo da joj objašnjava...;) - nakon registracije zaduženi su da štite autorska prava, a to se "isplati" kada ti neko ćorne program, a ti ga uhvatiš. U Zr je bio slučaj odštete u vidu laptop-a :) Imam i ja par pitanja. čeleo bih da plaćam porez ;). Tj. da li mogu da imam žiro račun bez firme i da se sve vodi u vidu autorskih honorara i da li je tačno da je tada porez "svega" 15%. U nekom spisku poreskih kategorija, nešto najsličnije onome što želim je kategorija gde se pominje i "emajliranje lonaca" i sl. bye, andrejl
clipper.527 dpaun,
Clipper rode rođeni! Može li se .and. kako rešiti sledeći problem, na temu memo: Uvod: tekst koji obrađuje MEMOEDIT() može se snimiti na disk kao običan DOS fajl, uz pomoć funkcije MEMOWRITE(), ili preusmeravanjem preko SET ALTERNATE. MEMOWRITE() prenosi i odgovarajuće meke markere za forma- tizaciju teksta, dok drugi način - da ga sada ne obrazlažem - slaže linije kao švajs-aparat metalne šipke, sve sa tvrdim markerom na krajevima. Drugi način sam primoran da koristim kad želim da tekstove više memo-zapisa snimim u jedan tekst-fajl na disku. Taj proces ima, pored rečenog nedostatka, još i sporost koja se povećava sa poveća- vanjem veličine memo-tekstova. Pitanje: pošto je očigledno rešenje ovog problema u tome da se natera MEMOWRITE() da izabrane memo-tekstove upisuje u jedan DOS fajl, molim stariju Clp braću da stave prst na čelo i smisle način kako da se to izvede. I nemoj opet da mi se svi umusite čim spomenem Memo! Ajd' sad svako na svoj zadatak. dPaun--
clipper.528 kanda,
>> Pitanje: pošto je očigledno rešenje ovog problema u tome da se natera >> MEMOWRITE() da izabrane memo-tekstove upisuje u jedan DOS fajl, molim >> stariju Clp braću da stave prst na čelo i smisle način kako da se >> to izvede. oj dpaune, nisam bas najbolje shvatio u cemu je problem, al da ipak probam... u principu, memo polja se uglavnom ponasaju kao stringovi, sto ce reci da mogu 'ladno' da se npr. upisu u fajl sa fwrite(), da moze po njima da se dzara sa strtran() itd. otprilike: h=fcreate('memo.txt') // kreiras fajl c=baza->memopolje // uzmes memo polje u string fwrite(h,c) // pa to upises u fajl ... // pa radis jos mnoge i korisne radnje... fclose(c) // zatvoris fajl Ostaje problem onih markera. Tamo gde je memoedit() 'prelomila' red, upisuje se chr(141) + chr(10). Tamo gde je korisnik to ucinio, tj. pritisnuo ENTER, upisuje se CRLF, znaci chr(13) + chr(10). Dakle, ako hoces da kad memo polje ubacis u fajl, tamo izgleda isto kao i na ekranu, ti zamenis sve chr(141)+chr(10) sa chr(13)+chr(10) ; bas to radi funkcija hardcr() - ubacis c=hardcr(c) pre fwrite() i to je to. Ako pak hoces da to moze da se ucita u tekst procesor, pa ti to sto je memoedit() prelomila redove smeta, ti izbacis sve te chr(141) + chr(10), moze sa c=strtran(c, chr(141) + chr(13), '') pre fwrite(). Inace, onaj chr(141) se u literaturi zove 'soft carriage return', za razliku od chr(13) koji je naravno 'hard carriage return'
clipper.529 dvokshi,
Naprimer ovako : ******************** local hand use baza hand=fcreate('gomila.txt',0) if ferror()<>0 ?'File create error : ',ferror() else do while !eof() fwrite(hand, memo_field) skip enddo fclose(hand) endif ***************** Samo pazi da ti memo_field završava sa CR-LF (ili ga dodaj sam), inače sledeći memo_field nastavlja u istoj liniji. Još možes dodati kontrolu greške FWRITE -a, itd.
clipper.530 nbatocanin,
> 2. Koliko veliki .Exe program može da napravi Clp501 ? > (Ako teoretski nije ograničen, šta kaže praksa.) Ja sam pravio programe oko 1MB, ladno radi na 512K memorije, još mogu i dibager da startujem. U stvari, sve zavisi od velicine dela koji ide u osnovnu memoriju: razne tabele, fiksni overleji, itd. U principu sporo raste, ali retko ide ispod 300-400K. > 3. Pošto volim da mi je listing piciš-piciš, naredbe > koje me nerviraju (na primer, SET CURSOR ON/OFF) > zamenjujem domaćim funkcijama (DajK(), SkloniK()) > koje ih pozivaju. Zanima me da li, sem estetskog > zadovoljstva, ovi surogati rade i neku pakost koju > ja zasad ne vidim! SET CURSOR pretprocesor prevodi u SetCursor() funkciju, pa tvoja funkcija poziva funkciju, što je apsolutno neškodljivo, osim nerviranja steka i procesora.
clipper.531 nbatocanin,
> Pitanje: pošto je očigledno rešenje ovog problema u tome > da se natera MEMOWRITE() da izabrane memo-tekstove upisuje > u jedan DOS fajl, molim stariju Clp braću da stave prst na > čelo i smisle način kako da se to izvede. U čemu je problem? HARDCR() lepo zamenjuje soft-return oznake sa hard-return, a memo polja lepo "sabereš" kao stringove, pa sve zajedno upišeš u datoteku pomoću MemoWrite().
clipper.532 vkrstonosic,
>> Ostaje problem onih markera. Tamo gde je memoedit() 'prelomila' red, >> upisuje se chr(141) + chr(10). Tamo gde je korisnik to ucinio, tj. Probaj MEMOTRAN()
clipper.533 ndragan,
/ kontrola se ne može obaviti VALID i WHEN opcijama, već mora tek posle / unosa svih. Svakako, što propusti Mali Radojica dočekuje Starina Novače. I jedno i drugo. Hteo sam kasti da ako se kontroliše _samo_ naknadno, to izaziva popriličnu nervozu kod operatera, jer češće mora da se vraća dooosta nazad da ispravlja itd. Nervozan operater pravi nove greške, i izmišlja nove tipove grešaka. Zato mislim da je najbolje presresti grešku onog trenutka kad može da se uoči - što pre to bolje. Bue_ Ndragan
clipper.534 dpaun,
>> >> Clipper rode rođeni! Odgovor na 5.528, 5.532, 5.529 Hvala, braćo! Prosto mi bio zaribao centar za Clipper. Primenio sam, dakle, rešenje sa funkcijama niskog nivoa, FCREATE(),FWRITE(),FCLOSE(). Pošto sam želeo da grupišem niz memo-polja u jedan DOS fajl, a ispred svakog da ide, najpre, sadržaj nekog drugog polja baze, i taj sadržaj sam takođe pisao sa FWRITE(). Prazne redove, neophodne da bi se izbeglo "slepljivanje" tekstova, dodavao sam ovako: s := spac(xx) + chr(13) + chr(10) fwrite(dos_file, s) Probao sam da sa ovom funkcijom pozovem moju funkciju, radi: fwrite(dos_file,moja_func()) Inače, dopunske operacije sa mekim i tvrdim markerima nisu potrebne. Tekst je na disku sasvim u redu i raspored markera je normalan. Važno je još i ovo: dalja obrada teksta je idealna jedino u WordStaru (zna se i zašto). Probao sam, na kratko, WP501 i kada se unosi preko F5 javlja da format nije kompatibilan! Išao sam preko konverzije (kao da je tekst WS3.x) i uspeva, ali se u ovom slučaju gube tabulatori i tekst se sav slepi za levu marginu. Osvrt na 5.531 (ideja brata nBatocanina) >> memo polja lepo "sabereš" kao stringove, pa sve >> zajedno upišeš u datoteku pomoću MemoWrite(). Memo-polje može biti string do 64 K. Nisam smeo da se upustim u operacionalzaciju ove ideje jer ne znam kako bi sve funkcionisalo, obzirom na memoriju. Zamislimo da je svaki memo maksimalan i da treba "sabrati" tridesetak takvih slogova, pa tek onda zapisati na disk?! Pošto se gore navedeno rešenje pokazalo idealnim, ovu mogućnost sam samo "primio k znanju". Hvala svima. dPaun(.T.)
clipper.535 dpaun,
>> / kontrola se ne može obaviti VALID i WHEN opcijama, već mora tek >> posle / unosa svih. >> >> ako se kontroliše _samo_ naknadno, to izaziva popriličnu nervozu >> kod operatera, jer češće mora da se vraća dooosta nazad da ispravlja itd. Pošto sam ja ovo započeo, red je i da probam da rezimiram /a probao samo i obe varijante/: 1. Clipper, videli smo, ima mogućnosti za oba načina kontrole unosa. 2. Koji će se primeniti, zavisi od konkretne situacije: - od veličine (broja polja) maske i složenosti unosa (odakle su i kakvi su podaci koji se upisuju); - od nerava i naravi "operatera" (ergonomija); - od vrste i složenosti procesa kontrole. - i ko zna čega još /na primer: meni u trenutnoj kontroli veoma smeta što se PROVERA vrši svakom prilikom kada se prolazi kroz polje! Kada se kontrola sastoji od, npr, provere kako se uneti podatak odnosi prema nekoj drugoj bazi - koja raste li raste, a i treba da raste - onda je vožnja gore dole po masci neprijatna jer će stalno da "zapinje" na pojedinim mestima! / 3. Rešenje je, izgleda, u "kombinovanom" načinu kontrole. Ideja koju sam izneo - vraćanje na određeno mesto maske preko KEYBOARDA - treba operatera da oslobodi straha da će morati da se vraća *doosta* nazad ... A da posle izmene na određenoj "tački" neće morati da ide *doosta* napred, podsetimo ga da ima CtrlW ... Klanjam se, dPaun(), niži Clipper činovnik iz unutrašnjosti.
clipper.536 ndragan,
/ veoma smeta što se PROVERA vrši svakom prilikom kada se Ništa te ne sprečava da u Valid funkciji izdvojiš slučajeve koje nećeš kontrolisati i ovo izbegneš; takođe postoje načini da se ustanovi da li je polje menjano ili nije; ako nije, opet preskačeš kontrolu. Time se izbegava problem na koji se žališ. / KEYBOARDA - treba operatera da oslobodi straha da će morati da FoxPro ima lepši način - Valid može da vrati rezultat, naprimer, -5, i to znači da se kursor parkira pet polja pre testiranog polja. Ako takvu kontrolu staviš na poslednje polje... dobio si to isto, osim što izbegavaš mogućnost da unutar onog Keyb uleti nešto što je operater u brzini ugurao u tastaturu dok je tvoja procedura radila... / dPaun(), niži Clipper činovnik iz unutrašnjosti. Bue_ Ndragan, zalupati foksovac, ovdašnji
clipper.537 dpaun,
Clipper braćo, Seća li se još ko DOS-a 3.20? Bio sam u prilici da postavim program jednom pobratimu koji ima XT mašinu sa tom verzijom DOS-a i 512 K RAM-a. Programu je potrebno preko promenljive okruženja povećati broj otvorenih faj- lova. U Config.sys je postavljeno files=35, a u Autoexec.bat do- data linija set clipper=f35 (što je, inače, za dotični program provereno na 10-ak AT mašina). Na žalost, na mestu gde se otvara oko 30-ak što baza što indeksa - stane i "prijavi" da zbog DOS greške 4 ne može da otvori taj-i-taj dbf ili ntx fajl (zavisi koji mu se nađe na spisku "prekoračenja"). DOS greška broj 4, nesumnji- vo, ukazuje da nema dovoljno "bafera" za toliki broj fajlova! Pošto se pomenuta situacija razlikuje od drugih jedino po verziji DOS-a, zaključio sam da bi problem mogao da bude u tome. Poveća- vao sam brojku i u Config-u i u Autoexec-u /do 101 i nazad/, ali komp ni da trepne. Prema iskustvu i uputstvu, kada pređe dara meru, DOS treba da se pobuni (nešto kao out enviroment ...); ovaj ni to nije hteo. Pa se pitam, je li to falinka te fosilne verzije 3.20, ili je neki drugi DOS đavo u pitanju. Ako neko od Clipper501 rodbine ima slična iskustva, neka šarne odgovor kako ga je rešio. Lično, ovde ću pokušati najpre sa nekom novijom DOS verzijom. dPaun(v49)
clipper.538 pjankovic,
Treba da stoji velikim slovima: SET CLIPPER=F35. Pedja
clipper.539 ndragan,
/ ima XT mašinu sa tom verzijom DOS-a i 512 K RAM-a. Programu je Neka ga pokloni nekoj školi ili nek ga preuzme direktorova sekretarica da vodi rokovnik. I... da, može i za tetris. žemu inače može da služi ih te? Bue_ Ndragan
clipper.540 dpaun,
>> / ima XT mašinu >> >> Neka ga pokloni nekoj školi ili Ma, čovek je na njemu završio fakultet, a upravo ovih dana je trebalo da magistrira u jednoj stranoj državi, ali su ga blokirali... PS. A kartica CGA! A žena čangrizava ... dPaun(AT)
clipper.541 wizard,
>> žemu inače može da služi ih te? Za Sezam. :) <<nenad<<
clipper.542 dpaun,
>> Treba da stoji velikim slovima: SET CLIPPER=F35. Probao sam i ne ide! Mora da bude štos u nečem drugom! Pomagajte, braćo! dPaun(---
clipper.543 kanda,
Pitanje u vezi extend sistema. Da li je moguce _par?? funkcijama dohvatiti elemente 'ugnjezdjenog' niza ? Recimo, imam C funkciju : ------------ void pascal yo(void){ _retni(_parni(1, 3, 2)); /* treba da vrati a[3][2] */ } ------------ pa je zovem iz klipera : ------------ a := {1, 2, {31, 32}} ? yo(a) // trebalo bi da vrati 32, a vraca 0 ? ------------ U knjizi 'Clipper 5' od Ricka Spencea, str. 379 pise da je ovo MOGUCE, al meni nesto ne polazi za rukom. Jel zna neko u cemu je stos?
clipper.544 nimi,
Da li je principijelno ispravno ili ne reci da je prvi prenos niza a1 u f-ju ubaci() po vrednosti a drugi po referenci. Promenom mesta poziva dobija se isto. Proc Main() LOCAL a1:={"Zut","Plav","Crven"} Ubaci(a1) Aeval(a1,{|f| qout(f)}) //izdaje :Zut Misko Plav ? "Posle reference" ? Ubaci(@a1) Aeval(a1,{|f| qout(f)}) //izdaje :Zut Misko Misko RETURN FUNCTION Ubaci(arr) Ains(Arr,2) Arr[2]:="Misko" RETURN NIL
clipper.545 jpiri,
>> Probao sam i ne ide! Mora da bude stos u necem drugom! >> Pomagajte, braco! A jesi probao da zamenis DOS? Barem sa verzijom 3.30? (ako se ne varam tek 3.30 ima mogucnost 255 otvorenih datoteka)
clipper.546 zkrstic,
>>> Probao sam i ne ide! Mora da bude stos u necem drugom! > A jesi probao da zamenis DOS? Barem sa verzijom 3.30? > (ako se ne varam tek 3.30 ima mogucnost 255 otvorenih datoteka) Sa 105% ti garantujem, radi na dosu, >= 3.30 Juče sam nešto prčko po knjizi, u vezi nekih ograničenja, pa baš videh i taj štos. Pozdrav, zkr
clipper.547 nbatocanin,
Niz se *uvek* prenosi kao pokazivač na prvi element, tako da pojedinačna izmena elemenata uvek menja i originalni niz. To znači, ako se u proceduri nađe naredba X[3] := 123, obavezno se menja i originalni niz, bez obzira na način prenosa - adresa niza i kopija adrese niza pokazuju na jedan isti niz: ... x := {1, 2, 3} pp (x) // {1, 22, 3} x := {1, 2, 3} X ──────────>┌> {1, 2, 3} pp (@x) // {1, 22, 3} │ ... │ │ proc pp (niz) niz──────────┘ niz[2] := 22 return Ako se, međutim, menja pokazivač na niz, onda ima razlike: ... x := {1, 2, 3} pp (x) // {1, 2, 3} X ──────────> {1, 2, 3} pp (@x) // 123 ... proc pp (niz) niz─────────> 123 niz := 123 return Jer se u drugom slučaju menja originalna vrednost.
clipper.548 ndragan,
/>> Treba da stoji velikim slovima: SET CLIPPER=F35. / Pomagajte, braćo! A malim slovima?
clipper.549 dpaun,
>> Sa 105% ti garantujem, radi na dosu, >= 3.30 >> >> Juče sam nešto prčko po knjizi, u vezi nekih ograničenja, pa baš >> videh i taj štos. >> >> Pozdrav, zkr Pretpostavljam da si u kucanju ispustio caku koju si našao u knjizi. Budi ljubazan pa je pošalji! dPaun
clipper.550 dpaun,
>> />> Treba da stoji velikim slovima: SET CLIPPER=F35. >> / Pomagajte, braćo! >> >> A malim slovima? Prvo je bilo otkucano malim slovima, nije išlo; probao sam velikim slovima - ne ide! Amaaaan ... dPaun
clipper.551 zkrstic,
> Pretpostavljam da si u kucanju ispustio caku koju si našao u knjizi. > Budi ljubazan pa je pošalji! Nisam, govorili smo o SET CLIPPER=F050 Ovo lepo radi na DOSU 3.3 i većem, za niže, ne važi :( zkr
clipper.552 ndragan,
/ Prvo je bilo otkucano malim slovima, nije išlo; probao sam velikim / slovima - ne ide! Amaaaan ... Ostao sam bez ideja ;(. Poslednji pokušaj: grčka slova, možda?
clipper.553 djoskovski,
Zdravo, Pisem on-line , Valjda ce biti dobro set CLIPPER= F35 na pr. nije isto sto i set CLIPPER = F35 probajte oba dva i vedecete SET -om da postoje dve Env-var. za vise od standardnih 15 Fileova MORA se opotrebiti SET CLIPPER= ...... Znaci rec CLIPPER mora biti slepljena znakom za = sa druge strane nije bitno. Inace datoteke se broje SVE RADNE ZONE U UPOTREBI+SVI OTVORENI INDEX FILEOVI+5(COM,PRN,CON,..)+2 (ovo zadnje za svaki slucaj) ovo bi trebalo da radi 100% ako je u CONFIG.SYS broj >= i ako programu ostane dovoljno memorijeHHKKM za rad. Pozdrav, dJoskovski
clipper.554 nopsenica,
Jedino pomocu == se mogu porediti objekti. Objekti se zaista mogu porediti jedino pomocu ==, ne radi cak ni !=. Nenad
clipper.555 nopsenica,
Zasto Clipper 5.01 uz DOS 5.0 nekada (ne uvek!) pri linkovanju programa sa PLL pravi probleme? Problem se manifestuje kod startovanja programa, jer se program buni da ne valja struktura loadable file-a (ne zna se kojeg). Ponekad pomogne ponovo linkovanje PLL-a ali ne uvek. Help! Nenad
clipper.556 dpaun,
>> Ovo lepo radi na DOSU 3.3 i većem, za niže, ne važi :( >> žžžžžžžžžžžžžžžž Problem je upravo u tome: da se natera DOS manji od 3.3 da otvori više od tuce fajlova. Očigledno, preko FILES-a ne može. Seća li se neko FCB-a? Nije li tu odgovor? dPaun
clipper.557 bora,
Ako se dobro secam pocetka ove diskusije odgovor je sledeći: Tek počevši od DOS-a 3.30 moguće je otvoriti istovremeno više od 15 (FILES), tako da naredba FILES=xx i SET CLIPPER=Fxx nemaju smisla za DOS verziju 3.20 i prethodne. Uzeti u obzir da je EKRAN jedna arhiva, ŠTAMPAž druga,... tako da samom korisniku ostaje samo desetak za rad (u KLIPERU SE BROJE SVE OTVORENE ARHIVE I *.DBF i *.NTX). Jedino rešenje: Reducirati program, ili što je normalnije promeniti operativni sistem. Pozdrav Bora
clipper.558 kzoran,
Ljudi, kako se "upotrebljava" Nanfor toolkit? Instalacija (kompajliranje i formiranje biblioteke) mi ne daje nikakve rezultate, iako sam pokušao sve što mi je palo na pamet. Ne mogu da iskoristim ni gotov .LIB fajl koji se nalazi u arhivi. Na svakom mestu u Clipper programu na kom izvršim poziv neke funkcije iz nanfor.lib, linker javlja "unresolved external". O čemu se radi? Pozdrav, Zoran.
clipper.559 kanda,
>> Problem je upravo u tome: da se natera DOS manji od 3.3 da otvori >> više od tuce fajlova. Očigledno, preko FILES-a ne može. Seća li se >> neko FCB-a? Nije li tu odgovor? Verovatno jeste... ako mozes da prepravis Clipper da umesto handle koristi FCB sistem :) Cemu toliko insistiranje na nekom bajatom DOS-u ?
clipper.560 kanda,
>> Ljudi, kako se "upotrebljava" Nanfor toolkit? Instalacija >> (kompajliranje i formiranje biblioteke) mi ne daje nikakve rezultate, >> iako sam pokušao sve što mi je palo na pamet. Ne mogu da iskoristim >> ni gotov .LIB fajl koji se nalazi u arhivi. Na svakom mestu u Clipper >> programu na kom izvršim poziv neke funkcije iz nanfor.lib, linker >> javlja "unresolved external". O čemu se radi? Hm, izvini ako je moje pitanje glupo... jesi li povezao biblioteku? 'RTLINK FILE ime LIB nanfor'.
clipper.561 nbatocanin,
> Ljudi, kako se "upotrebljava" Nanfor toolkit? Kako linkuješ?
clipper.562 kzoran,
>> Hm, izvini ako je moje pitanje glupo... jesi li povezao biblioteku? >> 'RTLINK FILE ime LIB nanfor'. Ma, nije glupo. Mogla je da bude glupost samo sa moje strane, ali, evo, sve to je sacekalo dva dana, sednem ponovo da instaliram taj nanfor (ne znam ni sam zasto na tome insistiram - verovatno ne zbgo samog Clipper-a koliko da otkrijem u cemu gresim) i opet ista stvar. Sve sam pokusavao, cak i kompaj- liranje i linkovanje samo pojedinih .obj fajlova koje sam zeleo da isprobam, ali bez rezultata. Jedino sto cu jos pokusati je da ponovo preuzmem sa Sezama toolkit; postoji mogucnost da mi je neki od fajlova ostecen, jer vec nedeljama stoje raspa- kovani u jednom poddirektoriju u koji svasta trpam, dearhiviram, instaliram i sl. U svakom slucaju, hvala na savetu. Pozdrav, Zoran.
clipper.563 kzoran,
>> Kako linkujes? Prvo sam poceo propisanom sintaksom "rtlink file imeobj library nanfor", sa i bez ekstenzije, a kad sam video da posle par varijacija nista ne pomaze, poceo sam da lupam. Prvo sam umesto imena biblioteke navodio listu objektnih fajlova koji su mi trebali, opet sa i bez ekstenzije. Zatim sam poceo da linkujem MS linkerima (iz DOS-a 5.0, MSC6, MASM 5.1) - bez rezultata. Sledece je bilo igranje sa env. varijablama OBJ i LIB, pa ponovna instalacija toolkita sa putanjama koje su navedene u nanfor.rmk fajlu, misleci da sam mozda kod konfigurisanja u njima nesto zgresio - opet nista. Na kraju sam posumnjao na ispravnost fajlova i mogucu gresku prilikom prenosa sa Sezama - nije ni to. Vise me gotovo i ne interesuje nanfor.lib :)); hocu da se uverim da nisam za generalnu. Ili mozda jesam ... Pada li tebi sta na pamet? Evo sta mi linker prijavljuje (nije "unresolved external", kako sam to u prvoj poruci napisao - to mi je valjda javljao MS linker): ************************************************************************* .RTLink for Clipper Dynamic Overlay Linker / Pre-Linker Version 3.13 (C) Copyright Pocket Soft Inc., 1988-1991. All Rights Reserved. UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: SYMBOL FIRST REFERENCE ------ --------------- 'FLOPTST' FK.OBJ warning wrt0022: .EXE may not execute properly -- undefined symbols 240K 1 warning message(s) ************************************************************************** Pozdrav, Zoran.
clipper.564 vili,
> > UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: > SYMBOL FIRST REFERENCE > ------ --------------- > 'FLOPTST' FK.OBJ > > warning wrt0022: .EXE may not execute properly -- undefined symbols > 240K > 1 warning message(s) Meni ovo vise lici na gresku u programu nego na problem sa 'library'. U 'file'-u FK.PRG imas poziv funkcije (ili procedure) FLOPTST koje nema na vidiku. Vili
clipper.565 ndragan,
/ tuce fajlova. Očigledno, preko FILES-a ne može. Seća li se neko FCB-a? Fcbs = 120,0 Ovo smo morali da ubacujemo u config.sys kod RPTI mreže do verzije 1.41; od 1.42 nadalje ne treba. Pošto ta mreža zahteva instaliran SHARE, moguće da ni ta linija sa Fcbs neće pomoći bez njega. Prvi broj je maksimalni broj istovremeno otvorenih fajlova, a drugi je valjda za minimum koji se mora sačuvati u otvorenom stanju (nikad mi nije bilo jasno zašto, znam samo da smo uvek stavljali nulu, a za prvi broj stavljali od 100 do 200). Pomogao?
clipper.566 dpaun,
>> Cemu toliko insistiranje na nekom bajatom DOS-u ? Nisam primetio da je *toliko*, verovatno. dPaun(žovekSačivcima++)
clipper.567 vili,
> void pascal yo(void){ > _retni(_parni(1, 3, 2)); /* treba da vrati a[3][2] */ > } Obzirom da _parni() prihvata samo dva parametra ovo gore sigurno nece da radi. U tom smislu _parni(1,3) bi trebao da bude pointer na vektor {31,32} pa bi moglo mozda nesto ovako: void pascal yo(){ int *s; s= _parni(1,3); _retni(s[1]); } ???????????? Vili
clipper.568 kanda,
>> UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: >> SYMBOL FIRST REFERENCE >> ------ --------------- >> 'FLOPTST' FK.OBJ Probaj da u sorsu napises FT_FLOPTST umesto FLOPTST, verovatno je u tome problem - sve rutine iz NANFOR biblioteke pocinju sa FT_.
clipper.569 kanda,
>> Obzirom da _parni() prihvata samo dva parametra ovo gore >> sigurno nece da radi. U tom smislu _parni(1,3) bi trebao >> da bude pointer na vektor {31,32} pa bi moglo mozda >> nesto ovako: >> >> void pascal yo(){ >> int *s; >> s= _parni(1,3); >> _retni(s[1]); >> } >> >> ???????????? Nazalost, ne moze. _parni() vraca int, a ne int*, baska to sto kliperov niz ne lici ni najmanje na niz u C-u. Osim toga, otkud znas da _parni() prihvata samo dva parametra? Deklaracija je int _parni(int,...) sto ce reci 'jedan ili vise parametara' Video sam u jednoj knjizi konstrukcije tipa '_parni(1,5,4)' u smislu '4. element 5. elementa niza koji je doturen kao prvi parametar'.
clipper.570 kzoran,
Eureka! To je to! Pa, je li to moguće, ljudi mojiK ljudi moji, je li to moguće??? Kanda, nikad ti ovo neću oprostiti! Pozdrav, Zoran.
clipper.571 vili,
> void pascal yo(){ > int *s; > s= _parni(1,3); > _retni(s[1]); > } > > ???????????? > Vili Probao sam. Naravno ovako nesto nema teorije da radi. Nisam uspeo ni na neku drugu foru. Vili
clipper.572 nbatocanin,
> UNDEFINED SYMBOL(S) AFTER LIBRARY SEARCH: > SYMBOL FIRST REFERENCE > ------ --------------- > 'FLOPTST' FK.OBJ Aaaah! Pa sve funkcije počinju sa FT_. Znači, pišeš FT_FlopTst (), a ne FlopTst (). Uzgred, ova funkcija ima bug.
clipper.573 toma,
Pomoz Bog junaci ! Trebao bi mi EXTENDA.INC ili DIR.OBJ programcica DIR.ASM koji je okacen o neku poruku ovde. Ako ima neko da nema sta da radi trenutno, molio bih ga da mi to siljne ovde ili na mail. Mlogo vi fala unapred. ▄▄▄▄▄ ▄▄▄▄▄ ▄ ▄ ▄▄▄ █ █ █ █▀▄▀█ █▄▄▄█ ▀ ▀▀▀▀▀ ▀ ▀ ▀ ▀
clipper.574 nbatocanin,
U jednom od ranijih "Računara" je objavljen listing funkcije NextID sa greškom (ID je zamenjeno sa MAX). Ispravan listing glasi: FUNC NextId (FileID) LOCAL ID, fp, Buff // Ako datoteka ne postoji, ID == 1 ID := 1 // Datoteka postoji... IF File (FileID) fp := FOpen (FileID, 0) Buff := Space(5) FRead (fp, @Buff, 5) // Ovde je bila greska ID := Val (Buff) + 1 // Ovde je bila greska FClose (fp) END IF // Svejedno kreiraj novu datoteku i upisi tekuci... fp := FCreate (FileID) FWrite (fp, Str(ID,5,0)) FClose (fp) RETURN ID Zahvaljujem GStojkovicu na upozorenju. Ovo je ujedno i odgovor na njegovo privatno pitanje.
clipper.575 nbatocanin,
Evo! DIR.ASM i DIR.OBJ. d.zip
clipper.576 nbatocanin,
Ako ste probali da dodate REPEAT petlju kao komandu svojim programima, onda ste primetili da ovo ne pali: #command REPEAT => WHILE .T. #command UNTIL <uslov> => IF <uslov> ; EXIT ; END IF ; END DO E, ali ovo 'oće: #command REPEAT => WHILE .T. #command UNTIL <uslov> => IF <uslov> ; EXIT ; END ; END Razlog je što iza END može doći bilo koji tekst (komentar), pa ako napišete END IF, Clipper sve do kraja reda shvati kao komentar uz END.
clipper.577 dpaun,
Jedan problem na temu WHEN: FUNC Unos() x,y GET polje1 x,y GET polje2 WHEN Daj() read FUNC Daj() // preuzimanje vrednosti za polje2 // iz, na primer, neke baze ... Opis: Kad je kursor na "polje2", pritiskom na AltF10 (recimo) treba da se pređe u Daj(). Pitanje: Kako? Obrazloženje: ja probao u Func Daj() da stavim Inkey(0), pa preko If LastKey()==-39 itd ... Međutim, kad kursor dođe na "polje2" postavljeni uslov "ne pali", već tastere treba pritisnuti na poziciji "polje1", i to tek kao drugi pokušaj (jedanput, na primer, pritisnemo bilo koji taster, pa tek onda AltF10). - Probao još neke varijante i zaključio: bolje da pitam "na Sezam". Vaš odani dPaun()
clipper.578 vili,
> Ako ste probali da dodate REPEAT petlju kao komandu svojim > programima, onda ste primetili da ovo ne pali: > ># command REPEAT => WHILE .T. ># command UNTIL <uslov> => IF <uslov> ; EXIT ; END IF ; END DO > > E, ali ovo 'oce: > ># command REPEAT => WHILE .T. ># command UNTIL <uslov> => IF <uslov> ; EXIT ; END ; END > > Razlog je sto iza END moze doci bilo koji tekst (komentar), pa ako > napisete END IF, Clipper sve do kraja reda shvati kao komentar uz > END. Kod mene 'pali' i jedno i drugo. Vili
clipper.579 vili,
> Osim toga, otkud znas da _parni() prihvata samo dva parametra? Cit'o sam u knjigama :). > Deklaracija je int _parni(int,...) sto ce reci 'jedan ili vise parametara' I tvoji i moji pokusaji govore (argumentima) da _parni() prima (zasad :)) samo dva parametra. Vrlo sam zainteresovan da vidim resenje kojim se ugnjezdeni vektor prebacije C-u. Da li je neko uspeo u tome? U NG-u postoji objasnjenje kako Clipper prebacije vrednosti i reference C-u (VALUE, OREF i VREF i tome slicno), ali nisam bas najbolje shvatio :(. Ima li neka bistra glava da to pravilno protumaci i uspe da ugnjezdeni vektor prebaci C-u? Vili
clipper.580 dpaun,
>> Međutim, kad kursor dođe na "polje2" >> postavljeni uslov "ne pali", već tastere treba pritisnuti na >> poziciji "polje1", Dok Clipper konzilijum veća kako da se reši problem, da pojasnim ovo jednim citatom iz R. Spence, Clipper 5, s. 314: "Opcija WHEN razlikuje se od VALID u tome što naredba READ izvršava pre naredbe GET." Problem koji sam postavio, mora i ovu osobinu WHEN-a da ima u vidu. žekam. dPaun
clipper.581 vkrstonosic,
>> Dok Clipper konzilijum veca kako da se resi problem, da pojasnim ovo >> jednim citatom iz R. Spence, Clipper 5, s. 314: Zasto ne bi recimo uveo dve funkcije, jednu za when i jednu za valid, koje bi vracale .T., a imale set key K_F10 to p_f10 i set key K_f10 to, pa onda u proceduri p_f10 radi ono sto ti treba.
clipper.582 toma,
=> Evo! DIR.ASM i DIR.OBJ. Hvala veliko sto si se potrudio, nije mi bio dobar EXTENDA.INC iz S87. U medjuvremenu sam nabavio Clipper 5.01 (tek sad, sta da radim), i uglavnom je sve OK (za sada) sem jednog problemcica: Sve se odvija na disku D: na tom disku je dir D:\POSAO, koji je u path-u, i u append naredbi autoexec fajla. E sad tu je i direktorijum D:\POSAO\PLATE koji mi sluzi za *.prg i testiranje, posle cega program prebacim u D:\POSAO. Kada pokusam da linkujem fajlove (Rtlink) u dir-u D:\POSAO\PLATE, i ako fajl PLATE.EXE postoji u dir-u D:\POSAO linker javi sledece: error ert0061: Input/output error on output file 'PLATE.EXE' deleting temporary work file 'rt010112.swp' Ako sad izbrisem D:\POSAO\PLATE.EXE i ponovo probam, sve je OK. Sve je ovo, naravno, lako resiti, ali zasto se to desava ? Pozdrav od Tome.
clipper.583 mandrejevic,
Mali komentar na clanak "Tabele na Klipperu" od Nenada Batocanina objavljenom u 83 Racunarima. Posto sam se i ja mucio oko "brljanja ekrana" kada se TB objekat osvezava, mislim da mogu malo da pomognem, a bez uvodenja funkcije Fresh(TB). Naime, ubacivanjem jedne kontrolne sekvence if-end resava se problem u potpunosti: while .t. nKey := 0 while !TB:Stabilize() .and. ((nKey := Inkey()) == 0) ; end if nKey == 0 nKey := Inkey(0) end --> if TB:stable <---------------------------- do case case (nKey == K_ESC) Da ne bih bio mnogo pametan, ovo sam video u nekom od filova koje sam pokupio sa JUBAS -Split (sada verovatno CROBAS) pre rata, pa koga ne mrzi neka gleda. Inace ima dosta primera o TB objektima, anomalijama Clippera i koje cega jos. Sve lepo spakovano u CLIP-CRO.ZIP-u. clip-cro.zip
clipper.584 dpaun,
>> Zasto ne bi recimo uveo dve funkcije, jednu za when i jednu za >> valid, koje bi vracale .T., a imale set key K_F10 to p_f10 i set >> key K_f10 to, pa onda u proceduri p_f10 radi ono sto ti treba. Da mi poživiš dugo, brate, i da te Clipper dobro služi! Niže je rešenje koje sam primenio, podstaknut tvojom idejom o dve procedure. Nadam se da je primer jasan. Kome nije, neka pita. * PROC MaskaUnosa č 13, 2 GET RecKLj1 PICT "č!" WHEN DajREC() č 14, 2 GET RecKLj4 PICT "č!" WHEN SkloniK9() č 15, 2 GET SifIzd PICT "99" WHEN DajKIZD() č 16, 2 GET GodNas PICT "99" WHEN SkloniK9() č 17, 2 GET SifJez PICT "99" WHEN DajKJEZ() č 18, 2 GET SifVla PICT "99" WHEN DajKVLA() č 19, 2 GET BrPRIM PICT "99" WHEN SkloniK9() READ * FUNC DajREC() && Ovo je kao neki MESSAGE uz GET č 24,0 SAY SPAC(77) č 24,1 SAY "Upiši ključnu reč" RETURN .T. * FUNC DajKIZD() SET KEY -9 TO DajIZD č 24,0 SAY "Pritisni F10 za spisak izdavača" RETURN .T. * FUNC DajKJEZ() SET KEY -9 TO DajJEZ č 24,0 SAY "Pritisni F10 za spisak jezika " RETURN .T. * FUNC DajKVLA() SET KEY -9 TO DajVLA č 24,0 SAY "Pritisni F10 za spisak vlasnika" RETURN .T. * FUNC SkloniK9() SET KEY -9 TO č 24,0 SAY SPAC(77) RETURN .T. FUNC DajJEZ() LOCAL sEkr := SAVESCREEN(6,30,16,76),iZ := 0,sBoja:=SETCOLOR() SETCOLOR(cMask) && cMask definisan na početku programa SELE 7 && Baza otvorena na početku programa Bz := OdrBZP() + 1 && Korisnička funkcija za ograničavanje broja && zapisa u bazi, ako je veći od 4090 DECLARE BrJ ŠBzĆ, ImJ ŠBzĆ GOTO TOP DO WHIL !EOF() iZ++ BrJŠiZĆ := SIF_JEZ ImJŠiZĆ := STR(SIF_JEZ) + " " + NAZ_JEZ SKIP ENDDO IF iZ == 0 SETCOLOR(sBoja) č 24, 0 SAY SPACE(70) č 24, 0 SAY " Nema ..." INKEY(3) RETURN .F. ENDIF č 6,30 CLEAR TO 16,76 č 6,30 TO 16,76 č 6,60 SAY "Izbor jezika" č 16,38 SAY "Enter=izbor, Esc=izlaz" Izb := ACHOICE(7,31,15,75,ImJ) IF Izb > 0 SifJez := BrJŠIzbĆ KEYBOARD BrJŠIzbĆ ENDIF RESTSCREEN(6,30,16,76,sEkr) SETCOLOR(sBoja) RETURN .T. * FUNC DajIZD() ... * FUNC DajVLA() ...
clipper.585 pmsimic,
Molim da mi neko objasni kako da napravim rutinu pisanu u TC++ 2.0 koja ce se koristiti i pozivati kao funkcija u CLIPPER-u. Molim primer prevodjenja i linkovanja. Unapred zahvalan , PMSIMIC iz Pristine
clipper.587 nbatocanin,
> Kod mene 'pali' i jedno i drugo. Moja greška. Pretprocesor i "END IF" i "END DO" prevodi samo u "END". Problem je ako se napiše spojeno "ENDIF" i "ENDDO" - pogrešno sam napisao.
clipper.588 nbatocanin,
Nisam stigao da probam (probaću), ali mi se čini da je problem možda u pozivanju funkcija _par. Naime, one argumente potrpaju na stek, a rezultat se dobija takođe na steku. Možda se u onom _retni ( _parni ()) krije neki problem. Probajte sa jednostavnim pozivima i u dibageru. Ipak je u EXTEND.H stavljeno _parni (int, ...) - ne verujem da je bez razloga. Ono sa adresom niza svakako neće.
clipper.589 umajstorovic,
Jedan moj drug me je zamolio da ostavim ovde sledeće pitanje: Kako se u Clipperu radi fflush u fajl. Naime, on otvori datoteku, nešto brlja po njoj, a onda durga procedura otvori isti fajl, pa se tu ne primećuju promene. E, on je to rešio tako što prvo zatvori, pa onda otvori fajl, ali to mu je valjda sporo, pa me je zamolio da pitanje ostavim ovde. Hvala unapred Pozdrav, Uroš
clipper.590 fric,
> pitanje: Kako se u Clipperu radi fflush u fajl. Naime, on > otvori datoteku, nešto brlja po njoj, a onda durga > procedura otvori isti fajl, pa se tu ne primećuju promene. Prema Clipper 5.0 Vodiču za programere od Ricka Spencea: Operacija osvežava baf. prazni izlazni. za čitanje baf. (flush) COMMIT Da Ne <-- to tebi treba flock() Ne Da GOTO nRecNo Da Da <--- univerzalno rlock() Ne Da SKIP 0 Da Ne UNLOCK Da Ne
clipper.591 nbatocanin,
> Ako sad izbrisem D:\POSAO\PLATE.EXE i ponovo probam, sve > je OK. > > Sve je ovo, naravno, lako resiti, ali zasto se to desava ? Možda nema dovoljno prostora na disku? Ta greška se javlja kod greške pri upisu na disk.
clipper.592 nbatocanin,
> Molim da mi neko objasni kako da napravim rutinu pisanu u > TC++ 2.0 Bojim se, nikako. Ili bar veoma teško.
clipper.593 nbatocanin,
Problem sa ispisivanjem ekrana se javlja kada se pomeri pokazivač sloga u datoteci, a TB objekat to "ne zna". Tada se pri sasvim normalnom ispisivanju sa WHILE !TB:stabilize() ; END DO može desiti da se kursor pomeri na pogrešno mesto. Na primer, pomerili ste pokazivač naredbom GO ili SEEK i sad treba potpuno ispisati ekran. TB sada pokušava da zadrži istu poziciju kursora na ekranu i tako se može desiti da "nedostane" slogova za ispisivanje. Onda se pokazivač na ekranu pozicionira na pogrešan slog. Zato nisam siguran da je ovo rešenje, jer će TB:stable *biti* .T., a kursor neće biti na svom mestu.
clipper.594 dvokshi,
> pitanje: Kako se u Clipperu radi fflush u fajl. Naime, on > otvori datoteku, nešto brlja po njoj, a onda durga > procedura otvori isti fajl, pa se tu ne primećuju promene. > E, on je to rešio tako što prvo zatvori, pa onda otvori > fajl, ali to mu je valjda sporo, pa me je zamolio da > pitanje ostavim ovde. Hvala unapred a zašto jednostavno ne napišeš SELECT fajl iz te druge procedure ?
clipper.595 zkrstic,
>> a zašto jednostavno ne napišeš >> >> SELECT fajl >> >> iz te druge procedure ? Uh, lepo što si se potrudio, al time zaista niŠta nemožeš postići. Dovoljan je jedan maaaaaaali COMMIT Pozdrav, zkr
clipper.596 mandrejevic,
>│ siguran da je ovo resenje, jer ce TB:stable *biti* .T., a >│ kursor nece biti na svom mestu. Logicki gledano ti si sigurno u pravu. Mozda i ne podrazumevamo pod "brljanjem ekrana" istu stvar. Uglavnom meni se nije dopalo to da kada drzim strlicu na gore/dole i setam kroz bazu; posle prvog ispisanog ekrana pocinje program da ispisuje svaki drugi red (imam ukljuceno ubrzanje tastature preko mode). Po ubacivanju jedne if-end sekvence dobijem taman toliko usporenje da se ovo vise ne desava. Inace seek radim u privremenoj bazi (_temp) koju kopiram u radnu (_work) i samo nju TBrowse-iram. select _temp index on &cKljuc to _temp set filter to ... seek dDatum1 copy to _work rest for &(cKljuc) <= dDatum2 Probao sam razne TBWHILE programe i nijedan mi se nije dopao.
clipper.597 mbakovic,
Ú Kako se u CLIPPER-u može najbrže rešiti problem indeksiranja dela baze koji ispunjava neki uslov . U programima tipa dBASE (dBASE III+ ,FOX ...) ovaj problem se jednostavno rešava posta- vljanjem uslova FOR u liniju za indeksiranje : INDEX ON <key> FOR <uslov> TO <ime>... U dBASE IV stvari su nešto drugačije ali u principu se rešavaju slično korišćenjem multi indexa . Koji bi način omogućio da se u CLIPPER-u dođe do istih rezultata sa podjednakom efikasnošću ? HHHHHÚ
clipper.598 dpaun,
Za Clipper početnike ... Našao sam se pred problemom da iz jedne GET-READ procedure "izađem" i preko WHEN-a preuzmem određene podatke sa tastature /kao kriterijum za pretraživanje pomoćne baze iz koje se podaci prenose u GET varijablu./ Da u novoj proceduri upotrebim opet get-read nije išlo /neće Clipper/, onda sam "iz malog mozga" izvuko Accept i stvar je proradila! Sledeći zahtev - da se sve to desi na određenom mestu na ekranu rešio sam ovako: č x,y Accept "poruka" to var Za Clipper naprednjake ... Ne znam da li je ovo moglo i drugačije, a takođe ne znam kako da polje var "obojim"! Za Clipper i otadžbinu(v3.0)! dPaun
clipper.599 kanda,
>> Našao sam se pred problemom da iz jedne GET-READ procedure "izađem" i >> preko WHEN-a preuzmem određene podatke sa tastature /kao kriterijum >> za pretraživanje pomoćne baze iz koje se podaci prenose u GET >> varijablu./ Da u novoj proceduri upotrebim opet get-read nije išlo >> /neće Clipper/, onda sam "iz malog mozga" izvuko Accept i stvar je >> proradila! Sledeći zahtev - da se sve to desi na određenom mestu na >> ekranu rešio sam ovako: >> >> č x,y >> Accept "poruka" to var Nema problema da 'gnezdis' GET..READ, samo treba da imas u vidu da ove komande rade sa nizom koji se zove GetList. Pa, ako zelis da u okviru npr. WHEN funkcije imas novi GET..READ, ti na njenom pocetku stavi LOCAL GetList := {} ili PRIVATE GetList := {}.
clipper.600 ndragan,
/ slično korišćenjem multi indexa . Koji bi način omogućio da se Pročitaj poruke iz decembra - marta... raspravljali smo dosta o ovome.
clipper.601 dvokshi,
> Problem sa ispisivanjem ekrana se javlja kada se pomeri > pokazivač sloga u datoteci, a TB objekat to "ne zna". Tada > se pri sasvim normalnom ispisivanju sa > > WHILE !TB:stabilize() ; END DO > > može desiti da se kursor pomeri na pogrešno mesto. Na > primer, pomerili ste pokazivač naredbom GO ili SEEK i sad > treba potpuno ispisati ekran. TB sada pokušava da zadrži > istu poziciju kursora na Ja sam ovaj problem rešio ovako : seek ključ o:rowpos = 1 o:configure() o:stable = .f. Kad dolazi do petlje WHILE !o:stable ; o:stabilize() ; enddo TBrowse pomeri kursor na prvi red i osvežava ekran. Kursor ostaje na slogu kojeg je pronašao naredba SEEK. Pozdrav, dv
clipper.602 bbosko,
Pre nekog vremena sam dobio Flipper programski paket ali njegov NG neradi pa bi zamolio nekog da mi ga posalje na MAIL ili preko Konf Unapred Hvala BBOSKOVIC
clipper.603 dpaun,
>> Nema problema da 'gnezdis' GET..READ, samo treba da imas u vidu >> da ove komande rade sa nizom koji se zove GetList. Proradilo pa mi se usladilo! Hvala. dPaun
clipper.604 nbatocanin,
Ovako nešto sam i ja koristio, pa sam kasnije ipak prešao na proceduru Fresh (ideju za nju sam preuzeo iz TBDemo). Svestan sam da nije savrseno resenje, ali za sad radi. žini mi se da sigurno postoji neko bolje i univerzalnije rešenje, samo ga treba naći.
clipper.605 kanda,
Evo jednog dodatka za tbrowse. Cilj ove funkcije je da se, promenom mesta aktivne linije na ekranu, postigne da je ekran sto bolje popunjen. Ideja je da se, pozivanjem o : SkipBlock() utvrdi broj slogova iznad i ispod aktivnog ; zatim se vrsi korekcija o : RowPos. Pozvati posle promena u bazi (ili sta se vec prikazuje), dakle posle menjanja, brisanja, dodavanja, trazenja po kljucu itd. Pri sledecoj stabilizaciji, sve bi trebalo (bar sam ja to tako nameravao ;) da se pojavi na svom mestu. Nazalost, ova funkcija primetno usporava rad. PROCEDURE tbFresh(o) LOCAL nRC := o : RowCount, nRP := o : RowPos, nU, nD // Ispod aktivne linije, na ekranu ima mesta za jos nRC - nRP slogova. // Pokusavamo da skocimo na zadnji od njih. nD := Eval(o : SkipBlock, nRC - nRP) // Sada smo na zadnjem slogu koji ce biti prikazan. On bi trebao // da bude u zadnjem redu na ekranu. Znaci, iznad njega nam treba // nRC - 1 slogova da bi ekran bio popunjen. Idemo na prvi. nU := Eval(o : SkipBlock, -(nRC - 1)) // Sada smo na prvom slogu koji ce biti prikazan. // Vracamo se na aktivni slog. Stvarno je preskoceno nU + nD slogova. // Sada isto toliko, ali u suprotnom smeru. Eval(o : SkipBlock, -(nU + nD)) // Prvi slog na ekranu je od aktivnog udaljen -(nU + nD) mesta. // Znaci, aktivni slog je u 1 - (nU + nD) .tom redu. o : RowPos := 1 - (nU + nD) // Ovo i jeste svrha celog ovog skakutanja o : Configure() o : RefreshAll() RETURN
clipper.606 zkrstic,
Ajd' da kukam :)) Pojavljuje mi se, dosta često, nakon kompajliranja i linkovanja nešto čudno :)) Kad lepo napravim .EXE, pokušam da ga startujem dobijem omanju porukicu, ružne sadržine ;) error est0001: Illegal format in loadable file Na žalost, takve poruke nema ni u NG-u niti bilo gde u knjigama koje sam pregledao. Da stvar bude smešnija, isti taj EXE fajl, ponekad posle nekoliko bezuspešnih pokušaja uspe da se startuje :) Da napomenem, program i ne stigne da se startuje. A kad ga startujem sa CLD <ime_programa.EXE> - on radi :) Hmmm, ko li je ovde lud :))))) Ima'l ko kakvu ideju? Pozdrav, Zkr
clipper.607 djoskovski,
Za majstore Clipper - a U tabelarnom prikazu hocu da umam scroll - bar preko celog ekrana(tabele) u principu ne mora scroll-bar moze i dru- ga boja, ali bez posebnog skipbloka odnosno funkcije koja emuli- ra skipblock, isto tako ne zelim da sva obelezja deklarisem u jed- noj klasi tbcolumn, odnosno prljavi trikovi me ne zanimaju. Znaci hocu scroll-bar preko vise TBCOLUMN objekta, dovoljna je samo ideja, za uzvrat poklanjam program u CLIPPERU SVIMA! o kom programu je rec znace se 27.07.1992 kad se vratim kuci u Skopje, inece se momentalno nalazim u Oxridu.
clipper.608 tuci,
Clipperaši pomagajte... Kako da nateram SEEK da radi na numeričkim poljima ? U starom clipperu sve radi kako treba, a u ovom novom (5.01) nemože da pronađe ni jedan podatak. Primer: Polje broj je u bazi definisano kao N 5 0. USE Baza INDEX ON broj TO num br:=1 č 1,1 SAY "Broj: " GET br SEEK br ? IF(FOUND(),"Broj je pronadjen","Broj nije pronadjen") Pogadjate, rezultat je uvek: "Broj nije pronadjen". Zašto ? Pozdrav, Zlatko
clipper.609 toma,
=> USE Baza => INDEX ON broj TO num Ovo bi trebalo da radi: use baza && Ovo radis samo kad dodje index on broj to num && do nasilnog prekida, reindex && ili ako inicijalizuješ datoteku - use && - onda bez reindex. .... use baza index num && Ovako bi trebalo da otvaraš datoteku .... && ako vec postoji sa indexom. seek n .... Nadam se da će da proradi, inače kod mene sve radi ok. pozdrav.
clipper.610 charlie,
██ Kako da nateram SEEK da radi na numeričkim poljima ? U starom clipperu sve ██ radi kako treba, a u ovom novom (5.01) nemože da pronađe ni jedan podatak. Neznam zašto kod tebe ne radi, ali kod mene je broj pronađen. BTW Nedostaje ti READ nakon GET-a pozdrav, charlie
clipper.611 nbatocanin,
Izbaci DOS=HIGH direktivu iz CONFIG.SYS.
clipper.612 nbatocanin,
Vec je bilo ovde, može ovako: SetColor(Invert) // Ispisi celu liniju SetColor(Normal) Ch := InKey(0) // Ispisi celu liniju
clipper.613 tuci,
¸> BTW Nedostaje ti READ nakon GET-a Znam, štamparska greška :)) Problem je bio u indeksnim fajlovima. Na pocetku programa je stajalo: USE baza1 index ind1,ind2 REINDEX USE baza2 index ind1,ind2,ind3 REINDEX ... Indeksni fajlovi (jedan deo fajla) su izgledali otprilike ovako: ! 00001199 ! 00002199 ! 00003199 ! 00004199 ! 00005199 Na mestima uzvičnika nalaze se ASCII kodovi ispod 32, a 199 je višak koji zbunjuje Clipper 5.01 a nesmeta Clipperu Summer '87, jer program preveden verzijom S'87 radi i sa ovakvim indeksnim fajlom. Zbog toga sam najpre posumnjao u 5.01 a ne u fajlove :( Posle prepravke programa na početku stoji ovako: USE baza1 INDEX ON exp1 TO ind1 INDEX ON exp2 TO ind2 ... Indexni fajlovi izgledaju ovako: ! 00001 ! 00002 ! 00003 ! 00004 ! 00005 Program radi bez problema problema. žudi me da komanda REINDEX ne uklanja magični broj 199 koji se uz pomoc magije pojavio u indeksnom fajlu. Hvala tomi i charliju na pomoći ! Pozdrav, Zlatko ;)
clipper.614 ndragan,
/ č 1,1 SAY "Broj: " GET br / SEEK br / ? IF(FOUND(),"Broj je pronadjen","Broj nije pronadjen") Đe ti Read? Bez brige, u nekoliko mojih programa stoji komentar tipa "konju jedan, ovo ti je već deseti zaboravljeni Read!". Zato smo napisali rutinu za unos, kod koje su prompt, imena polja, pikčeri i validi strpani u parametre, a ona garantovano _ima_Read_. Bue_ Ndragan
clipper.615 toma,
PAčNJA CLIPPER-aši !!!! Još jedna razlika izmedju S87 i 5.01: ALLTRIM() ne radi isto. Summer 87 a=chr(9)+"toma" a=alltrim(a) a je još uvek chr(9)+"toma" 5.01 a je posle operacije samo "toma" Moguće je da postoje još neki karakteri koje ALLTRIM skida, kod mene je bio ovaj slučaj. ▄▄▄▄▄ ▄▄▄ ▄ ▄ ▄▄▄ █ █ █ █▀▄▀█ █▄▄▄█ ▀ ▀▀▀ ▀ ▀ ▀ ▀
clipper.616 jtitov,
> Summer 87 > a=chr(9)+"toma" > a=alltrim(a) > a je jos uvek chr(9)+"toma" > > 5.01 > a je posle operacije samo "toma" FoxPro 2.0 isto ne skida chr(9) (tabulator). Ma taj clipan 5.01 mi se nikada nije svidjao... '87 je prava stvar, ko voli clipper...
clipper.617 ndragan,
/ USE baza2 index ind1,ind2,ind3 / REINDEX Ovo nikako ne preporučujem; štogod da pukne na disku, .dbf se bekapira i može da se vrati, a indekse nema smisla čuvati jer se uvek mogu napraviti novi; usput, može neko i sa PCT ili Norton-nečim da pročačka baze; u slučaju da strada zaglavlje indeksnog fajla, neće ni raditi. / USE baza1 / INDEX ON exp1 TO ind1 Ali zato ovome ne smeta ništa čak i ako indeks ne postoji. Jedino u mrežnoj okolini preporučujem zaključavanje baze (use ... excl) da se ne bi desilo da indeks ind1 bude zaključan - stvar onda puca. BTW, pričam ovo iz Foksa, ali indeks je indeks; samo Index For <expr> je foksov indeks :) Uz to, pade mi na um da neko proveri da li u Kliperu radi ovo: _=4 __=_+_ž_ && ž kao stepenovanje ?__ Ako ispiše 260.000, svaka čas. Bue_ Ndragan
clipper.618 charlie,
█ Uz to, pade mi na um da neko proveri da li u Kliperu radi ovo: █ █ _=4 █ __=_+_ž_ && ž kao stepenovanje █ ?__ █ █ Ako ispiše 260.000, svaka čas. A šta si ti mislio da ispiše?
clipper.619 ndragan,
/ a je još uvek chr(9)+"toma" U foksprou 2.00 i 1.02 ne skida tab, upravo proverih.
clipper.620 nbatocanin,
> FoxPro 2.0 isto ne skida chr(9) (tabulator). Ma taj clipan > 5.01 mi se nikada nije svidjao... '87 je prava stvar, ko > voli clipper... Bre ljudi, što ste takvi! Na osnovu takve bezvezarije ocenjujete nešto tako dobro kao što je Cl 5.0 - stvarno komunistički! Uostalom, očigledno da je skidanje taba stavljeno namerno - više ima nego što nema logike za to. A ako vam baš treba, napišite novi Trim. Ne slažem se da je S'87 bio dobar: po meni nije loš, ali je daleko od 5.0. Ako biste kritikovali Cl 5.0, morate korektno uzeti u obzir i bar sledeće dobre osobine: 1) Pretprocesor u 5.0 je jedan od najmoćnijih koji sam video. 2) Izuzetan jezik - objekti, naročito kod blokovi, itd. 3) Odlično rešen sistem za interakciju - naročito TBrowse i Get. 4) Otvorena arhitektura - možete ga promeniti kako želite, počev od jezika pa do sistema za pristup DBF datoteka. Uostalom, ovo verovatno još samo C guta: #define _ #define _ _l ? _ __ i _ ___ TO _ ____ 1 _ _____ 100 _ l__ := _ ll + _ l_ FOR l_ __ l__ ____ ___ _____ _ _l_ NEXT _l [_____] ll [_____] _l_ QUIT Da samo napomenem, korišćenjem #translate direktiva može se napraviti još veći rusvaj. Naravno, ne mislim da ovo ičemu služi. Al' je interesantno, jel da?
clipper.621 ndragan,
/ A šta si ti mislio da ispiše? Pa, 260.000 :). Palo mi na um kad sam na disku našao one blesave C listinge, pa da probam - kad ono, radi u foksu. žisto sam mislio da neko vidi da li je isto i u kliperu. U dibejzu, naprimer, ne radi ni prva linija. Ovde sam umešao i nešto ličnog afiniteta - koliko traje da se stvar proveri u foksu, a koliko u kliperu. Za foks tvrdim da može za manje od 20 sekundi, ko ume dovoljno brzo da kuca.
clipper.622 toma,
■■>> nešto tako dobro kao što je Cl 5.0 - stvarno komunistički! Uostalom, ■■>> očigledno da je skidanje taba stavljeno namerno - više ima nego što ■■>> nema logike za to. A ako vam baš treba, napišite novi Trim. Tako je !!! Ja sam lepo napisao upozorenje jer sam ja 15 min. bio glavu zašto program ne radi kako je radio i nista više. Oni koji ne vole clipper neka ga ne vole al' neka ga ne blate ! Jel jasno ?
clipper.623 ndragan,
/ očigledno da je skidanje taba stavljeno namerno - više ima nego što / nema logike za to. A ako vam baš treba, napišite novi Trim. Što jes jes - tab spada u bele znake (white space) i treba ga trimovati; ono što ovde nervira je što od verzije do verzije radi sad ovako sad onako. Još ako nije dokumentovano, dođeš u situaciju da se pitaš 'Bug or Feature' kad prebaciš stari program u novu verziju i nađeš novu nekompatibilnost. BTW, otkud mu tab u stringu koji treba trimovati? Tekst filteriška pisana u kliperu?
clipper.624 mackb,
Da li je neko pokusao da pise aplikacije u clipper-u,tako da se sve poruke korisniku pisu na ruskom u ruskoj cirilici? Veoma sam zainteresovan da diskutujem na tu temu.
clipper.625 ppekovic,
>> Da li je neko pokusao da pise aplikacije u clipper-u,tako da se sve poruke >> korisniku pisu na ruskom u ruskoj cirilici? Veoma sam zainteresovan da >> diskutujem na tu temu. Kod ovog problema najmanje je stvar u clipper-u, tj. vezano je za clipper u toliko što clipper nemože (čitaj: formalno može ali praktično teško) da radi u grafičkom modu pa da na taj način rešiš definiciju yu slova. Osnovni je problem kako deinisati ruska slova. Na VGA to nije problem, ali šta ćeš sa hercules-om. Jedino možda da ugradiš u EPROM rusku ćirilicu. Sve u svemu, želim ti puno sreće i čvrstih živaca u ovome. Paya
clipper.626 ciki,
Imam jedan mali problem koji mi ide na zivce. Skinuo sam sa nekog BBS-a CLIPINT.ZIP fajl, (za neo bavestene poziv INT fun. iz clipper-a.) Pokusao sam da compa. taj fajl ali jednostavno mi prijavi gresku ,tj. nekoliko njih i neradi!!!! Pomagajte ! Ciki
clipper.627 ppekovic,
>> Skinuo sam sa nekog BBS-a CLIPINT.ZIP fajl, (za neo >> bavestene poziv INT fun. iz clipper-a.) Pokusao sam >> da compa. taj fajl ali jednostavno mi prijavi gresku >> ,tj. nekoliko njih i neradi!!!! A šta ti konkretno ne radi? U arhivi postoje dva source-a, jedan ASM a drugi PRG koji je samo demonstracija upotrebe INTERRUPT funkcije. Koji od njih ne radi, tj. sa kojim verzijama assembler-a, tj. clipper-a si ih prevodio? Paya P.S. Taj neki BBS je možda i Sezam jer se clipint.zip arhiva nalazi u sezamovom /IBMPC/PROGRAM dir-u.
clipper.628 ciki,
Sezam nije. Tacno , postoje 2 source programa, ali isto tako po- stoje i 2 OBJ fajla koja sam pokusam da linkujem sa TLINK 3.01 (Clipper Summer '87). Inace imam MASM 6.0, ali nisam pokusao da kompa. dobijene source kodove. Konkretno prilikom linkovanja OBJ kodova prijavljuje 2 greske i to je 1 nesto uvezi STACK-a ili zahteva za memorijom 64KB, a 2. gresku sam zaboravio. Hvala ti na paznji, i ako imas vremena pokusaj da mi malo objasnis kako bih to mogao da prevazidjem. P.S. Ta biblioteka mi je potrebna za PASSWORD-e , jer C ne znam PASCAL znam ali (veza Clipper-Pascal!) Puno pozdrava od Cikija
clipper.629 ppekovic,
>> Konkretno prilikom linkovanja OBJ kodova prijavljuje >> 2 greske i to je 1 nesto uvezi STACK-a ili zahteva >> za memorijom 64KB, a 2. gresku sam zaboravio. Dok sam radio sa clipper-om '87 koristio sam tlink 1.1, sa tlink-om nemam nikakvog iskustva osim 1.1 verzije. U vezi greške vezane za stack, pogledaj /stack ili sličnu opciju tvog linkera i povećaj količinu memorije koju odvajaš za stack. Odredi je širokopopularnom "šac" metodom. Za drugu grešku ne mogu ništa da ti kažem jer si je zaboravio ;))). Najbolje bi bilo da nam otkucaš kompletnu poruku za obe greške, kao i komandnu liniju kad linkuješ, tj. koje parametre staviš pa da vidimo. Paya P.S. Predji na clipper 5.01. Uglavnom je komatibilan sa '87 verzijom ai je zaista superioran u odnosu na nju.
clipper.630 ciki,
Ovako greske koje se javljaju su: Error: group DGROUP exceeds 64K Error: InvalidŰN initial stack offset Inace tek sam poceo sa´k 5.01,(hvala na preporuci), Sto se linkera tice imam PL,RTL,TL,LINK, pa ce 1 od njih proci!!! Inace ocekuj skoro u tvom mail-u poduzu poruku ;))))))))) o cliper-u i radu sa mrezama, ako imas iskustvo. Hvala unapred. Ciki!
clipper.631 gstojkovic,
Hitno mi je potreban pomoc oko jednog problema pa molim iskusne Clipperase da mi pomognu. Naime moj problem se sastoji u tome da li postoji mogucnost da posle naredbe SET FILTER koristim naredbe SEEK ili LOCATE za pronalazenje drugog kljuca na osnovu predhodnih maskiranih zapisa pomocu SETT FILTER uslova. KKKKKKKkomande. Znaci imam dva kljuca od kojih prvi izdvajam pomocu SET FILTER komande a zatim trazim dugi kljuc u okviru izdvojenih. Neznam koliko sam bio jasan ali problem me dugo muci i nevidim sam resenje. Unapred zahvalan na pomoci. S'postovanjem GStojkovic...
clipper.632 ciki,
I sam sam imao slican problem,ne isti ali slican, pa sam ga resio na ovaj nacin.Pre pozivanja tog dela pro grama koristio sam COPY FILE i napravio kopiju baze sa kojom sam radio,zatim selektovao i radio sa dve baze. Na kraju jedno ERASE resava stvar. Nije nista elegantno,ali vazno je da radi. Gubis na brzini malo samo prilikom COPY FILE. Zdravo!
clipper.633 ciki,
NE COPY FILE vec COPY za zadat║i uslov.Pogledaj literaturu literaturu.
clipper.634 ppekovic,
>> Ovako greske koje se javljaju su: >> Error: group DGROUP exceeds 64K >> Error: InvalidŰN initial stack offset Pa ove greške pokazuju da ima nekih problema sa memorijskim modelima, ali mi je to vrlo čudno jer clipper radi isključivo u large modelu i ne mogu da verujem da je tip koji je pravio clipint pogrešio pa koristio small model. Mislim da bi najbolje bilo da probaš sa rtlink-om, pa javi rezultate. >> Inace ocekuj skoro u tvom mail-u poduzu poruku >> ;))))))))) o cliper-u i radu sa mrezama, ako imas >> iskustvo. Nemoj u mail, ostavi pitanja ovde verovatno će zanimati još nekog. Paya
clipper.635 ppekovic,
>> da mi pomognu. Naime moj problem se sastoji u tome da li >> postoji mogucnost da posle naredbe SET FILTER koristim >> naredbe SEEK ili LOCATE za pronalazenje drugog kljuca >> na osnovu predhodnih maski Koliko se sećam, seek ignoriše filter ali ga zato locate poštuje. Neznam samo koliko ti je važna brzina i kolika je baza, jer se može desiti da locate bude spor, jer sekvencijalno čita sve slogove dok ne naidje na pravi. Takodje neznam ni kakav je konkretan problem, ali ja sam set filter koristio sam kod tbrowse-a i dbedit-a, a za ostala filtriranja i pretraživanja sam koristio seek i pitanje, dakle nadjes sa seek slog po prvom ključu pa onda sa običnim if ispitaš da i zadovoljava i drugi. Paya
clipper.636 bulaja,
│da li postoji mogucnost da posle naredbe SET FILTER koristim naredbe │SEEK ili LOCATE za pronalazenje drugog kljuca na osnovu predhodnih │maskiranih zapisa pomocu SET FILTER uslova. └─── I SEEK i LOCATE rade Ok, upravo sam proverio. Ali svejedno, ako hoces da radis npr. FILTER + SEEK, ipak je mnogo bolje (brze) da uopste ne postavljas filter vec da radis prvo SEEK pa onda ispituj uslov na pronadjenom slogu (ili vise njih). Evo primera kako to da uradis ako vec imas aktivan filter: // ---------------- // cF := dbfilter() // pokupi uslov filtera set filter to // iskljuci fltr seek xx // xx je kljuc koji se trazi u indexu if found() if &cF // pronadjen prvi slog po seek+if uslovu // pa ovde ubaci sta treba da se radi sa slogom, npr. prikaz endif do while .T. skip if ! ( xx == &indexkey(0)) // da li slogovi i dalje zadovoljavaju seek uslov? exit endif if ! &cF // ostali slogovi po seek+if // i sta vec treba da se radi sa njima endif enddo else // nema slogova koji zadovoljavaju endif set filter to &cF // ponovo aktiviraj filter go top // ---------------- // Bulaja
clipper.637 d.petrovic,
Ne mogu da smestim NANFOR.LIB u PLL biblioteku zbog zakrpa, pa mi treba LIB.EXE, slican program koji za isto to sluzi ili savet kako to da uradim.
clipper.638 nbatocanin,
Znam čoveka koji je pisao program za automatsku konverziju Clipper programa YU -> RUSKI. Poslaću ti njegov telefon mailom.
clipper.639 neman,
Hi Novi sam korisnik Sezama i čitanjem SVIH prethodnih poruka nisam primetio rešenje svog problema ! Problem se manifestuje na sledeći način: Clipper aplikacija je imala problem u pristupu jednom slogu u bazi. Analizom datoteke kolega i ja utvrdili smo da se u slogu na mestu gde se nalazi znak * ili blanko koji označava da li je slog brisan ili nije našao se znak 1Ah - kraj datoteke. Pošto je kod zvezdice 2Ah mislio sam da je došlo do pomeranja jedinice u binarnom zapisu. Kada se to desilo u roku od par dana kod više korisnika, a kod jednog i više puta prestao sam da optužujem Marfija. Problem se javio kako na Novell Netware 2.15 , tako i na običnom PC-ju pod MS DOS 4.01. SCAN 93 nije otkrio ništa. Interesantno je da DBASE i CLIPPER 87 i 5.01 ne tretiraju podjednako pojavu ovog znaka na pogrešnom mestu. Pri sekvencijalnom prolasku kroz bazu u DBASE ( BROWSE ili SKIP nnn) kaže da je naišao na kraj datoteke (EOF() == .T.). Npr. stigao sam do 545 sloga i ni makac dalje. Kada kažem GOTO 547 pozicioniranje bude uspešno i mogu da nastavim da se krećem po datoteci. Naravno, slog 546 je zabrljan na napred naveden način. Sa druge strane, CLIPPER ne obraća pažnju na pogrešan znak na mestu oznake brisanja. DBU sasvim normalno radi BROWSE stim što se za slog 546 javlja oznaka <deleted>. Međutim, izgleda da ima problema pri drugim operacijama - nisam vršio neka druga testiranja. Očigledno je da DBASE i CLIPPER različito sadržaj utvrđuju da li je slog brisan ili nije, a i da sam Clipper različitu tretira ovu situaciju. Nisam probao da li ima problema sa pojavom drugih znakova na tom mestu. Jednostavan način za utvrđivanje postojanja ovog problema je da u DBASE pustite program: USE baza SKIP RECCOUNT()+5 SKIP -1 IF ,NOT. (RECNO() = RECCOUNT()) ? " Problem " ENDIF Moram da pomenem da na ovo nisam naišao do sada. Problem sam otklonio upotrebom DISKEDIT-a. Eventualno bi mogao da bude i neki programčić za filtriranje baze, ali ovo treba SPREžITI a ne LEžITI. Pomozite ! NeMan
clipper.640 paris,
Moli se korisnik Graficke biblioteke za CLIPPER koji je uspesno koristi da se javi radi detaljnijeg opisa cina prevodjenja koji me se cini neostvarivim. Probao sam sve varijante i ni jedna ne funkcionise. POzdrav PARIS
clipper.641 asrdjan,
Imam jedan problem sa bazama podataka u clipperu.Naime pre izvesnog vremena sam napisao program u kojem se prvi put pojavila greska o kojoj govorim.Dakle, program je trebao da upita operatera za sifru odredjenog clana u bazi i da na osnovu toga pronadje i otvori slog za tog clana ili da javi poruku da clan sa tom sifrom ne postoji u bazi.Ova procedura se ponavljala na dva mesta u programu i to u unosu podataka i u pregledu podataka(normalno uz neke izmene). E sad,sve do trenutka kada je trebalo da program javi,da li odredjeni clan postoji ili ne u bazi,je bilo u redu,medjutim pri pretragi je program uvek javljao da odredjeni clan NE postoji u bazi i to cak i onda kada bi prethodno clan bio upisan(istom procedurom) u bazu podataka.Nakon nekih izmena izgledalo je da je program konacno poceo normalno da radi,ali onda se ispostavilo da program i dalje za prvog unetog clana javlja poruku da ne postoji u bazi,kao da nije unet.Dakle ukoliko neko zna u cemu je stvar neka mi ostavi resenje bilo na MAIL SEND Asrdjan bilo u ovoj konferenciji.I jos da napomenem da sam nortonom pregledao datoteke koje bi program formirao i u njima je naravno bio upisan prvi clan.Uz ovu poruku je prikacena i datoteka APP.ZIP koja sadrzi deo listinga aplikacije kod kojeg je zapelo zajedno sa startnim modulom.Naravno da od opcija u meniju radi samo prva posto je kod nje i zapelo.Ostatak programa nisam poslao jer nije ni potreban.Program je radjen u verziji Summer '87 i za njegovo prevodjenje i startovanje potrebne su jos i sledece datoteke: CLIPPER.EXE CLIPPER.LIB EXTEND.LIB TLINK.EXE Prilikom prevodjenja dovoljno je startovati datoteku STARTUJ.BAT i sve ce teci automatski.Resenje kao i komentare i sugestije posaljite na,kao sto sam vec rekao,MAIL SEND Asrdjan ili kao poruku u ovoj konferenciji. Pozdrav Asrdjan P.S. Izvinite zbog malih neurednosti u programu posto je sve radjeno na brzinu. P.P.S. Evo malog uputstva kako i gde se javlja greska.Dakle posto sve uradite kako treba i startujete program izaberite opciju 'Stalni podaci'.Zatim izaberite opciju 'Unos stalnih podataka' pa unesite podatke o 2-3 clana.Onda izadjite pa idite u opciju 'Pregled stalnih podataka' i tu trazite korisnika sa sifrom 1.Ako ga program nadje,idite u 'Unos stalnih podataka' pa unesite podatke za jos jednog korisnika.Sad ponovite 'Pregled stalnih podataka' pa zatim upisite za sifru 1 i program ce javiti da trazeni korisnik ne postoji u bazi. app.zip
clipper.642 ciki,
Ovako kod mene tvoj prg radi sve Ok ako posle READ u fajlu Pod_ekr1 stavim Append blank a ne gde je bio. A sada evo ti nekoliko dobronamernih saveta: 1. Predji na clipper 5.01 (Pozdrav d.petrovicu) 2. Gde ti je ispravka podataka 3. SKLONI TAJ DOSADNI SAT!!!!!!!!! 4. Pri unosu podataka nemoj zaboraviti da uneses sifru :)) 5. Nabavi neku II knjigu nego Programiranje u Clipper-u od Popovica P.S. Datoteke pregledaj sa DBU
clipper.643 nbatocanin,
Ako vam zatreba da tekst iz nekog tekst-procesora ubacite u DBF datoteku kao memo polje, snimite tekst u "Generic" formatu: tada ostaju samo tabovi i oznake za novi red, a takav format upravo koristi i Clipper. U WP-u je to <Ctrl-F5><Save as><Generic>.
clipper.644 neman,
Tvoj problem je rešen. Sledeći put *nemoj* da direktno prebacuješ programske datoteke. Modifikovanu aplikaciju ti šaljem uz ovu poruku. Pitanje za Sve: Šta je bilo sa mojim problemom :( ? P.S. Da li postoji grupa za CLIPPER ? IF grupa _make_me_:))( :( ) END IF Pozdrav, NeMan app_isp.zip
clipper.645 dejanr,
>> P.S. Da li postoji grupa za CLIPPER ? Šta će grupa kad ima temu u konferenciji?
clipper.646 andrejl,
>│ Oni koji ne vole clipper neka ga ne vole al' neka ga ne >│ blate ! >│ >│ Jel jasno ? Nemo' da mi neko dira Clipper ! ;) bye, andrejl
clipper.647 neman,
>>> P.S. Da li postoji grupa za CLIPPER ? > > Šta će grupa kad ima temu u konferenciji? žitajući poruke iz EXTRA:SF stekao sam utisak da grupa SF postoji. Ko pita ...
clipper.648 ciki,
Evo primera za lep Crsr Prilikom unosa Get-a. Moze li neko krace (mlogo mi je vazno) #include"SetCurs.ch" Set key 22 to ja Mi:=space(10) cls č 1,1 get mi read quit procedure ja if setcursor()=SC_INSERT setcursor(SC_NORMAL) ReadInsert(.f.) else setcursor(SC_INSERT) Readinsert(.t.) endif P.S. Vrlo mi je vaznoako moze krace ;) Ciki!!
clipper.649 d.petrovic,
>Moze li neko krace (mlogo mi je vazno)... Probaj da sve stavis u jedan red? :))))))))))) Hi!
clipper.650 ilazarevic,
█ žitajući poruke iz EXTRA:SF stekao sam utisak da grupa SF postoji. █ Ko pita ... Postoje dve sf grupe. Razlog njihovog postojanja je to što u vreme osnivanja nije postojala tema, a posle nas je mrzelo da ih ukidamo...
clipper.651 ciki,
Opet ja! Sada sa jednim problemom. Ocu da mi prg. koji vam saljem lepo pozove I meni, pa tek onda kada pozovem opciju za stampanje podataka da mi izda obavestenje o tome da li je stampac prikljucen ili ne! P.S. Napominjem da je lepo radilo dok nisam ubacio #include"Print.prg" Saljem vam listinge.Onaj ko mi pomogne ima pice cim ga vidim. VRLO JE HITNOOOOOOOO!!! Ciki zasto.arj
clipper.652 mandrejevic,
set key K_INS to Tog_Ins ///////////// // Tog_ins // ///////////// function Tog_ins() if SetCursor() != 0 ReadInsert(.not. ReadInsert()) SetCursor(Iif(ReadInsert(), 2, 1)) end return nil
clipper.653 d.petrovic,
#include je pretprocesorska direktiva, sto znaci da je print.prg ubacen u tvoj program da se izvrsi pre menija. Inace, sa #include se pozivaju heder fajlovi, a ne *.prg, tako da ni taj red programa nema mnogo smisla. Ako pogledas bilo koji *.ch fajl videces da se uglavnom sastoji od definicija, sa samim programom nemaju bas puno veze. 1.PRINT.PRG posebno prevedi i smesti u svoj fajl funkcija (npr. FUNKCIJE.OBJ) 2.Kasnije to zajedno linkuj i... Ako ne mozes da se brzo priviknes na clipper 5.01, znaj da je gomilu naredbi pokupio iz C-a. npr. naredba strana++ je zaista efikasnija od strana:=strana+1 jer kompajleru saopstava da na promenljivu treba primeniti masinsku naredbu INC, a ne sabirati ga sa konstantom (sta je brze :))) ) P.S. Prelistaj malo to sto imas u clipper-ovim direktorijumima, obrati paznju na *.rmk, korisni su i jednostavni. Aaaaaaaj zdra'o !
clipper.654 dpaun,
Tri molbice za Clipper braću: 1. Bavi(o) li se neko Sycerom? Kakva su iskustva? 2. Osoba iz prethodnog stava nek mi pošlje na mail kompletan spisak fajlova koje sadrži ovaj paket. 3. Imam "Moj mikro" u kome je kratak prikaz rada sa Sycer-om, ali mi se čini da je nešto bilo i u "Računarima". Pamti li neko koji je to bio broj? Zahvalan++, dPaun
clipper.655 ndragan,
/ Nemo' da mi neko dira Clipper ! ;) Dođi malo da vidiš šta radi fokspro. Za plakanje preporučujem levo rame.
clipper.656 vitez.koja,
#=> Dođi malo da vidiš šta radi fokspro. Za plakanje #=> preporučujem levo rame.
clipper.657 ciki,
Ovako. Prvo da ti se zahvalim sto si pogledao moj "problem". Resio sam ga i sam na slican nacin odmah po slanju onog zahteva za pomoc. Inace sto se tice #incl. direktive mislim da gresis iz 2 nepobitna razloga. 1. U ovo conf sam negde procitao da iskusni clipper programer savetuje da se koristi #inc umesto Do pa i sa prg. fajlovima. 2. Zaviri u bilo koju knjigu (BIBLIJA za CLIPPER 5.0 recimo,..) pa ces videti da #inc.sa prg nije neko cudo! P.S. Ipak hvala ti. P.P.S. Zahvaljujem se mandrejevic-u za fun(stvarno moze krace, ali nisam na to mislio). Pozdrav!
clipper.658 jtitov,
>> / Nemo' da mi neko dira Clipper ! ;) > > Dodi malo da vidis sta radi fokspro. Za plakanje > preporucujem levo rame. Bas tako. Clipper je smoke of pussy za foxpro.
clipper.659 asrdjan,
Hvala svima na odgovorima.
clipper.660 bulaja,
│1. U ovo conf sam negde procitao da iskusni clipper programer │ savetuje da se koristi #inc umesto Do pa i sa prg. fajlovima. └─── Pa sad, zavisi sta je u .prg, ali u principu (tj. vecini slucajeva) #include ne treba tako koristiti. Ako u tim .prg imas neke odvojene procedure ili funkcije (kao sto je slucaj sa tvojim print.prg), uvek je mnogo bolje prevoditi ih odvojeno i posle ulinkovati. DO nemas uopste potrebe da koristis, vec ili pravi .bat file za kompajliranje svih modula, ili (sto je najbolje) koristi make.
clipper.661 nbatocanin,
Kad već cepidlačimo: FUNC Tog_Ins RETURN IIF (SetCursor() != 0, ; SetCursor(IIF(ReadInsert(!ReadInsert()), 2, 1)), )
clipper.662 ciki,
Vako. Ako si procitao moj odgovor d.petroviv-u,mogao si zakljuciti da sam na taj nacin i resio problem praveci BAT fajl(ali ipak nije to to.) Sto se tice onoga #inc sa prg, zamolio bih te da mi kazes kada se ova kombinacija koristi! Pozdrav Ciki!
clipper.663 ciki,
Dobro de nemoj se zestiti. Ciki!
clipper.664 bulaja,
│resio problem praveci BAT fajl (ali ipak nije to to.) └─── Ali tako se i dalje svaki put kompajliraju svi moduli. MAKE it! :) │Sto se tice onoga #inc sa prg, zamolio bih te da mi kazes kada se │ova kombinacija koristi! └─── Ja je ne koristim nikad :).
clipper.665 kanda,
>> Kad već cepidlačimo: >> >> >> FUNC Tog_Ins >> RETURN IIF (SetCursor() != 0, ; >> SetCursor(IIF(ReadInsert(!ReadInsert()), 2, 1)), ) >> >> Pa kad vec cepidlacimo... :) SetKey(K_INS, {|| SetCursor(If(ReadInsert(!ReadInsert()),1,2))}) c := Space(8) @ 2,2 GET c READ
clipper.666 kanda,
>> Sto se tice onoga #inc sa prg, zamolio bih te da mi kazes kada se >> ova kombinacija koristi! Koristi se kad hoces da vise od vise .PRG dobijes jedan .OBJ. U istu svrhu moze da posluzi i .CLP datoteka - u nju upises imena .PRG datoteka, onda kazes CLIPPER @ime.CLP, i dobijes JEDNU datoteku ime.OBJ.
clipper.667 yowo,
Pomagajte !!! Kako se ubrzava linkovanje preko .pll i preko .plt fajlova ??? Nesto kod mene ne ide pa ne ide... yowo
clipper.668 dvokshi,
Koristio sam biblioteku oClip.lib iz Sezama da bih deklarisao nove klase u Clipperu. Sve je išlo dobro sa novim klasama, kao i sa klasama koje su nasleđivale neku od novih klasa. Ali kad sam pokušao da deklarišem novu klasu kao naslednik TBrowse klase, počeli su problemi. Naime nova klasa ne nasleđuje ama baš ništa od svog roditelja. Probao sam na dva načina : CLASS MyBrowse FROM TBrowseNew CLASS MyBrowse FROM TBrowseDB ... ali ni u jednom slučaju nisam postigao rezultat. Kad pokušam da u programu koristim neku promenljivu ili metod klase TBrowse uvek dobijam grešku : No exported method / variable Help !!! Unapred zahvalan.
clipper.669 ciki,
Lepo je to u praksi ali u zbilji druga prica!!! Ipak hvala ti za K_INS. Pozdrav Ciki
clipper.670 ciki,
Pa make je strasna stvar za relativno duze aplikacije, ali moju aplikaciju pravim iz nekoliko fajlova koje u toku testiranja programa prevodim svaku ponaosob, tako da mi je dir pun nekih PRAVIX.BAT (X=1,n) programa. Pozdrav Ciki!
clipper.671 jsalai,
> Oni koji ne vole clipper neka ga ne vole al' neka ga ne > blate ! Ovo treba uvesti na SVIM NIVOIMA!!!! Mozda ni rata ne bi bilo.......
clipper.673 d.petrovic,
>Pomagajte !!! >Kako se ubrzava linkovanje preko .pll i preko .plt fajlova ??? >Nesto kod mene ne ide pa ne ide... Ajde? Imao sam slican problem (nikako nije htelo da proradi) pa sam na kraju napravio na jedvite jade jednu biblioteku. Ovo moje malecko iskustvo kaze: 1. Moras imati bar jedan FI pri pravljenju biblioteke (ne mozes samo gotove biblioteke strpati u jednu)! 2. Ako koristis nanfor biblioteku i neku od predefinisanih funkcija ne smes je strpati u *.PLL jer kasnije predefinisane funkcije nece raditi korektno (zbog ovog sam vec trazio ovde da mi neko nabavi LIB.EXE ali nigde dobre duse :)) )! 3. Dodaj odmah u biblioteku i CLD.LIB (cik pogodi zasto? :))) )! Da bi ti sve bilo malo jasnije evo ti jedan moj (trenutno u upotrebi) rmk pa ga malkice analiziraj, izmeni i iskoristi! Ljudi ja jos uvek ne nadjoh neki program za biblioteke :(((((((((( Hi! ----------------------------------------------------------- // // Dex.rmk // Make file za evkn program // // Copyright (c) 1992 Petrovic D. All rights reserved. // .prg.obj: CLIPPER $* /b EVKN.OBJ : EVKN.PRG FUNKCIJE.OBJ: FUNKCIJE.PRG MENU.OBJ: MENU.PRG KONTIRAJ.PRG PROCEDUR.OBJ: PROCEDUR.PRG IZVESTAJ.OBJ: IZVESTAJ.PRG BIBLDEX.PLL : FUNKCIJE.OBJ PROCEDUR.OBJ MENU.OBJ RTLINK/PRELINK OUT BIBLDEX FI MENU,FUNKCIJE,PROCEDUR LIB CLIPPER,EXTEND,CLD EVKN.EXE : EVKN.OBJ IZVESTAJ.OBJ DEX.RMK BIBLDEX.PLL RTLINK/PLL:BIBLDEX FI EVKN,IZVESTAJ,FLOPTST,ORIGIN LIB NANFOR
clipper.674 bdm.,
## Kako se ubrzava linkovanje preko .pll i preko .plt fajlova ??? ## Nesto kod mene ne ide pa ne ide... Ni kod mene Kad hocu biblioteke da prepovezem javlja neke zezalice sa definicijama simbola. Zna li ko resenje? Linkovanje mi traje 40 sekundi a tlink nece da radi kod mene... :( BDM.
clipper.675 ppekovic,
>> 2. Ako koristis nanfor biblioteku i neku od predefinisanih >> funkcija ne smes je strpati u *.PLL jer kasnije predefinisane >> funkcije nece raditi korektno (zbog ovog sam vec trazio >> ovde da mi neko nabavi LIB.EXE ali nigde dobre duse >> :)) )! Ja zaista nisam čuo ni za jedan LIB manager koji je PD ili SW. Ako je neko čuo, ili još bolje ako ima PD/SW LIB manager bilo bi lepo da podeli informaciju/program sa ostalima. Paya
clipper.676 ppekovic,
>> a tlink nece da radi kod mene... :( Sa '87 verzijom su radili tlink 1.0 i 1.1 kao i 3.0 koliko se sećam. Za verziju 5.1 se nije našao bolji (pouzdaniji) linker od rtlink-a (?). Paya
clipper.678 dpaun,
Molim za rešenje u Clp5.01 sledećeg problema: čelim da "pozovem" na ažuriranje grupu izabranih slogova, čiji brojevi nisu sukcesivni. Ja sam to zasad rešio ovako: // (1) BrSlog = 0 č x,y SAY "Broj slogova za izmenu: " GET BrSlog READ // (2) DECL SlogŠ BrSlog Ć // (3) FOR j = 1 TO BrSlog č ROW()+1,y ... GET Broj READ SlogŠ j Ć = Broj NEXT // (4) USE Baza FOR j = 1 TO BrSlog GOTO SlogŠ j Ć // NEXT * Smeta mi korak (3) zbog toga što ne mogu da ispravljam greške koje uočim posle pritiska na ENTER. Kako se (ceo) ovaj problem može drukčije rešiti? Unapred hvala za svaku ideju. dPaun
clipper.679 ciki,
Pa vidis kod mene Tlink 3.01 radi bez problema. Proveri da li si naveo sve biblioteke, i tacan put do njih. Ako ti treba posluacu ti moj BAT-ch fajl za Tlink. Pozdrav Ciki!
clipper.680 bdm.,
## Proveri da li si naveo sve biblioteke, i tacan put do njih. ## Ako ti treba posluacu ti moj BAT-ch fajl za Tlink. Moze. Stos je sto kod stomic-a (a imamo sve isto) radi tlink 4.0 a kod mene nece pa se zezam sa rtlink-om a trenutno pisem kratke toolbox-ove pa me tih 35s ubijaju. BDM.
clipper.681 ciki,
Vidis ovako. Tlink nece da radi ako si pored clipper-ovih lib. dodao jos neku( nanfor lib npr.),jer prijavljuje neku greskicu (memorija?). Inace moj batch ide nekako vako Clipper %1 /a/m/n Tlink %1,,,..ĐlibĐclipper+..ĐlibĐextend,... P.S. Moje programe radim recimo u diru Iks , tree daje -- IKS -- LIB -- OBJ ..., pa da ne bih pisao ono d:ĐclipperĐlibĐclipper+... ja stavim ..Đlib. Srecno ;)) Ciki!
clipper.682 kanda,
>> Smeta mi korak (3) zbog toga što ne mogu da ispravljam greške koje >> uočim posle pritiska na ENTER. Kako se (ceo) ovaj problem može >> drukčije rešiti? Unapred hvala za svaku ideju. Probaj ovo - 'skrolujucci getovi'. Stvar je PD, sors je bogato komentarisan i valjda ces se snaci.
clipper.683 stomic,
$ ..., pa da ne bih pisao ono d:ĐclipperĐlibĐclipper+... ja $ stavim ..Đlib. Mogao bih i da koristiš /Lpath, tako da samo jednom navedeš put, posle samo stavljaš imean LIBova. ST.
clipper.684 mandrejevic,
Imam jedno trivailno pitanje jer nemam NG za Clipper 5.01 - Koja je sintaksa za @ red, kol GET var SEND ******* ? - Koja je sintaksa (parametri) funkcije ALERT(******) ? - Koja je sintaksa komande USE .dbf VIA ****** ? Unapred hvala dobroj dusi!
clipper.685 dpaun,
>>>> Smeta mi korak (3) >> >> Probaj ovo - 'skrolujucci getovi'. Stvar je PD, sors je bogato >> komentarisan i valjda ces se snaci. Materijal je prekomplikovan za moj stil programiranja "na uvce", ali mi je dao ideju kako mogu da rešim problem. Osnovno je: kako da "ni iz čega" kreiram onoliko varijabli koliko mi je potrebno na osnovu dodeljene vrednosti promenljivoj BrSlog. Kad sam malo pažljivije razmotrio taj deo aplikacije, shvatio sam da BrSlog iz praktičnih razloga ne treba da bude prekomerno veliki, bolje reći neodređeno veliki, pa sam ga ograničio na 30! Posle te odluke, sve je leglo na svoje mesto: LOCAL Broj1:=Broj2:=Broj3:= .... Broj30:=0 // (1) BrSlog = 0 č x,y SAY "Broj slogova za izmenu (najviše 30): " GET BrSlog ; VALID BrSlog < 31 READ // (3) FOR j = 1 TO BrSlog Broj := "Broj"+ALLTRIM(STR(j)) č ROW()+1,y ... GET &Broj NEXT j READ PS. I u primeru koji si priložio, problem broja varijabli je rešen na isti način: kreirano ih je 19, dakle ograničen broj. Hvala na pomoći. dPaun
clipper.686 bulaja,
│- Koja je sintaksa za @ red, kol GET var SEND ******* ? └─── SEND? Nema toga ... │- Koja je sintaksa (parametri) funkcije ALERT(******) ? └─── ALERT() - Display a simple modal dialog box Syntax - ALERT( <cMessage> [, <aOptions] ) --> <nChoice> Arguments - <cMessage> defines a message shown centered in the alert box. If the message contains one or more semicolons, the text after the semicolons is centered on succeeding lines in the dialog box. <aOptions> defines a list of possible responses to the dialog box. Returns - ALERT() returns a numeric value indicating which option was chosen. If the Esc key is pressed, the value returned is zero. Description - The ALERT() function creates a simple modal dialog. It is useful in error handlers and other "pause" functions. The user can respond chosen by moving a highlight bar and pressing the Return or Space keys, or by pressing the key corresponding to the first letter of the option. If <aOptions> is not supplied, a single "Ok" option is presented. ALERT() is sensitive to the presence or absence of the Clipper full-screen I/O system. If the full-screen system is not present, ALERT() uses standard I/O to display the message and options tty-style. │- Koja je sintaksa komande USE .dbf VIA ****** ? └─── VIA <cDriver> defines the replaceable database driver (RDD) to use to process the current work area. <cDriver> is name of the RDD specified as a character expression. If <cDriver> is specified as a literal value, it must be enclosed in quotes. If the VIA clause is not specified, the DBFNTX driver is used by default. Note that if the specified driver is not linked, an unrecoverable error occurs. In no arguments are specified, the database file open in the current work area is closed.
clipper.687 mandrejevic,
>││ - Koja je sintaksa za @ red, kol GET var SEND ******* ? >│└─── >│ SEND? Nema toga ... Kako nema; u STD.CH : *** * @..GET * #command @ <row>, <col> GET <var> ; [PICTURE <pic>] ; [VALID <valid>] ; [WHEN <when>] ; [SEND <msg>] ; ; => SetPos( <row>, <col> ) ; ; AAdd( ; GetList, ; _GET_( <var>, <(var)>, <pic>, <{valid}>, <{when}> ) ; ) ; [; ATail(GetList):<msg>] Inace mnogo ti hvala!
clipper.688 bulaja,
││ SEND? Nema toga ... │└─── │Kako nema; u STD.CH : │*** │* @..GET │* │#command @ <row>, <col> GET <var> │ [PICTURE <pic>] │ [VALID <valid>] │ [WHEN <when>] │ [SEND <msg>] └─── Svasta :), u NG se @ .. GET .. SEND nigde ne spominje, a ne spominje se ni u originalnoj dokumentaciji (doduse, ona je za verziju 5.0)! Evo sta pise u NG za @..GET: @ <nRow>, <nCol> [SAY <exp> [PICTURE <cSayPicture>] [COLOR <cColorString>]] GET <idVar> [PICTURE <cGetPicture>] [COLOR <cColorString>] [WHEN <lPreCondition>] [RANGE* <dnLower>, <dnUpper>] | [VALID <lPostCondition>]
clipper.689 toma,
■■>> LOCAL Broj1:=Broj2:=Broj3:= .... Broj30:=0 max_broj=30 for n=1 to 30 a="broj"+alltrim(str(n)) &a.=0 next n Tek da se zna... ─Ď─Í─ĚÍ┬ĚÍ─Ě đ Ë─ŻË ŻË~Ż
clipper.690 ciki,
Hvala na obaveštenju.Moraću da probam. Pozdrav Ciki!
clipper.691 ciki,
Ho! Imam par pitanjca. 1. Ako promenljivu ne deklarisem kao local,private,.. vec je odmah incializujem npr: ... local nBb:=1 vv:=2 ... kako je clipper deklarisao vv. 2. Zasto ovo nece da radi: COPY TO Baza1 FOR (alltrim(konto)==sifra) Dok ovo radi: IF alltrim(konto)==sifra. P.S. Ispred COPY i IF ide nesto kao sifra:=alltrim(sifra) Zasad toliko. Unapred hvala. Pozdrav Ciki!
clipper.692 dpaun,
>> Tek da se zna... Nisam razumeo, al nema veze. Dok sam lupao glavu oko toga "šta je pisac hteo da kaže", sinula mi je ideja, te rešenje mog problema sada glasi: t = reccount() č .. get brz read .. decl brsŠbrzĆ for j=1 to brz brsŠjĆ=0 next for j=1 to brz č .. get brsŠjĆ //ovde bilo: valid (brsŠjĆ<t), ali to niće! next read dPaun
clipper.693 dpaun,
1. Jedan prijatelj se žali da mu Clp ne prevodi prg veći od 64 k? Da li je to moguće? Odnosno, da li ima ograničenje veličine prg? 2. U vezi grafike u Clp: može li se, u toku uobičajenog tekst moda, kreirati jedno prozorče pa tamo nešto izgrafikovati? A! 3. Da li je rad sa mišom u Clp programerski komplikovana rabota, i šta je od alatki potrebno. Hvala. dPaun
clipper.694 mandrejevic,
>│ Svasta :), u NG se @ .. GET .. SEND nigde ne spominje, a >│ ne spominje se Malo da se pojasnimo: Iz STD.CH sam zakljucio da to treba da salje neku poruku i negde, tj. da vise nisu potrebne neke kerefeke sa VALID NekaFunkcija() koja ce izmedju ostalog i da posalje poruku ; pa sam probao: set message to 24 center ... @ 10, 10 say "Get1 : " get var1 color "w+/n" @ 12, 10 say "Get2 : " get var2 send "Poruka" ^^^^^^^^^^^^^ sto pravi Error C2001 Syntax error : 'Poruka' i kod komajlera i kod predprocesora; medjutim predprocesor ipak nesto uradi: DevPos( 10, 10 ) ; DevOut( "Get1 : " ) ; SetPos( Row(), Col()+1 ) ; AAdd( GetList, _GET_( var1, "var1",,, ) ) ; ATail(GetList):colorDisp("w+/n") DevPos( 12, 10 ) ; DevOut( "Get2 : " ) ; SetPos( Row(), Col()+1 ) ; AAdd( GetList, _GET_( var2, "var2",,, ) ); ATail(GetList):"Poruka" ^^^^^^^^^^^^^^^^^^^^^^ i na osnovu neke analogije ja postavim u surs.prg: DevPos( 10, 10 ) ; DevOut( "Get1 : " ) ; SetPos( Row(), Col()+1 ) ; AAdd( GetList, _GET_( var1, "var1",,, ) ) ; ATail(GetList):colorDisp("w+/n") DevPos( 12, 10 ) ; DevOut( "Get2 : " ) ; SetPos( Row(), Col()+1 ) ; AAdd( GetList, _GET_( var2, "var2",,, ) ); ATail(GetList):msg("Poruka") ^^^^^^^^^^^^^ sto se prevede bez problema ali zato ceka rantajm greska: Error BASE/1004 No exported method : msg. Cak sam probao i message, getmsg i slicno ali ne vredi, uvek javi istu gresku. Pretpostavka je da mozda idu i parametri za red i kolonu (tj. da ne vazi ono set message to 24 center) ali vise nisam imao zivaca. Pomagajte drugoviiii...
clipper.695 vili,
> ATail(GetList):msg("Poruka") > žžžžžžžžžžžžž > sto se prevede bez problema ali zato ceka rantajm greska: > Error BASE/1004 No exported method : msg. Samo neki od "exportnih metoda" (exported methods) za GET objekt moze da se stavi iza SEND. Funkcija msg() to nije. PS. Exported methods for GET Class are: assign() end() backspace() colordisp() home() delleft(0 display() left() delright() killfocus() right() delwordleft() reset() todecpos() delwordright() setfocus() wordleft() undo() wordright() updatebuffer() insert() varget() overstrike() varput() Vili
clipper.696 mandrejevic,
>│ Samo neki od "exportnih metoda" (exported methods) za GET >│ objekt moze da se stavi iza SEND. Funkcija msg() to nije. Ne tvrdim ni ja da jeste, samo imam neki osecaj da postoji neki metod koji nije dokumentovan, jer sto bi ga u STD.CH inace stavili ? Ovo je kod verzije 5.00 bila uobicajena pojava. I kao jos jedna potvrda da ovde ipak nesto smrdi je da kada se CLIPPER.LIB rasclani sa LIB dobija se izmedju ostalog : _GETMSG Offset: 0003b990H Code and data size: 80eH GETNEW __GETBADDA __GETBLOCK __GETBUFFE __GETCARGO __GETCLASS __GETDWLEF __GETEXITS __GETHASFO __GETNAME __GETORIGI __GETPICTU __GETPOSTB __GETPREBL __GETREADE __GETSETBL __GETSETBU __GETSETCA __GETSETEX __GETSETNA __GETSETPB __GETSETPI __GETSETPR __GETSETRE __GETSUBX __GETTODEC __GETUNDO
clipper.697 nbatocanin,
> No exported method / variable Eh, štos je u tome što novodefinisani objekti nisu definisani na isti način kao ugrađeni. Bolje sačekaj novu verziju Clipper-a.
clipper.698 nbatocanin,
> Dobro de nemoj se zestiti. Ja? :)
clipper.699 nbatocanin,
Ako korisniku ne znači mnogo redni broj sloga, mogao bi da mu omogućiš interaktivni izbor slogova sa TBrowse: korisnik prvo selektuje slogove, a zatim se vrši obrada.
clipper.700 nbatocanin,
Sad baš nešto gledah GETSYS i videh da se sa SET KEY na INS radi posao koji GET sistem automatski radi. Kada se definiše INS kao f-taster, ta automatska funkcija ne radi! žini mi se da je najbolje njega promeniti pošto je ovu promenu potrebno trajno zapamtiti. Treba izmeniti proceduru ShowScoreboard. Pre RETURN-a treba staviti: SetCursor (IIF (Set(_SET_INSERT), 2, 1)) i problem je rešen!
clipper.701 ciki,
>> Da li je rad sa mišom u Clp programerski komplikovana rabota, i >> šta je od alatki potrebno. Uzmi Nflib sa sezama. Rad sa misom moze i iz Graficke biblioteke CLIP_GR.ZIP isto sa sezama :). Sam rad nije tezak, ali najvecu komotnost pruza Flipper 5.0, pozdrav snowwhite-u. Pozdrav Ciki!
clipper.702 d.petrovic,
Bilo bi lepo da mi neko zakaci uputstvo za rad sa LIB.EXE. Problem je sto kad hocu da promenim onih 5 OBJ-a koji idu za bibliotekom nanfor (po uputstvo koje ide uz zakrpe npr. LIB NANFOR -+ FLOPTST;) on mi poizbacuje silu drugih funkcija (ne znam ni ja koje sve, tek biblioteka vise ne valja) koje ja nigde nisam pomenuo. Jel neko sredio tu biblioteku?
clipper.703 hercog,
**> 1. Jedan prijatelj se žali da mu Clp ne prevodi prg **> veći od 64 k? Da li je to moguće? Odnosno, da li ima **> ograničenje veličine prg? Koliko ja znam nije. Malko smo se zezali pa smo napravili jedan malecki program od 350 kb i sve je radilo kako treba (prevođenje linkovanje itd) Hercog
clipper.704 dpaun,
>> Ako korisniku ne znači mnogo redni broj sloga, mogao bi da mu >> omogućiš interaktivni izbor slogova sa TBrowse Verovatno da si u pravu kad su u pitanju slogovi sa uobičajenim tipovima podataka, ali moj primarni Clp materijal jesu tekstovi, odnosno memo. Ne znam kako bi to izgledalo preko TBrowse! Zgodna je prilika da još jednom priupitam - ima li još koga ovde koji se bavi tekstualnim bazama podataka? dPaun
clipper.705 dpaun,
>>>│ SEND? Nema toga ... >> Kako nema; u STD.CH : Evo još jednog primera SEND-a iz STD.CH: // č..GET COLOR #command č <row>, <col> GET <var> ; Š<clauses,...>Ć ; COLOR <color> ; Š<moreClauses,...>Ć ; ; => č <row>, <col> GET <var> ; Š<clauses>Ć ; SEND colorDisp(<color>) ; Š<moreClauses>Ć dPaun.ch
clipper.706 hercog,
**> Jel neko sredio tu biblioteku? Ja sam to uradio sa TLIB programom iz Turboassemblera (ili beše debugera) Hercog
clipper.707 ciki,
Ho! Sacekaj da prevedem uputstvo koje se dobije kao fajl QuickHelp uz MASM 6.0 pa cu ga nakaciti tebi u MAIL Pozdrav Ciki!
clipper.708 ciki,
Ho! Posle celih 300s evo prevoda uputstva za LIB.EXE jer si ti to trazio d.petrovic-u.Ocekujem pice za ovo i za ono pre ;))))) Pozdrav Ciki! lib.arj
clipper.709 yowo,
Mozda nekom ovo i pomogne. (radi se o koriscenju prelink datoteka) Recimo da se program sastoji iz dva modula (m1.prg i m2.prg). Prvi module se prevodi normalno i kada je potpuno gotov napravi se sledeci .lnk fajl. /PRELINK FI m1 Drugi modul se linkuje na sledeci nacin CLIPPER čm2HHHHHHHH (podrazumavam da se radi sa .clp fajlovima) RTLINK FI M1 FI M2 OUT M1 /PLL:M1 (ovo traje oko 5s na 386 DX 33Mhz umesto 20s sa klasicnim linkovanjem) Mozda ovo nekom izgleda smesno, ali ja sam se preporodio !!! Za Darling & Co: Srdjan Gajic
clipper.710 yowo,
P.S. Zaboravih da pitam. Jel' neko moze da mi objasni kako da od clipper.lib napravim prelink datoteku. Uvek mi javi da neki simbol nije definisan i stane (nije nijedan od onih koje je Rick Spence naveo u svojoj knjizi). Od prilike je nesto kao __START__SYM.
clipper.711 d.petrovic,
To valjda mora tako !????? To ce ti se samo uglaviti u exe fajl (jel negde oko 17K ?), vidis valjda da tad ne prijavljuje gresku. Hi!
clipper.712 dpaun,
Pošto je ostalo bez odgovora, ponavljam ovo pitanje od ranije. >> 2. U vezi grafike u Clp: može li se, u toku uobičajenog tekst >> moda, kreirati jedno prozorče pa tamo nešto izgrafikovati? A! Molim znalce za komentar. Reč je o prestižu Sezama; toliko sam ga nahvalio prijatelju da je ovo poduže ćutanje kontraproduktivno. dPaun.--
clipper.713 ppekovic,
>> >> 2. U vezi grafike u Clp: može li se, u toku uobičajenog te >> >> moda, kreirati jedno prozorče pa tamo nešto izgrafikovati? Nemože, ali ne zbog clipper-a već zbog samog pc-a, jer na pc-u nemožeš u tekst modu mešati grafiku. Ipak, ako mu je baš stalo da tako nešto uradi, može da proba sledeće: Neka isčita tekuće definicije fontova, pa neka krene redom da čita video memeoriju i kreira bitmap sliku negde u memoriji. Zatim lepo prebaci karticu u grafički mod i onda baci kreiranu bitmap sliku u video mem. Posle nek crta šta hoće. Paya
clipper.714 dejanr,
>> 2. U vezi grafike u Clp: može li se, u toku uobičajenog tekst >> moda, kreirati jedno prozorče pa tamo nešto izgrafikovati? A! Ne može, koliko znam. Clipper radi samo u tekst modu.
clipper.715 ciki,
Ho! Posto nisam dobio odgovor, ponavljam pitanjce. 1. procedure Ja local ff:=0 ... vv:=0 ... ... return Pitanje: Kako je deklarisano vv a) Public && Nije ali ipak da se vidi b) Local c) Static d) Private P.S. Tacan odgovor zaokruziti 2. Zasto ovo rad if konto==alltrim(sifra) , a ovo copy to u1 for konto==alltrim(sifra) Pozdrav Ciki!
clipper.716 d.petrovic,
> procedure Ja. > local ff:=0 > ... > vv:=0 > ... > ... > return > > Pitanje: Kako je deklarisano vv > a) Public && Nije ali ipak da se vidi > b) Local > c) Static >╔════════════╗ >║ d) Private ║ >╚════════════╝ > P.S. Tacan odgovor zaokruziti > 2. Zasto ovo rad if konto==alltrim(sifra) , a ovo > copy to u1 for konto==alltrim(sifra) Šta je pisac hteo da kaže ?! Hi! P.S. R:Đ>mail wr d.petrovic Dolazim inkriminisanog dana u Bgd... :)
clipper.717 ciki,
>> 2. Zasto ovo rad if konto==alltrim(sifra) , a ovo > copy to u1 for konto==alltrim(sifra) > > Šta je pisac hteo da kaže ?! Pisac je hteo da kaže ovo: Kada ispitujem uslov sa if-om, sve radi Ok, tj. za odredjen uslov program ga prepozna i nastavi da radi naznečeno. Ako 1 proceduru i to handmade zamenim sa onim COPY..., program neće da radi. Znači umesto COPY..., ja sam pisao uz pomoc for, if ,... 1 proc., koja zamenjuje COPY.... P.S. Hvala ti za odgovor. Mrzelo me je da testiram prg. preko debugger-a. Pozdrav Ciki!
clipper.718 ndragan,
/ Molim znalce za komentar. Reč je o prestižu Sezama; toliko sam ga / nahvalio prijatelju da je ovo poduže ćutanje kontraproduktivno. Xm, to je moglo na Spektrumu, može na Meku, Atariju i Amizi - znači na računarima koji su stalno u grafičkom modu. Kod PCa postoji caka da je set naredbi za ispis u tekst režimu i u grafičkom režimu sasvim različit (u jednom slučaju se 'gađaju' određene lokacije u video memoriji kodovima slova, a u drugom se na grafičkom ekranu 'crtaju' slova). Eventualno da nateraš kliper da radi stalno u grafičkom režimu, ili da koristiš neku bazu za pendžere - ne znam za bolji način. Jel neko uopšte probao nešto od ta dva?
clipper.720 d.petrovic,
Braćo po CLIPPER-u: U P O M O O O O O O O O O O Ć !!!!!!!! Elem da počnem: Hteo sam da biblioteku NANFOR.LIB sredim, t.j. da izmenim pet funkcija (znate već koje) da ne bi morao da ih duplo definišem u programu. Glavni razlog za to je što tu biblioteku nemogu da smestim u *.PLL fajl, jer kasnije te funkcije neće biti predefinisane i program neće raditi kako valja. E, tu se javlja problem: LIB.EXE (verzija 3.15, a pre toga i verzija 3.10) završi svoj pos'o, izmeni šta već treba i biblioteka je prividno OK., ali... Neke druge funkcije, koje ja nigde nisam pomenuo pri radu sa LIB-om, a to su: FT_DEC2BIN FT_DEFAULT FT_SQZN FT_ORIGIN onda neće da rade, t.j. kad linker (rtlink) formira *.EXE fajl njih prijavi kao nedefinisane (možda bi prijavio i neke druge da ih koristim u programu). Pokušavao sam i njih da vadim pa da vraćam u biblioteku, ali sve je ostajalo po starom :( Vrlo važno: Ovo se dešava samo pri radu sa *.PLL bibliotekom (zbog koje je sve ovo i počelo), a ako sve normalno linkujem sve je OK. Još važnije: OVO SVE ME TOLIKO NERVIRA DA 'OĆU IZ KOčE DA IZAĐEM, žAS OĆE, žAS NEĆE, PRAVIO SAM JE I RASTURAO n PUTA (n>>50) I UVEK ISTO, ISTE FUNKCIJE, ISTA SR*NJA. Dobro de, mogu ja njih i da izbacim iz programa dok je u razvoju, ali NEĆU! Ajde neka dobra duša nek proba da mi to reši, jerbo ja za taj pos'o nemam više ič živaca. Za sada prilažem listu funkcija u biblioteci (iz zadnjeg pokušaja) i oba RMK fajla, onaj sa kojim radi, i onaj sa kojim me za*ebava. Ako nekom bude trebala zakačiću i biblioteku, da je ne šaljem sad džabe kad to svi imate. Ajd zdravo, znam da će neki da me pcuju što sam im i ovoliko napunio pad. Hi! list.arj
clipper.721 nbatocanin,
>>> 2. U vezi grafike u Clp: može li se, u toku uobičajenog >>> tekst moda, kreirati jedno prozorče pa tamo nešto >>> izgrafikovati? A! Slike se mogu crtati samo u grafičkom modu. Ne postoji mogućnost mešovitog moda - ili je grafički ili tekst. Naravno, slova se mogu crtati i u grafičkom modu, a to je verovatno ono što ti treba. Neke grafičke biblioteke omogućavaju da bez ikakvih prerada Clipper program radi u grafičkom modu. Ja znam da to ima dGE, a mislim i Force i Flipper.
clipper.722 toma,
■■>>>> 2. U vezi grafike u Clp: može li se, u toku uobičajenog tekst ■■>>>> moda, kreirati jedno prozorče pa tamo nešto izgrafikovati? A! ■■>> ■■>> Ne može, koliko znam. Clipper radi samo u tekst modu. Ajde mi ti, života ti, u nekom jeziku >koji radi i u graf modu< napiši program koji će u tekst modu samo jedan prozor da prebaci u graf mod. Još ako to radi i na hercules onda svaka ti čast. -=> Toma <=-
clipper.723 zkrstic,
> P.S. Hvala ti za odgovor. Mrzelo me je da testiram prg. preko > debugger-a. Znam još jednog takvog ;) Aman, šta ti je teško da malo brčneš prstiće kroz dibager i iskopaš šta te zeza :) Zkr
clipper.724 ciki,
Zdravo! Imam jedan problem oko arhive r075clpr.zip iz Đrsoft-a sa sezama. Ukratko evo u cemu je stos. U arhivi se izmedju ostalog dobijaju 2 source fajla na asembleru, koja moj masm 6.0 ne moze da prevede!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1. Ako prevodim program onakav kakav jeste, javi mi gresku da ne moze da nadje EXTENDA.INC(e se bese tako zove). 2. ja mu onda izbacim ono l: iz INCLUD direktive (kad ono bolje da to nisam radio) 3. Izbacuje mi xž12312313 greskica(Saljem jedan txt fajl,pa ce te tu moci da vidite sta me muci.) Propratni fajl je pisan nbatocanin-u, pa ako se njegovo ime pomene, vi smatrajte da ste to vi :))) P.S. Nemoj neko da pomisli da nemam EXTENDA.INC(Imam Imam.Dobio ga uz Clipper 5.01 u dir. INCLUDE), ali NEEEEE RAAADIIIII!!!!! Da nije u pitanje MASM. Ako je neko preveo ta 2 fajla, zamolio bih ga da mi OBJ nakaci ili u mail ili ovdiii! Izvinite na ovolikoj gnjavazi. Unapred hvala Pozdrav Ciki! ciki.arj
clipper.725 toma,
Ima li neko uputstvo za Flipper. Bilo kakvo, sem NG-a.
clipper.726 ppekovic,
>> Ima li neko uputstvo za Flipper. Svrati večeras do kluba. BTW. Pošto je tema grafike i clipper-a jedna od onih koje nazivamo večitima, a nije se do sada pronašao dobar način za njenu realizaciju, jel može neko ko ima neka iskustva sa tim flipper-om (jel beše 5.0 verzija) da kaže da li smo konačno našli rešenje za večiti problem? Paya
clipper.727 toma,
■■>> Svrati večeras do kluba. Eto, a nisam ni znao da i u Paraćinu postoji klub. :(((((
clipper.728 dpaun,
>> 1. Ako prevodim program onakav kakav jeste, javi mi gresku da >> ne moze da nadje EXTENDA.INC Problem je sigurno u putanji. U autoexec.bat treba da imaš: SET INCLUDE=C:CLIPPER5ĐINCLUDE /tj. konkretnu putanju do *.inc fajlova/ Onda ti u zaglavlju *.asm fajla ne treba l:, dovoljno je: INCLUDE EXTENDA.INC, ili umesto l: napiši celu putanju: INCLUDE C:ĐCLIPPER5ĐINCLUDEĐEXTENDA.INC Onda MASM ImeAsmFajla ... dPaun.inc
clipper.729 hercog,
Koliko je to uputstvo? Hercog p.s. ako neće Toma može posudba na jednu drugu stranu?
clipper.730 toma,
Bavi li se neko od vas pisanjem UKRAS rutina za clipper ?
clipper.731 ciki,
Ho! Da ti nesto kazem unapred. Nije problem u putanji posto: 1. Imam u autoexec-u definisan taj path. 2. Extenda.inc sam ubacio i u INCLUDE dir i u tekuci dir iz koga vrsim kompajliranje. Ono sto je glavni su linije 78,79,80,81(tako nesto) u fajlu EXTENDA.INC ----- Znaci ili nisam naveo odgovarajuce prekidace prilikom kompa., ili ... P.S. Ipak hvala ti na trudu i izgubljenom vremenu. Sto se tice uputstva za Flipepr 5.0 (Da ne bi ponovo pisao porukicu), nije mi jasno sta ce ti uz onolike primere i onakav NG(ali ima nas raznih) Pozdrav Ciki!
clipper.732 ratman,
Imam AT/12MHz sa 1M RAM, pa mi je RTLink od Clipper-a strasno spor. Sta sve moze da se uradi da se ovo ubrza? A da probam dobri stari TLink? Bar dok pravim samo male, probne pgm.e? Pozdrav, Dejan
clipper.733 ratman,
Gde se, ustvari nalaze trigonometrijske funkcije za Clipper (i slicne njima)? MIsl'o sam da je u EXTEND.LIB, ali jok...
clipper.734 toma,
■■>> p.s. ako neće Toma može posudba na jednu drugu stranu? Oće toma uputstvo ali ne može na dođe u klub. :((((
clipper.735 janko,
> > Bavi li se neko od vas pisanjem UKRAS rutina za clipper ? > Tomo, majstore! Ja ne, ali, ako počneš da pišeš i negde zapneš, imaš moju podršku. Napr. epoštom. Dodatno pitanje: *************************************************************** A ima li neko ko bi to FINANSIRAO? CLIPPER aplikacije su izuzetno komercijalne. Napr. neka softverska firma, pa da to bude njeno ekskluzivno vlasništvo? Ili opet sanjam, da to može i kod nas? ***************************************************************
clipper.736 bulaja,
│ A ima li neko ko bi to FINANSIRAO? CLIPPER aplikacije su │ izuzetno komercijalne. Napr. neka softverska firma, pa da to │ bude njeno ekskluzivno vlasnistvo? Ili opet sanjam, da to moze │ i kod nas? └─── A sta da bude vlasnistvo? Koliko sam video C/PAS verziju Ukrasa, prenos na Clipper bi zahtevao "tezak" rad izmedju dva zvanja Sezama :), znaci nekoliko sati. Ako mislis da na tome namlatis lovu ... Vecina onih koji ozbiljnije rade sa Clipper-om verovatno ima vec neki svoj sistem za rad sa razlicitim YU standardima, tako da ne verujem da bi im mnogo trebao Ukras :).
clipper.737 fric,
> Nije problem u putanji posto: > 1. Imam u autoexec-u definisan taj path. Ako ga imaš u path = ..., onda jeste problem u tome jer se kroz promenljivu path mogu nalaziti samo exe, com i bat fajlovi. Ako imaš eksplicitno deklarisano SET INCLUDE=... - e onda stvarno ne znam. fric
clipper.738 fric,
Muči me sledeće: Treba da štampam dokument sa lepim zaglavljem. Nacrtam zaglavlje u Corelu, iz WP-a doteram i snimim u fajl, ručno CR na kraju zamenim sa LF. Sve je u redu, sad treba napraviti rutinu u clipperu koja će crtati zaglavlje (tj. logo) pa ispisivati tekst ispod. Zaglavlje ispišem jednim RUN ('copy logo.prn lpt1 > nul') I to lepo radi, ali nikako ne mogu da posle toga nateram štampač da primi i ispiše ostatak teksta (štampač je LQ550). Stavio sam iza gornje RUN naredbe jednu petljicu u kojoj se čeka da štampač nacrta šta ima (isprazni bafer, tj. da ISPRINTER() da bude true). Proveravao sam dibagerom, ta petlja se uredno provrti, ali štampač ništa dalje ne štampa, iako se PROW() uredno inkrementira: SET DEVICE TO PRINT SET PRINTER TO cLptG č PROW() ,0 SAY CHR(27) + 'č' //inicijalizacija printera č PROW()+nDYG,0 SAY Razmak_8 + Elit_ON + 'tekst...' ... Nije radilo ni kada sam ubacivao/izbacivao liniju sa kodom za inicijalizaciju štampača, ni kada sam u logo.prn apendovao na kraj isti taj kod ... Štampač samo ostane on-line i ne reaguje. Pretpostavljam da se neko na Sezamu bavio sličnim poslom i da ga je uspešno okončao - kako je ovo realizovao ? fric
clipper.739 ciki,
Ho! ::>>Ako imaš eksplicitno deklarisano SET INCLUDE=... Imam eksplicitno definisan path!!!! Ma ljudi nije putanja problem vec veza MASM 6.0 i EXETNDA.INC. P.S. Ali najbolje bi bilo da to zaboravimo!!!!!! P.P.S. Nisam bas dobro procitao tvoju porukicu, ali imas nesto slicno u nekom od starijih racunara. Pozdrav Ciki!
clipper.740 kzoran,
Ljudi, da li SORT source i SORT target fajl mogu biti ista (source) datoteka, ili je neophodno izvoditi vratolomije tipa SELECT source SORT ON key TO target CLOSE source USE target COPY TO source CLOSE target ERASE target USE source INDEX ON key TO xx CLOSE source da bi na kraju sortirana datoteka imala isto ime kao na startu? Odnosno, je li moguce uraditi jednostavno SELECT source SORT ON key TO source i resiti problem? Napominjem da bi navedene operacije trebalo vrsiti nekoliko puta u programu sa 4(!) potencijalno vrlo velike datoteke, i da svaka usteda u vremenu moze da bude fundamentaaaalna... (Ako vas cudi ono indeksiranje sortirane datoteke, razlog je u tome sto se na jednom mestu datoteci pristupa putem indeksa, a na drugom pristup mora da bude funkcijom DBGOTO(x), koja indekse ne priznaje - inace mi sort ne bi ni trebao.) Pozdrav, Zoran.
clipper.741 zkrstic,
> Bavi li se neko od vas pisanjem UKRAS rutina za clipper ? Jok ;) Ja mrzim svoje kupce, korisnike i teram ih da rade il' sa CP 852 il' sa Juskijem. I to kako meni volja ;) Ne dam im ništa da biraju ;) Dovoljno je što su mene odabrali :)))))) Pozdrav, Zkr :)
clipper.742 zkrstic,
> Gde se, ustvari nalaze trigonometrijske funkcije za Clipper (i > slicne njima)? MIsl'o sam da je u EXTEND.LIB, ali jok... Nema ih, na žalost tvoju. Mislim da sam imao negde LIB sa takvim funkcijama, pa ako ga nađem, šaljem vamo. Pozdrav, Zkr
clipper.743 zkrstic,
> da li SORT source i SORT target fajl mogu biti ista (source) datoteka NE! Pozdrav, Zkr
clipper.744 janko,
> A sta da bude vlasnistvo? Koliko sam video C/PAS verziju > Ukrasa, prenos na Clipper bi zahtevao "tezak" rad izmedju > dva zvanja Sezama :), znaci Znači... bićemo ti zahvalni da toliko uradiš. Ja sam mislio da je to teže od C i Paskal verzije, jer mora da se piše na mašincu da bi bilo efikasno... priznajem, meni bi trebalo dosta vremena za takav poduhvat. Znači... *********************************** žekamo Bulajun UKRAS za Clipper. :) *********************************** (BTW molim te, da bude kompatibilan i sa Summer '87!)
clipper.745 kzoran,
> NE! HVALA! Pozdrav, Zoran.
clipper.746 pjankovic,
> Bavi li se neko od vas pisanjem UKRAS rutina za clipper ? Na osnovu jankovog programa u C-u napisao sam u Clipperu funkciju za inicijalizaciju. Pošto se inicijalizacija vrši samo jedanput na početku tu brzina nije kritična. Funkciju juk() (koja vrši konverziju) sam modifikovao da se poziva iz Clippera i da joj se prosleđuje tabela kodova. Brzinu nisam testirao ali mi se čini da bi za većinu zahtjeva ova funkcija trebala da je dovoljno brza. Ako ima zainteresovanih mogu to da okačim. Naravno, trebalo bi mi malo vremena da sve to sredim i napišem neke komentare.
clipper.747 pjankovic,
> Imam AT/12MHz sa 1M RAM, pa mi je RTLink od Clipper-a > strasno spor. Ako već tako ne radiš, startuj RTLink sa opcijom /PLL:base50. Korišćenjem Pre Link Libraries brzina linkovanja se po mojoj slobodnoj procjeni povećava 2-3 puta.
clipper.748 dpaun,
>> Ma ljudi nije putanja problem vec veza MASM 6.0 i EXETNDA.INC. >> P.S. Ali najbolje bi bilo da to zaboravimo!!!!!! Ma čoveče, takav defetizam nije u duhu Sezama! Ajmo lepo od početka: prva poruka, koju si dobio, vezana bila je vezana za putanju, onda si stvar rešio tako što si izbrisao ono l:, pa onda prebacio EXTENDA.INC radni direktorijum itd. Tvrdiš da ti je putanja u redu ... Neka bude po tvom! Ja tvrdim da ASM fajlovima koje si hteo da asembliraš ne fali ništa. Dokaz je u prilogu ove poruke (šaljem ti ih u obj stanju!). Pre nego što ponovo nalegneš na taster sa znacima čuđenja, učini i ovaj pokušaj: prebaci asm fajlove u direktorijum MASM, prebaci tamo i EXTENDA.INC, obriši ono l: iz zaglavlja asm-a, napiši MASM view ... pa ako i tada ne bude u redu, u redu. PS. Reagovao sam na tvoj vapaj zato što sam i sam prošao kroz to. Za razliku od tebe, nisam bes iskalio na ASCII 33! dPaun
clipper.749 andrejl,
>│ Tomo, majstore! Ja ne, ali, ako počneš da pišeš i negde >│ zapneš, imaš moju podršku. Napr. epoštom. Ako Toma neće mogu ja da prionem poslu, u stvari već sam razmišljao da UKRASim clipper :) ili možemo competition :) Šalu na stranu, ja sam spreman. bye, andrejl
clipper.750 nbatocanin,
Izvinjavam se zbog zakašnjenja odgovora. Evo o čemu se radi. Direktiva INCLUDE služi za uključivanje standardnog Clipper zaglavlja za rad sa extend sistemom - to je datoteka EXTENDA.INC koja se dobija uz Clipper. Znači, umesto L:\... napišite *puno* ime kataloga na kome se nalazi ta datoteka i to će biti OK. Kao što reče dPaun++, može i menjanjem DOS promenljive INCLUDE. Ja koristim MASM 5.1 i mada sam veoma nezadovoljan njegovim radom, koristim ga jer je određeni standard. TASM, bez obzira na agresivnu najavu, ne može da prevede EXTENDA.INC, ni u jednom modu. Tačan razlog ne znam, a i ne interesuje me. Pretpostavljam da je sličan razlog i kod MASM 6.0. Sasvim posebno pitanje je kompatibilnost verzija *asemblera* istog proizvođača. žini mi se da je razvijanje makro dela jezika na uštrb kompatibilnosti veoma nerazumno. Izvinjavam se unapred u slučaju da postoji neki prekidač za kompatibilnost. Ali, eto. Sve što ja mogu da uradim je da odsad, pa nadalje i ubuduće šaljem i odgovarajuće OBJ datoteke. objs.zip
clipper.751 janko,
> Na osnovu jankovog programa u C-u napisao sam u Clipperu > funkciju za inicijalizaciju. Pošto se inicijalizacija vrši > samo jedanput na početku tu brzina nije kritična. Da. I ja mislim da je neisplativo (ili teško izvodljivo, zbog korišćenja C-ovih bibliotečkih rutina koje MOčDA ne ulaze u Clipper.lib, ili mu smetaju) inicijalizaciju raditi u nečem što nije sam Kliper. > Funkciju juk() (koja vrši konverziju) sam modifikovao da > se poziva iz Clippera i da joj se prosleđuje tabela > kodova. Brzinu nisam testirao ali mi se čini da bi za > većinu zahtjeva ova funkcija trebala da je dovoljno brza. A je li juk() na Kliperu ili C-u? Pitam zbog ovog 'čini mi se da je dovoljno brza.' Ako je na C-u, valjda je to dovoljno? > Ako ima zainteresovanih mogu to da okačim. Naravno, > trebalo bi mi malo vremena da sve to sredim i napišem neke > komentare. Naravno da ima. Kad sve to središ, tražićemo od moderatora da i to smesti u neki direktorijum, na opštu korist.
clipper.752 janko,
> Ako Toma neće mogu ja da prionem poslu, u stvari već sam > razmišljao da UKRASim clipper :) ili možemo competition :) > Šalu na stranu, ja sam spreman. Nije šala, već, bolje da sarađujemo. Evo, i pjanković se javio, on je već i napisao dosta toga. Uvek je dobro da više ljudi učestvuje u nekom projektu -- ponudi mu se da mu pomogneš, ako je on na to spreman? A ako vas se još skupi, možete da formirate grupu (za razvoj)! Usput, imaš li iskustva sa ubacivanjem mašinskih (ili C) rutina u Clipper? Bilo bi zgodno da sama f-ja za konverziju ne bude na Kliperu, zbog brzine. Znaš već, kad se stavi kao f-ja indeksa i slično... A onda, kada kompletiramo rutine za latinicu, konačno možemo krenemo i u osvajanja ćirilice! Biće još posla za programere! :) Vou, jea!
clipper.753 toma,
■■>> Ako Toma neće mogu ja da prionem poslu, u stvari već sam ■■>> razmišljao da UKRASim clipper :) ili možemo competition :) ■■>> Šalu na stranu, ja sam spreman. Nije da neću, nego sam malo tesan sa vremenom, a i zaboravio sam i ono malo C-a što sam znao. (ATARI ST -> vojska -> PC)
clipper.754 bstevan,
Zdravo ! Evo jednog pitanja u vezi rada u mrežnom okruženju, radi se o verziji 87'. Sa SET EXCLUSIVE OFF - postavim da su baze na raspolaganju svim korisnicima. Sad kad otvorim bazu sa USE (nDataBase) ECLUSIVE i sa NETERR(), proverim uspešnost otvaranja baze sve je ok, odnosno kad sledeći korisnik pokuša da otvori istu bazu javlja zauzeće baze. Problem nastaje kad želim da istu bazu koriste više korisnika, i da pojedine slogove menjaju ili da pojedine slogove u bazi zaključam, odnosno otključam. Konkretno ako se PRVI korisnik nalazi u bazi XXXXX.dbf na 10-tom slogu, i ako pokuša korisnik DRUGI u istoj bazi da radi na tom slogu, kako da ga sprečim pre nego što program padne uz poruku "lock required". I još jedno interesantno zapažanje samo sa USE (nDataBase), bez EXCLUSIVE mogu da koriste datoteku oba korisnika, ali ne mogu da menjaju ništa u datoteci, jer pri pokušaju da to učine pozdravna poruka je "database requried" ili "exclusive requried". Jer ako otvorim bazu sa EXCLUSIVE javlja mi zauzeće baze. Da li neko ima iskustva sa ovim stvarima i koja su rešenja ? Kopao sam po literaturi o radu sa mrežama, ali to su uglavnom kratka objašnjenja, bez nekih praktičnih iskustva autora. pozdrav BSTEVAN
clipper.755 dvasiljevic,
HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! HELP ! Imam jednu muku sa poteškoćama u vezi tbrowse objekata. :( Nikako ne mogu da postignem da se sa pomeranjem kursora gore-dole naglašava (tb:hilite()) cela linija. :( Pokušavao sam nešto u fazonu : : : for i := 1 to tb:colCount - 1 ++ tb:colPos while !tb:stabilize() ; end do tb:hilite() next while !tb:stabilize() .and. (ch:=inkey()==0); end do if tb:stable ; ch:=inkey(0) ; end if do case case ch == K_ESC .or. ch == K_ENTER ; exit : : Šta sve nisam probao, i ne pomaže. Ako je neko voljan da mi pomogne, biću mu veoma zahvalan. Pozdrav Veličko :(
clipper.756 hercog,
**> SELECT source **> SORT ON key TO source Ovako nipošto ne smeš da uradiš. Radiće par puta dobro, a onda posle nekog vremena ćeš na disku da dobiješ samo ime od datoteke. Nestaće i njena struktura i podaci. A program će da ti prijavi CORUPTION DETECTED... Hercog p.s. zato koristi prvi način
clipper.757 bulaja,
Prilikom SORT-a source i target moraju biti razlicite datoteke, ali nemoj koristiti SORT, umesto toga indeksiranje po kljucu pa COPY TO radi mnogo brze (i pouzdanije). Takodje ne treba COPY TO source za celu datoteku, posto bi COPY TO file trebalo da radi brze (pre toga uradi jedan COMMIT da ne bude haosa sa neispraznjenim baferima :). Ali ovde ti ne treba ni COPY vec jedan DELETE FILE pa RENAME. Dakle: select source index on key to xx copy to target close source delete file source.dbf rename target.dbf to source.dbf delete file target.dbf // ovde vec imas napravljen xx.ntx // pa ne treba dalje raditi index
clipper.758 bulaja,
│Naravno da ima. Kad sve to sredis, trazicemo od moderatora da i │to smesti u neki direktorijum, na opstu korist. └─── Pa necu da smestam pojedinacno ukras rutine za svaki jezik, vec ih ti ubaci u novu verziju Ukraz paketa (onog sto je u \pc\yu) pa cu komplet da stavim u dir umesto stare verzije. Eno stoji podrska za Modulu 2 u conf, a nikako da je ubacis u paket.
clipper.759 janko,
> Pa necu da smestam pojedinacno ukras rutine za svaki > jezik, vec ih ti ubaci u novu verziju Ukraz paketa (onog > sto je u ĐpcĐyu) pa cu komplet da stavim u dir umesto > stare verzije. Eno stoji podrska za Modulu 2 u conf, a > nikako da je ubacis u paket. Pa, može, ako insistiraš... ne bi mi bilo teško. Meni je nekako bilo logičnije da čoveka koji piše Modulu 2 ne zanima kako izgledaju rutine na C-u... Najviše bih voleo da za svaki jezik postoji poseban paket... Šta misle Sezamovci o ovome? Da li biste više voleli po 20 K 'ukrasa za paskal,' 'ukrasa za kliper' itd. ili (potencijalno) 120K 'ukrasa za sve živo'? --- PS. Kad se već razgovaramo, a što ne stavi Tank_v2 program u dir? Garantujem da se skoro neće pojaviti brži, osim ako se neko dooobro ne pomuči.
clipper.760 fric,
> Evo jednog pitanja u vezi rada u mrežnom okruženju, > radi se o verziji 87'. Ja ti ovo pričam za 5.01, ali mi se čini da treba da važi i za '87. > Sa SET EXCLUSIVE OFF - postavim da su baze na raspolaganju > svim korisnicima. Kao prvo, preporuka je da ne koristiš set exclusive, već da exsplicitno uvek USU-ješ exclusive ili shared. To je čisto pitanje stila, i otpornosti na greške. > Konkretno ako se PRVI korisnik nalazi u bazi XXXXX.dbf na > 10-tom slogu, i ako pokuša korisnik DRUGI u istoj bazi da > radi na tom slogu, kako da ga sprečim pre nego što program > padne uz poruku "lock required". - Ako neko drži ekskluzivno bazu, *niko* drugi ne može ni da prismrdi - Zato obojica treba bazu da otvore shared - Ako hoće obojica samo da čitaju, nema problema - Ako neko hoće da radi replace, pack, zap, i još po nešto, *mora* pre toga da zaključa celu bazu ili record, zavisno od slučaja. Ako ti treba, mogu da prepišem tabelu gde piše koja operacija zahteva kakav način zauzeća baze ili zaključavanja, ko koga potire (šta je 'starije') i sl. > I još jedno interesantno zapažanje samo sa USE > (nDataBase), bez EXCLUSIVE mogu da koriste datoteku oba > korisnika, ali ne mogu da menjaju ništa u datoteci, jer > pri pokušaju da to učine pozdravna poruka je "database > requried" ili "exclusive requried". Vidi gore. > Kopao sam po literaturi o radu sa mrežama, ali to su > uglavnom kratka objašnjenja, bez nekih praktičnih iskustva > autora. Ja sam u 'Clipper 5 - vodič za programere' or Ricka Spence-a (knjiga sa jedrenjakom) našao poglavlje sa 40-50 *veoma* korisnih stranica o razvoju kliper aplikacija za rad na mreži. fric
clipper.761 kzoran,
> Ovako nipošto ne smeš da uradiš. Radiće par puta dobro, a onda posle > nekog vremena ćeš na disku da dobiješ samo ime od datoteke. Nestaće i > njena struktura i podaci. A program će da ti prijavi CORUPTION DETECTED... To sam i pretpostavljao, ali ko pita ne skita. Hvala! Pozdrav, Zoran.
clipper.762 kzoran,
COMMIT mi valjda ne treba, posto program (za sada) ne radi u mrezi. A sto se listinga tice: > select source > index on key to xx > copy to target > close source > delete file source.dbf > rename target.dbf to source.dbf > delete file target.dbf > // ovde vec imas napravljen xx.ntx > // pa ne treba dalje raditi index u pravu si za COPY TO - ponovni COPY mi ne treba (zaboravio sam da COPY TO kopira slogove u logickom redosledu na koji ukazuje indeks), ali zar mi ne treba INDEX ON .. TO .. na kraju, jer indeks koji je vazio za prvobitni source vise ne odgovara novom redosledu u "sortiranom" source-u. U svakom slucaju, sva ova resenja su mi previse spora, i moracu se pozabaviti zamenom onog DBGOTO(x) nekom drugom sekvencom za nalazenje trazenog sloga bez kopiranja i sortiranja fajlova. Hvala na pomoci. Pozdrav, Zoran.
clipper.763 bulaja,
│Ovako niposto ne smes da uradis. Radice par puta dobro, a onda posle │nekog vremena ces na disku da dobijes samo ime od datoteke. Nestace i │njena struktura i podaci. A program ce da ti prijavi CORUPTION DETECTED... └─── E bre Hercog, pa opet to o onoj misteriji oko nestajanja datoteka koja se pojavila samo kod tebe i niko drugi nije uspeo da je ponovi! :) SORT jeste glupa naredba, ali uglavnom radi (lose), ne plasi narod :).
clipper.764 bulaja,
│PS. Kad se vec razgovaramo, a sto ne stavi Tank_v2 program u │dir? Garantujem da se skoro nece pojaviti brzi, osim ako se │neko dooobro ne pomuci. └─── To mu dodje nesto za Tanjug raspored? Aj' pogledacu ga, pricekaj malo dok mi se smire ispiti.
clipper.765 janko,
> To mu dodje nesto za Tanjug raspored? Aj' pogledacu ga, > pricekaj malo dok mi se smire ispiti. Jeste. I dovoljno je mali da ti ne treba više vremena nego da odgovoriš na 4 poruke u SORu. Nije to operativni sistem, već samo program za konverziju.
clipper.766 bulaja,
│COMMIT mi valjda ne treba, posto program (za sada) ne radi u mrezi. └─── COMMIT ti treba ponekad bez obzira sto se ne radi u mrezi, u ovom slucaju zato sto je baza koju kopiras otvorena pa treba isprazniti bafere pre toga. Inace ne treba kopirati otvorene baze :), ali nije stetno ako uradis commit pre toga, a moze i prvo close pa copy.
clipper.767 ciki,
Ma čoveče, takav defetizam nije u duhu Sezama! Ovako.Možda jesam preterao :-((((, ali sam u pravu, jer sam nekoliko puta naglasavao da mi javlja greske prilikom kompajliranja EXTENDA.INC fajla(Da nemoze da ga nadje ne bi ni prijavljivao greske. Sta mislis o tome.) Znaci nije u pitanju ni putanja ni nesto II, jer imam i SET INCLUDE i PATH i fajlove u istom dir-u. Hvala nbatocaninu za odgovor.nazalost u pravu je. MASM 6.0 nije u potpunosti kompatibilan sa MASM x,x<6, iako ima prekidac /Zm koji kobajagi omogućava kompa, ali to je za neku drugu konf.. Inace morao sam i sam nabaviti neku stariju verziju MASM(Hvala tomi). P.S. Nisam se javljao od 31.8.1992. pa nisam u toku. P.P.S. Hvala ti za utroseno vreme. Pozdrav Ciki!
clipper.768 nbatocanin,
> Imam jednu muku sa poteškoćama u vezi tbrowse objekata. X := TB:RowPos Y := TB:ColPos ACur := {X, 1, X, TB:colCount} ACurC := {X, Y, X, Y} TB:colorRect (ACur, {5,1}) TB:colorRect (ACurC, {2,1}) Ch := InKey(0) TB:colorRect (ACur, {1,2})
clipper.769 toma,
Zna li neko kako da saznam datum uz fajl na disku, iz clipper-a naravno.
clipper.770 ppekovic,
>> Zna li neko kako da saznam datum uz fajl na disku, iz clipper-a >> naravno. Beše jedan programer, nemogu da se setim koji ;))) koji je to rešavao na sledeći način: Sačuva ekran, postavi istu boju fg i bg, zatim pozove dir ime_fajla, pa onda lepo sa ekrana isčita u string datum, i na kraju vrati originalni ekran ;)))). Posle je unapredio algoritam tako sto je preusmerio izlaz u fajl pa čitao iz fajla, tako da nije bilo zatamnjivanja ekrana ;)))) Paya
clipper.771 dvasiljevic,
> Imam jednu muku sa poteškoćama u vezi tbrowse objekata. H V A L A ! Svaka čast nbatocaninu ! Pozdrav ! Veličko
clipper.772 hercog,
**> se pojavila samo kod tebe i niko drugi nije uspeo da je ponovi! :) SORT Pa probaj da u nekom programu napišeš da i izvorna i ciljna datoteka kod sorta budu jedna ista. Videćeš i sam kad posle nekog vremena dobiješ CORUPTION DETECTED, baš zbog tako napisanog sorta... Hercog
clipper.773 ndragan,
/ SELECT source / SORT ON key TO target Itd... zar ne bi mogao da prekrstiš (rename) izvornu pre sorta, pa da tu prekrštenu sortiraš u novu verziju izvorne? Gubi se bar jedno kopiranje.
clipper.774 toma,
■■>> Zna li neko kako da saznam datum uz fajl na disku, iz clipper-a ■■>> naravno. Ha! Evo sad ja znam. Za ostale koje zanima: funkcija FindDate( <DTA> ) biblioteka: Clipper 5.01 Expand Library v2.0 OPS! Pa može i clipper funkcijom ADIR().
clipper.775 bstevan,
Za 5.01 je ok. što si napisao ali za 87' ne važi, neke stvari na primer otvaranje sa SHARED ili pak sa NEW. Konkretno sa 5.01 nema problema sa radom u mreži jer su dodate još niz komandi za olakšani rad u mreži. Kod verzije 87' ide malo teže. I dalje me interesuju iskustva sa radom u mreži u verziji 87'. Kad sam pomenuo literaturu i rad u mreži nisam mislio na 5.00 i 5.01, već na pomenutu verziju 87'. Knjigu koju ti imaš sa "jedrenjakom", to je za clipper 5.00, a ja imam za 5.01 od Alempje Veljovića, i u njoj ima dosta o radu u mreži ali dati primeri ne rade u 87'. ---POZDRAV--- ---BSTEVAN---
clipper.776 fric,
> Zna li neko kako da saznam datum uz fajl na disku, iz > clipper-a naravno. Ako te zanima datum fajla na disku, imaš funkciju directory() koja za zadati fajl/fajlove vraća niz sa informaciojom o imenu, datumu i vremenu kreiranja, dužini, atributima.
clipper.777 fric,
> Kod verzije 87' ide malo teže. čao mi je što ti nisam bio od pomoći. :( Pretpostavljao sam da ima dosta sličnosti između 5.01 i '87 po pitanju mrežnog rada - kad ono jok !
clipper.778 vkrstonosic,
>> Bese jedan programer, nemogu da se setim koji ;))) koji je to >> resavao na sledeci nacin: Jel u QBasicu ? ;)))))
clipper.779 zkrstic,
>**> se pojavila samo kod tebe i niko drugi nije uspeo da je ponovi! > :) SORT > > Pa probaj da u nekom programu napišeš da i izvorna i ciljna datoteka > kod sorta budu jedna ista. Videćeš i sam kad posle nekog vremena > dobiješ CORUPTION DETECTED, baš zbog tako napisanog sorta... Uvešću ja bijenje prisutnih ovde kao obavezan detalj :)))) Aman bre Hercogu, uzmi lepo bilo kakvo uputstvo za Clipper, pa ćeš videti da to jednostavno nije zdravo što radiš. Da sprečim buduću diskusiju (misteriju) Pusti pack i prouzrokuj nestanak struje. Bespovratno će ti nestati i baza ;> Zkr
clipper.780 zkrstic,
> Knjigu koju ti imaš sa "jedrenjakom", > to je za clipper 5.00, a ja imam za 5.01 od Alempje Veljovića, > i u njoj ima dosta o radu u mreži ali dati primeri ne rade u 87'. Staaaaaaaaaaaaaani brajko! Neke stvari ste preskočili ;) U Clipperu 5.01 ima jedna i po nova naredba za rad sa mrežama i to je USE <baza> SHARED. Prostudiraj lepo neki od onih fajlića koji idu uz (FILES.PRG) C87. BTW, najbolje objašnjen rad sa mrežama za ma koji Clipper, je u knjizi sa jedrenjakom, čak primeri rade na oba Clippera, uz možda maaale izmene. Zkr PS. 1. Šta's se uvatio Clipper 87 ko pijan plota? 2. Ko ti uvali onu Alimpijevu knjigu?
clipper.781 zkrstic,
> Za ostale koje zanima: funkcija FindDate( <DTA> ) > biblioteka: Clipper 5.01 Expand Library v2.0 Pošalji bre to na Sezam, kad već ne daš žvake! To je PD ili SH, koliko me pamćenje služi. Zkr
clipper.782 makas,
==> Evo jednog pitanja u vezi rada u mrežnom ==> okruženju, Ako te interesuje baš Clipper '87 onda pogledaj fajlove koji idu uz njega. Treba da postoji fajl network.prg u kome su date funkcije za sve osnovne radnje za rad u mreži (APPEND, REPLACE, USE...). Pozdrav █▀▀▀▀▀▄ ▄▀▀▀█ █▄▀▀ ▄▀▀▀█ ▄▀▀ █ █ █ ▀▄▄ █ █▀▄▄ ▀▄▄ █ ▀▄▄▀▀▄ ▄▄▄ ▄▄▄ ▄▄ ▄▄ ▄▄ ▄ ▄ ▄JILL▄▄▄▄▀
clipper.783 ndragan,
/ rename target.dbf to source.dbf / delete file target.dbf Ovde će da javi da ne postoji target.dbf.
clipper.784 nbatocanin,
Ima li neko neki od sledećih programa: Blinker, FlexFile, SIx driver?
clipper.785 toma,
■■>> Pošalji bre to na Sezam, kad već ne daš žvake! To je PD ili SH, ■■>> koliko me pamćenje služi. Evo <demo verzije> Expand library-a za slucaj da nije PD ili SH !
clipper.786 dejanr,
Da li je neko čuo za nešto što se zove FUNCKYxx.LIB (FUNCKY87, FUNCKY50 itd)? Šta radi i čemu služi?
clipper.787 pjankovic,
Evo rutina za konverziju kodnih rasporeda za CLIPPER. Sve rutine su date u izvornom obliku i dozvoljena je njihova izmjena i prilagođavanje potrebama korisnika. Uključeni su i .OBJ fajlovi za direktno linkovanje u program kao i program TEST za provjeru da li je sve dobro podešeno. Tu je i .LNK fajl kao i uzorak datoteke sa definicijom rasporeda. Svima koji će u svoje programe ugraditi ove funkcije želim puno uspjeha u radu. P.S. Kolika je vjerovatnoća da dužina arhive bude izražena u istim ciframa? :) Je li veća ili manja od vjerovatnoće dobitka prve nagrade u igri "Računara"? :) ukrasclp.arj
clipper.788 janko,
> Da li je neko čuo za nešto što se zove FUNCKYxx.LIB > (FUNCKY87, FUNCKY50 itd)? Šta radi i čemu služi? FUNCKY The ultimate CLIPPER developers tool With FUNCY you can create applications with "look" and "feel" of the future (...itd...) - F. includes over 400 fully optimized functions - Dinamicaly resizable windows - Mouse driven applications with drop down / tear off menus - Emulate dBedit with mousable scrollbars and resizable windows - Read and write arrays to/ from text files - Nested reads with save and restore gets - Set 43 or 50 lines mode with different fonts for EGA and VGA Sve je to proizvod firme dLESKO ASSOCIATES, kojoj je predsednik Dirk Lesko, autor FUNCKY biblioteke. Firma je iz Nju Džrzija. Dirk Lesko je držao kurs "Advanced Assembler Routines" na konferenciji "1990 NANTUCKET DEVELOPER CONFERENCE" u Australiji. Jel' dosta? :)
clipper.789 toma,
■■>> Jel' dosta? :) Kako dosta kad nigde ne videh DEMO tih biblioteka prikačen uz poruku ?
clipper.790 fric,
Rešio sam problem pošto sam ponovo pogledao tekst nbatocanina 'Slike u kliperu' u R70. > Zaglavlje ispišem jednim RUN ('copy logo.prn lpt1 > nul') > > I to lepo radi, ali nikako ne mogu da posle toga nateram > štampač da primi i ispiše ostatak teksta (štampač je ... pa su prvobitno sledile komande > SET DEVICE TO PRINT > SET PRINTER TO cLptG ... E, greška je bila u ovom set printer to cLptG. Kad sam to izbacio, proradilo je. Zašto i kako - ne znam, ali tako stoje stvari.
clipper.791 ratman,
Da li u funkciji DBEDIT() *mora* da se izvrsi korisnicka funkcija ako hocemo da editujemo slogove? Moze li umesto nje da se stavi neka vrednost? (Clipper 5.01) Zasto sledeci program zeza? Naime, polja se edituju kao da string fil sadrzi sva polja, dakle redom (donja linija), a na ekranu izgleda drukcije: Nesto, izgleda ne valja u user-funkciji, ali sta? Ima li neka slicna funkcija koja radi to slicno (BROWSE ne moze da izabere polja)? Evo pgm.-a: use enzymes fil={'datum','ck','ldh'} /* baza inace ima polja: no, datum, vreme, ck, ck1,ck2, ldh,ldh1,ast*/ cls dbedit(10,10,20,70,fil,'dbfunc1') function dbfunc1 parameters pf1,pf2 if pf1=0 return(1) elseif pf1=3 return(0) endif keyval=lastkey() do case case keyval=5 .and. pf1=1 @23,0 say "Pocetak fajla!" return(1) case keyval=23 .and. pf1=2 @23,0 say "Kraj fajla!" return(1) case keyval=27 return(0) case keyval=13 temp=fieldname(pf2) @23,0 say "Nova vrednost"+field(pf2)+"?..." get &temp read return(1) otherwise @18,0 say " " return(2) endcase Pozdrav, Dejan
clipper.792 dejanr,
>> Jel' dosta? :) Hvala :) E sad, jel ima neko ko taj FUNCKY koristi i ima neka iskustva sa njim? Osim jednog Sezamovca koji je sada u Australiji i koji je to koristio u svojim programima, pa se sada ja patim da shvatim šta se tu dešava? ;)
clipper.793 hercog,
**> Aman bre Hercogu, uzmi lepo bilo kakvo uputstvo za Clipper, **> pa ćeä videti da to jednostavno nije zdravo äto radiä. Ma samo sam čoveku objašnjavao da ne sme da koristi sort u istu bazu... Hercog
clipper.794 janko,
> Evo rutina za konverziju kodnih rasporeda za CLIPPER. žestitam Predragu Jankoviću na objavljivanju ovoga paketa! Ovo je PRVI paket koji podržava UKRAS u Kliperu! BTW: Ono što Predrag Janković nije naglasio, rutine su pisane za Kliper 5.0 Konverzija, vremenski najkritičniji deo, radi se pomoću C rutine. Sad imam pitanje: da li je C rutini potrebno da zna dužinu stringa koji dobije iz Klipera 5.0, ili je string koji dobije SIGURNO ograničen sa chr(0) ? Ja sam bio ubeđen da je potrebno da uhvati i dužinu? Druga stva se tiče rutine za konverziju, kojoj mora da se pošalje i adresa tablice. Da li bi se nekako moglo rešiti da se napr. tablica nalazi kao deo statičkih podataka te C rutine, pa da se tamo prepiše jednim pozivom druge C rutine, koja bi išla uz juk? (nadam se da me je neko shvatio? Uputstvo: morate da znate šta je u sorsu o kome pričamo) Onda ne bismo imali poziv jedne kliper rutine, pa poziv C rutine za svaku konverziju?
clipper.795 ndragan,
/ Aman bre Hercogu, uzmi lepo bilo kakvo uputstvo za Clipper, / pa ćeš videti da to jednostavno nije zdravo što radiš. Gore od toga - ponekad mu i uspeva. Kako? Misterija...
clipper.796 banex,
>> Blinker Ja imam neki blinker koji ide uz flipper 5.0. Ako je taj viči da ti pošaljem demo :) CU! -BANE-
clipper.797 hercog,
**> Gore od toga - ponekad mu i uspeva. Kako? Misterija... A äta mi to uspeva? :)) Hercog
clipper.798 janko,
> A äta mi to uspeva? :)) > > Hercog Naprimer, da promašiš raspored :)
clipper.799 d.petrovic,
> Naprimer, da promašiš raspored :) Ma to su ovih dana menjali (valjda je to u pitanju) Moj mikro i Latin 2 na Sezamu pa su mu slovca zbog toga poludela.
clipper.800 ciki,
Ho! Koliko se secam(od kada sam presao na 5.01 ne radim sa DBE.fun.) nije potrebno navesti funkciju, cak i samo dbedit() cini mi se da ce listati datoteku preko celog ekrana. U svakom slucaju probaj pa javi kako ide. Pozdrav Ciki!
clipper.801 dejanr,
>> Ma to su ovih dana menjali (valjda je to u pitanju) Moj mikro i Latin 2 na >> Sezamu pa su mu slovca zbog toga poludela. Ništa ta promena nije mogla smetati, tu je samo promenjeno IME kodnog rasporeda, a svakome su ostala izabrana slova. Dakle, hercog je zadao sebi pogrešan set code... ili je to u vezi one krađe passworda
clipper.802 hercog,
**> Dakle, hercog je zadao sebi pogrešan set code... ili je to u vezi one **> krađe passworda Rekao bih da je ona osoba koja mi je maznula password napravila haos što se coda tiče... Hercog
clipper.803 vili,
Neko je trazio trig.funkcije za Clipper? Evo trig & drugih funkcija za Clipper. sinus(x) - sinus od x (rad) tang(x) - tangens od x (rad) cosin(x) - kosinis od x (rad) ln(x) - prirodni logaritam od x ln10(x) - dekadni logaritam od x asinus(x) - arkus sinus od x acosin(x) - arkus kosinus od x atang(x) - arkus tangens od x sinush(x) - hiperbolicki sinus od x cosinh(x) - hiperbolicki kosinus od x tangh(x) - hiperbolicki tangens od x power(x,y) - x na y rnd() - slucajni broj od 0 do 1 Linkuj sa : RTLINK FI ..,..,..,mat LIB ..,..,LLIBCA U prilogu: MAT.OBJ. mat.zip
clipper.804 nbatocanin,
Ne znam da li ste primetili jednu zgodnu osobinu CLD-a: Call Stack. žudna mi čuda - daje vam redom spisak aktiviranih procedura, reći ćete. A da li znate da sa <Tab> možete da menjate aktivan prozor i da birate prozor za listing, za komande, Watch prozor, pa i prozor za Call Stack? I to je "čudna mi čuda" - dobijete kursor i možete ga pomerati po spisku procedura. Uradite to i prijatno ćete se iznenaditi - pomeranjem se listing menja, tj. dobija se baš onaj deo listinga sa koga je usledio poziv te funkcije!
clipper.805 bstevan,
-->U Clipperu 5.01 ima jedna i po nova naredba za rad sa mrežama i to -->je USE <baza> SHARED. Ova tvoja tvrdnja nije istina.Zaviri u pomenutu knjigu ali sad malo detaljnije. -->1. Šta's se uvatio Clippera 87 ko pijan plota? A jel to tebi smeta, šta mu fali, još dobro služi. -->2. Ko ti uvali onu Alimpijevu knjigu? Šta joj fali, kupio sam zato da vidim razlike izmedju 5.00 i 5.01 pa da donesem odluku šta je bolje od te dve stvari.Moja odluka je 5.01 zbog niz novih boljih rešenja u 5.01 . ---POZDRAV--- ---BSTEVAN---
clipper.806 bstevan,
-->Treba da postoji fajl network.prg u kome su date funkcije za sve osnovne radnje za rad u mreži (APPEND, REPLACE, USE...). Taj fajl network.prg nemam ako neko ima da li bi mi poslao. MAKAS, hvala na informaciji ! ---POZDRAV--- ---BSTEVAN---
clipper.807 toma,
Pozdrav Clipper-aši ! Znate li kako u Clipper-ovom ALERT-u napisati dva reda poruke, jedan ispod drugog ? Ja znam ! Evo primera: text:="Ovo je prvi,;a ovo drugi red." * └> Eto nama separatora ! opcije:={" Super "," Ne valja "} a:=alert(text,opcije) to je to. Pozdrav from Toma. ps. Ako ste ovo znali a niste rekli onda nije u redu :)))
clipper.809 ndragan,
/ A äta mi to uspeva? :)) Ako me sećanje ne vara, počelo je od one priče o sortu u istu datoTETKU (max, jel sad vidiš na šta sam mislio) iz koje se sortira... pa je stiglo dovde. žak više ni ne znam da li se odnosilo na tebe - jednostavno nisam odoleo šlagvortu. Bilo bi neskromno da očekujem sam od sebe da pamtim trideset lanaca poruka i da kod svakog citata znam kako je sve počelo. Korisnik SORa u glavi ima skraćenu verziju FIFO steka. More, samo da smo mi živi i zdravi, a svaki programer ionako mora da uništi dva mega podataka godišnje :)
clipper.810 ndragan,
/ sinus(x) - sinus od x (rad) Šta, kliper nema ugrađenu trigonometriju? Svašta. BTW, danas smo imali dobar bag u svom generatoru za foks. Maska koja se generisala zvala se log.fmt, i generišu se programi log_m, log_u itd, i pomoćne funkcije log1, log2 itd. Prilikom pozivanja 'get ... valid ... .and. log1()' javi 'invalid number of parameters'. Kolega koji je radio se blago zabezeknuo. Stao mu mozak. Posle nekog vremena smo ukapirali da je foks ono 'log1()' shvatio kao 'log10()' ugrađenu funkciju (foks dozvoljava skraćivanje naredbi i funkcija do 4 znaka) koja _obavezno_ ima parametre :)
clipper.811 janko,
Ako još niste skinuli NDraganove rutine za Ukras na Foxu, koje se nalaze u SEZAM.3:yu.kod, skinite ih i uporedite sa onime što biste morali da napišete na Kliperu! Između ostalog, program je i sjajna reklama za Fox. :)
clipper.812 nbatocanin,
Nedavno sam dobio neke diskete sa veoma interesantnim demo programima firme QBS Software: SNTXDEMO.COM SubNtx() Demonstration OVLAYDEM.COM OverLay() Demonstration SCOMMDEM.EXE SilverComm Demonstration GFORCE_W.EXE GFORCE world map Demonstration GFORCE.EXE GFORCE Big demonstration see GFREAD.ME too FUNVDEMO.EXE FUNCky Summer '87 Demonstration CFTSDEMO.EXE Fast Text Search Demo DRSWITCH.EXE Dr Switch ASE demo SCRIPTON.EXE Scripton printing demo BLI15DEM.EXE Blinker 1.5 Demonstration EDDEMO.EXE ED programmer's editor demo BABELDEM.EXE BabelFish Paradox Data Driver demo NETLIB.EXE NetLib demonstration SPANTDEM.EXE Silverpaint Demonstration Ima veoma lepih stvari: alternativni indeksi, pravljenje rezidentnih Clipper programa, grafičke biblioteke, komunikacije, editor, itd. Uglavnom se sve odnosi na Clipper, ali ima i za ostale xBase proizvode. Sve skupa ima oko 2.5M, pa ako ima zainteresovanih, mogu poslati na Sezam.
clipper.813 bulaja,
│Sad imam pitanje: da li je C rutini potrebno da zna duzinu │stringa koji dobije iz Klipera 5.0, ili je string koji dobije │SIGURNO ogranicen sa chr(0) ? Ja sam bio ubeden da je potrebno │da uhvati i duzinu? └─── Clipper ne koristi zero-terminated stringove, zato treba koristiti funkcije _parclen() i _retclen() za odredjivanje duzine stringa.
clipper.814 bulaja,
│Sve skupa ima oko 2.5M, pa ako ima zainteresovanih, mogu poslati │na Sezam. └─── Mislim da je preveliko, pogotovo zato sto je rec o obicnim demo (ne previse korisnim) verzijama. Btw da li je SubNTX isti onaj koji (u shareware verziji sa kojom se moglo ponesto i uraditi) stoji nakacen uz neku od poruka u ovoj temi?
clipper.815 d.petrovic,
Ă> Ima veoma lepih stvari: alternativni indeksi, pravljenje Ă> rezidentnih Clipper programa, grafičke biblioteke, komunikacije, Ă> editor, itd. Uglavnom se sve odnosi na Clipper, ali ima i za ostale Ă> xBase proizvode. Šalji nego šta! Samooooo, baš 2,5 M bi bilo mnogo, proberi ti korisnije stvari od toga i šalji njih.
clipper.816 pstojanovic,
Pozdrav, trebalo mi je zbog specificnih menija, da ugradim neke f-je u kliperu koje bar za sada kliper nema. Evo svima na uvid, zajedno sa demo-programom, pa kome treba neka koristi. Funkcija PEEK(Segment,Offset) -> NUMERIC (BYTE) Segment,Offset : NUMERIC (WORD) Vraca vrednost sa adrese odredjene sa SEGMENT:OFFSET Procedura POKE(Segment,Offset,Value) Segment,Offset : NUMERIC (WORD) Value : NUMERIC (BYTE) Menja vrednost na adresi SEGMENT:OFFSET u VALUE Procedura PUTCOLOR(y1,x1,y2,x2,Color) y1,x1,y2,x2,Color : NUMERIC (BYTE) Menja kolor atribut na prozoru definisanom sa Y1,X1,Y2,X2 u COLOR. Funkcija GETCLR(Foreground,Background) -> NUMERIC (BYTE) Foreground,BackGround : NUMERIC (BYTE) Vraca vrednost kolor atributa za definisanu boju i pozadinu, zgodno za koriscenje u PUTCOLOR (Color); tj vrsi racunsku operaciju Background*16+Foreground. Funkcije AAD, AOR i AXOR (Vrednost1,Vrednost2) -> NUMERIC (BYTE) Vrednost1,Vrednost2 : NUMERIC (WORD) Vraca vrednost aritmetickog AND,OR ili XOR-a. Funkcija SCRCHAR(y,x) -> NUMERIC (BYTE) y,x : NUMERIC (BYTE) Vraca vrednost karaktera sa ekrana na koordinatama Y,X. spex50.arj
clipper.817 pjankovic,
> Clipper ne koristi zero-terminated stringove, zato treba > koristiti funkcije _parclen() i _retclen() za odredjivanje > duzine stringa. žini mi se da ovo nije baš sasvim tačno. Ali da mi ne bi vjerovali na riječ evo citata iz knjige Clipper 5.0, Referentni priručnik, Computer Hit Biblioteka, Sarajevo: .............................................................................. char *_parc(int br_poz,...) =========================== Funkcija _parc() se koristi za prikupljanje znakovne vrijednosti koja je prenesena kao parametar iz Clippera. unsigned int _parclen(int br_poz) ================================= Funkcija _parclen() vraća logičku dužinu znakovne vrijednosti koja je prenesena kao parametar iz Clippera. Bajt koji sadrži null terminator se ne ================================ uključuje u logičku dužinu. void _retc(char *string) ======================== Funkcija _retc() se koristi za vraćanje znakovne vrijednosti u Clipper. Kasnije, kada vaša asemblerska ili C funkcija vrati ovu vrijednost, ona će biti raspoloživa i u Clipper programu. Funkcija _retc() određuje logičku dužinu znakovne vrijednosti tako što traži znak NULL u stringu. Ako vam je potrebno =================== vraćanje binarnih podataka koji mogu sadržavati i NULL znak, koristite funkciju _retclen(). void _retclen(char *string, unsigned int duzina) ================================================ Funkcija _retclen() se koristi za vraćanje znakovne vrijednosti u Clipper. Kasnije kada vaša C ili asemblerska funkcija vrati ovu vrijednost u Clipper, ona se može koristiti kao i svaka druga vrijednost. ... Obzirom na to da funkcija _retclen() omogućava navođenje eksplicitne logičke dužine znakovne vrijednosti, string koji navodite ne mora na svom kraju imati NULL i može sadržavati NULL znakove. ............................................................................... Uostalom, imate izvorni kod mojih funkcija za konverziju kodnih rasporeda za Clipper pa provjerite kako to izgleda u praksi. :)
clipper.819 bulaja,
││Clipper ne koristi zero-terminated stringove, zato treba koristiti ││funkcije _parclen() i _retclen() za odredjivanje duzine stringa. │└─── │Cini mi se da ovo nije bas sasvim tacno. Ali da mi ne bi vjerovali │na rijec evo citata iz knjige └─── Dzabe ti citat (koji btw ne potvrdjuje ni moje ni tvoje misljenje :), ali Clipper sigurno NE koristi nul-terminated stringove. Najbolje ces to proveriti tako sto ubacis NUL u sred nekog stringa - Clipper ga tretira kao i bilo koji drugi znak, tj. ne koristi ga kao terminator. │Uostalom, imate izvorni kod mojih funkcija za konverziju kodnih │rasporeda za Clipper pa provjerite kako to izgleda u praksi. :) └─── Pretpostavljam (nisam jos pogledao) da nece raditi O;> ukoliko im prosledis string koji sadrzi i NUL.
clipper.820 dpaun,
Za one koji će (jednog dana) koristiti Clp za upravljanje tekstualnom bazom podataka, pojaviće se delikatan problem prilikom kucanja teksta, odnosno korišćenja MemoEdit() funkcije. Obrada obimnijeg teksta skopčano je sa vremenom, samim tim duže smo izloženi mogućnosti da nestane struja i slično. MemoEdit() obrađuje tekst u memoriji, a na disk (odnosno u Bazu.DBT) snima ga tek kad dobije kod CHR(23) /CtrlW/. Pošto svako snimanje MemoNiza u DBT bazu ovu povećava za više od jedne veličine MemoNiza, to DBT raste ko kvasac. Zadatak je, dakle, omogućiti povremeno spremanje MemoNiza u neku TMP dadoteku, bez izlaženja iz MemoEdit(). Uz pomoć štapa, kanapa, korisničke funkcije, dva tastera i malo homoljske mađije - ja sam to rešio ovako (ovo je samo skica, naravno): FUNC ObradaMema USE Baza Txt := MemoPolje Kuci := Moze := .F. SET KEY K_F4 TO SaveTmp SET KEY K_F3 TO SaveMem DO WHIL !Kuci Txt := MemoEdit( Txt, 0,0,23,79,.T.) nKey := LASTKEY() DO CASE CASE (nKey == 23 .AND. Moze) REPL MemoPolje WITH Txt Kuci := .T. OTERW ENDC ENDDO FUNC SaveTmp KEYBOARD CHR(23) MEMOWRIT( Putanja + 'DosIme.Tmp', Txt ) Moze := .F. FUNC SaveMem KEYBOARD CHR(23) Moze := .T. /* Ako u toku rada želimo do tada otkucani tekst da sačuvamo u nekom katalogu specificiranim pod 'Putanja', a u fajlu 'DosIme.Tmp' - pritisnemo DVA PUTA(!) F4 ... Kad se rad završi, editor napuštamo sa F3 umesto standardnim CtrlW. Ovo rešenje, braćo, izgleda mi dobro: mogu da čuvam tekst u toku rada bez bojazni od nestanka struje, i bez straha da će mi DBT narasti ko Avala. Nisu mi jasne samo dve stvari: 1. Zašto se mora taster F4 pritisnuti 2 puta (ako se pritisne jednom, zapamti samo pretposlednje stanje!), //probao sam da 'dupliram' chr(23) u proceduri, i opet ništa), i 3. Da li je sve ovo moglo i drugačije, a? PS. Ako se ispostavi da nije, dajte čoveku aplauz ... */ dPaun.Tmp
clipper.821 dvokshi,
> 1. Zašto se mora taster F4 pritisnuti 2 puta (ako se > pritisne jednom, zapamti samo pretposlednje stanje!), > //probao sam da 'dupliram' chr(23) u proceduri, i opet To se desava zato sto Memoedit kopira promenljivu u neku svoju memoriju i nju editira. Kad se editiranje zavrsi sa CTRL-W promenljiva se zamenjuje novim tekstom. Kad se pozove SaveTmp (u toku editiranja teksta) promenljiva TXT jos ima stari tekst, a zamenjuje se novim tek posto SaveTmp vrati kontrolu Memoedit -u, i CHR(23) izaziva izlazak iz Memoedit -a. Zato sledeci pritisak na F4 snima tacan tekst. > 3. Da li je sve ovo moglo i drugačije, a? Pa da probam FUNC ObradaMema USE Baza Txt := MemoPolje Kuci := Moze := .F. DO WHIL !Kuci Txt := MemoEdit( Txt, 0,0,23,79,.T.,'savemem') if lastkey()=23 if Moze replace memopolje with txt kuci = .t. else MEMOWRIT( Putanja + 'DosIme.Tmp', Txt ) endif endif ENDDO return NIL FUNC Savemem local key := lastkey() do case case key = K_F4 moze = .f. keyboard chr(23) case key = K_F3 moze = .t. keyboard chr(23) case key = K_CTRL_W moze = .t. enddo return 0 Nisam testirao ali mislim da bi to bilo to. U grubim crtama. d.v.
clipper.822 pjankovic,
>> Clipper ne koristi zero-terminated stringove, zato treba >> koristiti funkcije _parclen() i _retclen() za >> odredjivanje duzine stringa. > Dzabe ti citat (koji btw ne potvrdjuje ni moje ni tvoje > misljenje :), ali Clipper sigurno NE koristi > nul-terminated stringove. Najbolje ces to proveriti tako > sto ubacis NUL u sred nekog stringa - Clipper ga tretira > kao i bilo koji drugi znak, tj. ne koristi ga kao > terminator. Ja nisam htio da demantujem tvoje mišljenje da Clipper ne koristi NULL terminated stringove (sa kojim se, uzgred rečeno, slažem). Kada se takav string prenese u C funkcijom _parc() on ima NULL terminator. Drugačiji je slučaj sa stringovima u Clipperu koji sadrže NULL. Oni se u C prenose funkcijom _parclen() koja kao argument pored dotičnog stringa prima i njegovu dužinu, a sve to da ne bi morala da je sama određuje. > Uostalom, imate izvorni kod mojih funkcija za konverziju > kodnih rasporeda za Clipper pa provjerite kako to izgleda > u praksi. :) > Pretpostavljam (nisam jos pogledao) da nece raditi O;> > ukoliko im prosledis string koji sadrzi i NUL. Pravo da ti kažem, nisam probao sa takvim stringovima, ali dijelim tvoju pretpostavku. Pitanje je samo koliko Clipper programa na ekran ili na štampač šalje stringove koji u sebi sadrže NULL.
clipper.823 bulaja,
│Pitanje je samo koliko Clipper programa na ekran ili │na stampac salje stringove koji u sebi sadrze NULL. └─── Na ekran tesko, ali za stampac postoji dosta kontrolnih kodova koji sadrze i NUL. Naravno, nije nikakav problem njih slati odvojeno (nekonvertovano) od ostalog teksta.
clipper.824 nbatocanin,
> Btw da li je SubNTX isti onaj koji (u shareware verziji sa kojom se > moglo ponesto i uraditi) stoji nakacen uz neku od poruka u ovoj temi? Ne znam šta ima u porukama. Ja imam v1.20, nisam detaljnije isprobavao. Dat je OBJ, a ništa ne piše o ograničenjima.
clipper.825 andrade,
Imam jedno pitanje za Clipper programere: proletos sam radio jednu aplikaciju na Clipper-u 5.0 i, s obzirom da nisam od onih koji poznaju sve njegove detalje, ovo mi je oduzelo dosta vremena pa sam na kraju i odustao od resavanja i ostavio to takvo kakvo je. Radi se o biblioteci funkcija OMENU za rad sa menu-ima. Ona kontrolise ESC taster i ako ga korisnik pritisne - odustaje od zapocete akcije, sve do najnizeg nivoa na meniju. Problem je u tome sto kod odustajanja od akcije, na nivou MenuBar-a, ESC osim prekida zapocete procedure startuje poslednju koriscenu opciju MenuBar-a pre te prekinute. Pokusavao sam razne stvari da bih ovo sprecio i nije mi uspelo. Ako neko zna sta je trebalo uraditi neka pomaze! Thanks!
clipper.826 ppekovic,
>> Problem je u tome >> sto kod odustajanja od akcije, na nivou MenuBar-a, ESC osim >> prekida zapocete procedure startuje poslednju koriscenu >> opciju MenuBar-a pre te prekinute. Pošalji deo koda gde pozivaš procedure menubar-a. Paya
clipper.827 dpaun,
>> Nisam testirao ali mislim da bi to bilo to. U grubim crtama. Hvala na objašnjenju i ideji. Kad uspem da ideju provedem kroz moju mamutsku 'glavnu petlju' i monstruoznu korisničku funkciju, javiću. Ostalima savetujem da ideju negde kovertiraju, jer kad se tržište zasiti knjigovodstveno-baknarsko-maloprivredničko-itakodaljističko artikulisanih softverskih proizvoda, doći će na red, nadam se, i zadovoljenje potreba za skladištenje umnih proizvoda u vidu obimnijih tekstualnih zapisa. Onda će problem na koji sam ukazao morati da se stavi na dnevni red ... Sada bih postavio sledeće pitanje koje se logički nameće: ako MemoEdit kopira 'svoj' niz u taj novi niz, kako tom prilikom stvar stoji sa memorijom? Dali taj novi niz, dok se ne smesti na disk, zauzima novu količinu radne memorije, što će reći da se mora predvideti i mogućnost da memorija može da 'presuši' u nekim trenucima ... otPozdrav, dPaun.
clipper.828 dpaun,
Problem: - Kada u GET var PICT "!" naiđu YU slova, ostaju 'mala', sem ako, blagovremeno nije uključen CapsLock. Pitanje: - Postoji li neko 'gotovo' rešenje za ovo, ili se mora napisati posebna funkcija koja će pročešljati uneti string u potrazi za malim YU kodovima, pa secati, zamenjivati, krpiti, lepiti ... dPaun.Cap
clipper.829 bulaja,
│Problem: │ - Kada u GET var PICT "!" naidu YU slova, ostaju 'mala', sem ako, │ blagovremeno nije ukljucen CapsLock. │Pitanje: │ - Postoji li neko 'gotovo' resenje za ovo, ili se mora napisati posebna │ funkcija koja ce procesljati uneti string u potrazi za malim YU │ kodovima, pa secati, zamenjivati, krpiti, lepiti ... └──── Preko PICTURE ces tesko (nikako :) uspeti da napravis neki YuUpper, ali mozes npr. pre READ da stavis SETKEY ( <malo slovo>, { || KEYBOARD <veliko slovo>} ) i tako redom za svih pet nasih malih slova. Posle READ samo ponisti ovo dodeljivanje funkcije tasterima.
clipper.830 ndragan,
/ biste morali da napišete na Kliperu! Između ostalog, program je / i sjajna reklama za Fox. :) Očekujem sanduk šampanjca od Foks Softvera za ovo, čim prođe embargo :). Obećavam da ću izjaviti da je '92 bila jako dobra godina.
clipper.831 kanda,
>> Problem: >> - Kada u GET var PICT "!" naiđu YU slova, ostaju 'mala', sem ako, >> blagovremeno nije uključen CapsLock. >> >> Pitanje: >> - Postoji li neko 'gotovo' rešenje za ovo, ili se mora napisati >> posebna funkcija koja će pročešljati uneti string u potrazi za malim >> YU kodovima, pa secati, zamenjivati, krpiti, lepiti ... Svojevremeno sam radio nesto u smislu teranja klipera da radi sa nasim slovima -> u biblioteci CLIPPER.LIB postoji modul NATION u kome su koncentrisane 'nacionalne specificnosti' ; prepravkom ovoga se postize da kliper smatra YU slova za *slova* a ne za 'kuke i kvake', da pravilno poredi, sortira i indeksira po nasoj abecedi, da koristi nasa imena dana i meseci itd. Problem je u tome sto je resenje ocigledno prilicno prljavo - iako sve radi kako treba, nesto mi se nikako ne da da to definitivno ugradim u CLIPPER.LIB. Ako ima sezamovaca koji bi hteli da sve to testiraju i ukazu na eventualne bagove, nek se prijave ovde. Usput, probajte ? VERSION(1). Kod mene daje "Clipper (R) 5.01 Rev. 1.29 ASCII".
clipper.832 bulaja,
**** new file **** \ibmpc\program\ clipgr21.zip (150 Kb) Clip-Graf 2.1, graficka biblioteka za Clipper 5.x/S87 U direktorijumu je ranije vec bila verzija 1.2. Promene u odnosu na nju su: 1.2A Tried to prevent a user from making filled rectangle go off the screen. When this happens, the computer would lockup. 06/29/90 1.2B Change of address in the opening screen. Added g_col(), g_row(), g_xpos(), g_ypos() to get the text row col or pixel position of the present cursor location. 01/01/91 2.0 Added read and write PCX formatted image files capability. Added additional routines to check video equipment and status. 03/01/91 2.1 Fixed some problems with PCX information gathering functions. Separated the libraries for S87 and Ver: 5.0. Added screen dump utility function that supports Epson, Toshiba, HP laser and other printers.
clipper.833 janko,
> / biste morali da napišete na Kliperu! Između ostalog, > program je / i sjajna reklama za Fox. :) > > Očekujem sanduk šampanjca od Foks Softvera za ovo, čim > prođe embargo :). Obećavam da ću izjaviti da je '92 bila > jako dobra godina. :) Dok nam ne prođe embargo, da li si primetio da si postao član grupe UkrasPro (Ukras programeri) ? :) Jesi li pročitao priču pisanu pre nego što si učlanjen?
clipper.838 nbatocanin,
> Ako još niste skinuli NDraganove rutine za Ukras na Foxu, > koje se nalaze u SEZAM.3:yu.kod, skinite ih i uporedite sa > onime što biste morali da napišete na Kliperu! Između > ostalog, program je i sjajna reklama za Fox. :) Zaista mi nije jasno na osnovu čega to kažeš. Pregledao sam ovaj program i čini mi se da sve osim zaista zgodne funkcije ChrTran postoji i u Clipper-u.
clipper.839 andrade,
*> Posalji deo koda gde pozivas procedure menubar-a. Evo, saljem ti source OMENU.PRG i dva demo programa koji ilustruju mogucnosti ovog menu sistema. Negde u programu se, osim odustajanja od tekuce operacije izvrsava prethodno pozvana, sto meni nikako nije odgovaralo, ali nisam to uspeo da ispravim. Ako te ne mrzi, pokusaj da pronadjes sta treba ispraviti, ali nemoj mnogo da se maltretiras oko toga. Hvala ti! omenu.zip
clipper.840 janko,
> Zaista mi nije jasno na osnovu čega to kažeš. Pregledao > sam ovaj program i čini mi se da sve osim zaista zgodne > funkcije ChrTran postoji i u Clipper-u. Izvini na mom nedovoljnom poznavanju 5.0 verzije, ali Summer 87 nema ni fgets, (učitavanje linije iz tekst fajla). I to bi moralo da se malo 'izmišlja.' U ovom konkretnom slučaju i ono 'učitavanje parčeta' što ima Kliper bi radilo posao, ali... A nepostojanje ChrTran, je, inače, primoravalo na korišćenje C-a ili mašinca u Kliper programu, samo da bi bilo razumno efikasno korišćenje rutine, a već tako nešto je dovoljno da me 'zaboli glava.' Što opet ne znači da ne koristim par takvih rutina koje sam sam napisao, ali... Za ovu primenu već samo postojanje ChrTran je dovoljno značajno... Priznajem da ne poznajem dobro Kliper 5.0, ni približno kao ti, niti Fox približno kao NDragan. Ali, K.5.0 me i dalje nije ubedio. O Fox-u samo čujem, kada nešto treba, 'ima i to.' A o K.5.0 'to nema, ali, ima klase koje to nisu i tako sjajan novi način za zamenu dbedit.'
clipper.841 ndragan,
/ kodovima, pa secati, zamenjivati, krpiti, lepiti ... Ma treba to samo prelemiti. Ako ne upali, veći čekić.
clipper.842 dkalaba,
Da li neko zna šta znači kada se pod UNIX-om pokrene VP/Xi i startuje program (konkretno pisan u Clipper-u) a na ekranu se pojavi: redir 1107 comitt ?
clipper.843 kanda,
>> ubedio. O Fox-u samo čujem, kada nešto treba, 'ima i to.' A o >> K.5.0 'to nema, ali, ima klase koje to nisu i tako sjajan novi >> način za zamenu dbedit.' I ja se slazem sa ovim, uz par primedbi ;) : "" K.5.0 'to nema (1)(2), ali, ima klase koje to nisu (3) i tako sjajan novi "" način za zamenu dbedit (4).' (1) ali se moze napisati u C-u za <4 minuta (2) sto u foxu ne moze (3) i koje fox nema (4) sto fox nema
clipper.844 bulaja,
U \IBMPC grani otvoren je poseban CLIPPER direktorijum. U njega je prebacen deo datoteka koje su bile u PROGRAM direktorijumu, a bice jos nekih novih stvari ovih dana.
clipper.845 ndragan,
/ Dok nam ne prođe embargo, da li si primetio da si postao član / grupe UkrasPro (Ukras programeri) ? :) Jesi li pročitao priču Izem ti SOR - ne videh nijednu poruku iz grupe. Pročitaću ovih dana.
clipper.846 bulaja,
**** new file **** \ibmpc\clipper\ expand2.zip (94 Kb) Clipper 5.01 Expand Lib v2.0, biblioteka raznih funkcija Spisak funkcija koje se nalaze u ovoj biblioteci je prikacen uz poruku.
clipper.847 gristic,
Pisci (obično) prepoznaju svoje tekstove. A šta je sa programerima? Da li i oni mogu da prepoznaju sopstveni program nakon nekoliko godina? Pred vama je izvod iz jednog programčića od pre par godinica, a pisao ga je jedan od eminentnijih korisnika Sezama. Ako prepozna čik nek' se javi, neću mu ništa. ;) (u programu nisam nigde video (c) Copyright ili nešto slično, pa pretpostavljam da ovo nije kažnjivo O;) . . . do pootvaraj * * sam glavni meni * do while .t. clear screen č 1, 6 to 3, 72 double č 2, 24 say " APLIKACIJA FINANSIJSKOG POSLOVANJA" č 4,6 to 12,52 č 5,8 prompt "1 RAD SA MATIžNIM DATOTEKAMA "; message 'unos, pregled i ispravke podataka o zadrugarima'; + ' i dobavljačima' č 6,8 prompt "2 OPŠTA UPUTSTVA ZA RAD "; message 'kratko uputstvo za operatera' č 7,8 prompt "3 KNJIčENJE "; message 'unos promena' č 8,8 prompt "4 KONTROLE, PREGLEDI, KARTICE "; message 'razni pregledi i izveštaji' č 9,8 prompt "5 REZERVNE KOPIJE DATOTEKA "; message ' snimanje i užitavanje rezervnih kopija ' č 10,8 prompt '6 REĐE IZVOĐENE OPERACIJE '; message 'godišnje obrade, ažuriranje matičnih datoteka itd' č 11,8 prompt "0 povratak u operativni sistem " menu to g_meni * * kad budeš dodavao opcije povećaj ovo modulo * g_meni = g_meni % 7 dalje = .t. izb = ' ' r1 = g_meni + 5 do case case g_meni= 0 close all return case g_meni = 1 g1_meni = 1 . . . * * izmena tekućeg sloga * set index to xmatbr,prezime clear screen if .not. un_mbr() č 23, 1 say 'nema ga' wait wtmsg to kelner else do zad clear gets if da_ne("da se menja (da/ne)?",'n') do zad read replace z->prez with yuupper(z->prez) č 23, 1 say "ok. izmenjeno" clear wait wtmsg to kelner izmene = .t. endif endif . . . ******************************************************************************* procedure knal clear screen store 0 to rbr, kzar,uc,ul,kdug,kpot,oldnal, brst,zbirvd, ndug, npot store .f. to zdug, zpot, ddug, dpot locate for &filteriska set filter to &filteriska go top . . . wait "nema više"+wtmsg to kelner set filter to return * ******************************************************************************* . . . case polje = 'KELNER' .or. polje = '' sta = 'žEKANJE' htxt = ; 'kad se pojavi poruka ' + wtmsg + ' u donjem '; + crlf + 'redu, znači da je operacija gotova; program '; + crlf + 'čeka da operater pogleda rezultate. čekanje '; + crlf + 'se prekida pritiskom na bilo koji taster na '; + crlf + 'tastaturi ili mišu' otherwise htxt = "pomoćni tekst za ovo polje joć nije napisan"; + crlf + 'rutina:' + rutina + ' polje: ' + polje endcase . . . *:EOF Ima li "sumnjivog liceta" ? ;) Napomena: namera nije da se neko diskredituje, već *isključivo* i *samo* ono što piše na početku poruke.
clipper.848 bulaja,
│Spisak funkcija koje se nalaze u ovoj biblioteci je prikacen uz poruku. └─── Whoops, zaboravih da okacim file :). Here it is... expand52.lst
clipper.849 nboskovic,
*> Izem ti SOR - ne videh nijednu poruku iz grupe. Pročitaću *> ovih dana. Pa ako nije bilo poruka od kad si učlanjen nije ni čudo da ih nisi video u SOR-u. (c) klap nikola
clipper.850 albor,
Možda nekom zatreba... Pozdrav, Boris clipindt.zip
clipper.851 ppekovic,
>> Možda nekom zatreba... >> Pozdrav, Boris >> ----------------------------------------------- 5.850 --- >> ** Uz poruku 'clipindt.zip' (12987 bytes) Uz poruku je program za "nazubljivanje" clipper programa. Takođe, arhiva sadrži i makroe za dBase koji pozivaju program za nazubljivanje za tekuci .prg. Program je pisao moderator clipper konferencije na BIX-u irae. Sam je u malom doc-u napomenuo da program možda neće raditi kako treba sa linijama dužim od 255 karaktera- Paya
clipper.852 andrejl,
>│ Napomena: namera nije da se neko diskredituje, već >│ *isključivo* i *samo* ono što piše na početku poruke. Jednom prilikom gledam neki moj "istorijski" program, a da prethodno nisam primetio da je moj u gomili nekih sourceva i komentarišem: "koje gluposti, čemu ovo služi" i sl. :), a kad sam shvatio da je program moj sve je dobilo neki novi smisao :) bye, andrejl
clipper.853 toma,
■■>> Uz poruku je program za "nazubljivanje" clipper programa. E, a uz ovu poruku je utility koji nazubljuje sve .prg u tekućem dir-u i ta samo po potrebi. Program je, naravno, rađen na Clipper-u (5.01), a autor sam lično ja! Pozdrav from Toma. tab.zip
clipper.854 ndragan,
/ "" način za zamenu dbedit (4).' / (4) sto fox nema A čemu služi DBEdit? Jel' to nešto kao brauz? / (1) ali se moze napisati u C-u za <4 minuta I onda bih morao da učim C, pa da nabacim neki kompatibilan (?) C kompajler, i da dobijenu stvar obaška testiram, i da ne zaboravim da je ubacim u mejkfajl ili gde to već ide, i kad prođem kroz to sve onda se zaista svodi na manje od 4 minuta, što je i dalje mnooogo više od 10 sekundi (koliko mi u foksu treba dok skoknem do helpa da nađem sintaksu za ređe korišćene naredbe), i plus dodatnih pet minuta za testiranje. Zanima me, zaista, koliko kliperašima treba dok ubace novu rutinu (recimo, dodavanje jedne kontrole datuma u valid) pa dok istestiraju kako radi? Onako, u minutima.
clipper.855 toma,
■■>> Zanima me, zaista, koliko kliperašima treba dok ubace novu rutinu ■■>> (recimo, dodavanje jedne kontrole datuma u valid) pa dok istestiraju ■■>> kako radi? Onako, u minutima. Sve zavisi od dužine programa. Recimo, program od nekih 400 linija, kompajliranje + linkovanje = 21 sec (286/16) i onda na to dodaš onih tvojih 5 za test :))) Pozdrav from Toma. ps. Naravno, linkovanje sa Rtlink-om i bez ram-diska.
clipper.856 vili,
Postoji li nacin da se .LIB pretvori u .PLL?
clipper.857 nbatocanin,
> Summer 87 nema ni fgets 5.0 ima FGets i slične rutine date kao demo program (FILEIO.PRG). > Ali, K.5.0 me i dalje nije ubedio. O Fox-u samo čujem, kada nešto > treba, 'ima i to.' A o K.5.0 'to nema, ali, ima klase koje to nisu i > tako sjajan novi način za zamenu dbedit.' Tu postoji više stvari: Prvo, koncepcije Clipper-a i Fox-a su totalno različite. Fox ide na zaokružen proizvod visokih performansi koji sadrži sve što će korisniku zatrebati. Tu je i integrisana okolina, i sistem menija i još dosta dobrih stvari. Uzmeš i imaš sve što ti treba i to vrlo brzo. Odlična je i prenosivost na druge sisteme - očekuje se FoxPro za Unix. Clipper ima potpuno drugi pristup: ne teži se da se sve napravi na jednom mestu, ali se ide na maksimalnu otvorenost arhitekture. To znači da se ide na *maksimalnu* mogućnost prilagođavanja. I to je glavna prednost Clippera. On (možda) u startu ima manje funkcija, ali se može proširiti na daleko više načina. Može se zameniti skoro sve, pa čak i drajver za pristup datotekama. Jeste li čuli za SIx drajver? To omogućava korišćenje FoxPro 2 kompatibilnih datoteka. Za korisnički interfejs neću ni da pominjem - toga ima toliko da skoro guši. Drugo, može se raspravljati o onome što se dobija kao proizvod. Tu ne vidim razliku između doplate za Fox LAN i kupovine Nantucket Tools II ili neke slične biblioteke - a toga ima kao pleve. Takođe nije neka razlika ako neki proizvod ima neku funkciju više ili manje - napisati takvu funkciju, ubaciti u biblioteku i više nema razlike između te i "fabričkih" funkcija. Naravno, dobro je ako to već postoji, ali je zaista mala razlika da bi se nešto na osnovu toga zaključilo. Najvažnije za korisnike, šta uzeti. Posao ćete uraditi i na jednom i na drugom. Priče da može postojati neka značajna razlika između napisanih programa je obična glupost. Prava istina je da su ovo konkuretski proizvodi (mada različitih koncepcija) i da će uvek biti "tu negde". Fox ima lepih prednosti: prenosivost, brzina, itd. Clipper ima odličan jezik, mnogo više dodataka, itd. A šta će se izabrati, zaista je stvar ukusa.
clipper.858 kanda,
>> A čemu služi DBEdit? Jel' to nešto kao brauz? Pa, ako brauz sluzi za pregled i menjanje baze, onda je dbedit isto sto i brauz. U kliperu je stvar generalizovana, uveden je TBrowse koji sluzi za pregled bilo cega sto se moze organizovati u redove i kolone - najcesce baze podataka, ali i nizovi, matrice, tekstualne datoteke (npr. izvestaji)... >> / (1) ali se moze napisati u C-u za <4 minuta >> >> I onda bih morao da učim C, pa da nabacim neki kompatibilan (?) C >> kompajler, i da dobijenu stvar obaška testiram, i da ne zaboravim da >> je ubacim u mejkfajl ili gde to već ide, i kad prođem kroz to sve >> onda se zaista svodi na manje od 4 minuta, što je i dalje mnooogo >> više od 10 sekundi (koliko mi u foksu treba dok skoknem do helpa da >> nađem sintaksu za ređe korišćene naredbe), i plus dodatnih pet minuta >> za testiranje. Ovde je rec o principu. Fox ima puno funkcija, i to je sjajno, ali sigurno nema *SVE* koje ti trebaju. E kad ti zatreba neka koje nema, mozes da je pises u Fox-u... sto je ponekad neprihvatljivo jer je rezultat prespor, a moze biti i nemoguce... sta ces onda ? A za kliper ima BRDO biblioteka raznih korisnih i nekorisnih funkcija (i na sezamu ima par komada). Gotovo svaka ima Norton Guide, pa kad ti nesto zafali pritisnes sift-f1, pa potrazis... pa ako nema ni tamo, a znas C ili asembler sednes pa napises... Dakle, ne moras da ODUSTANES od necega samo zato sto to osnovni jezik, tj. kliper ne omogucuje. >> Zanima me, zaista, koliko kliperašima treba dok ubace novu rutinu >> (recimo, dodavanje jedne kontrole datuma u valid) pa dok istestiraju >> kako radi? Onako, u minutima. Pa evo, bas sam sada merio : prevodjenje + linkovanje = 11 sekundi na 386/25. U minutima ? 11/60 - 0.17 minuta ili tu negde.
clipper.859 nbatocanin,
> A čemu služi DBEdit? Jel' to nešto kao brauz? Da. Ova funkcija omogućava da osim definisanja kolona, prozora itd. korisnik definiše svoju funkciju koja se izvršava uvek kad korisnik pritisne neki taster. Time se postiže svašta. A TBrowse objekti su nešto još generalnije i moćnije. > I onda bih morao da učim C, pa da nabacim neki > kompatibilan (?) C kompajler, i da dobijenu stvar obaška > testiram, i da ne zaboravim da je ubacim u mejkfajl ili > gde to već ide, i kad prođem kroz to sve onda se zaista > svodi na manje od 4 minuta, što je i dalje mnooogo više od > 10 sekundi (koliko mi u foksu treba dok skoknem do helpa > da nađem sintaksu za ređe korišćene naredbe), i plus > dodatnih pet minuta za testiranje. Možeš i da nabaviš tu funkciju iz neke biblioteke. Za Clipper je toliko stvari napisano da je vrlo verovatno da sve što ti zatreba već negde postoji. Što se tiče procedure, kada je napišeš, otkucaš jedno LIB i time tvoja procedura postaje ista kao fabrička - nema razlike. A šta ćeš kad ti u Fox-u zatreba nešto što tu nema? > Zanima me, zaista, koliko kliperašima treba dok ubace novu > rutinu (recimo, dodavanje jedne kontrole datuma u valid) > pa dok istestiraju kako radi? Onako, u minutima. Ne previše, zavisi od mašine. Otprilike, bez kucanja teksta, oko 30-40s. Najveci deo je RTLink, a sa Blinkerom je oko 15s.
clipper.860 janko,
> Zanima me, zaista, koliko kliperašima treba dok ubace novu > rutinu (recimo, dodavanje jedne kontrole datuma u valid) > pa dok istestiraju kako radi? Onako, u minutima. :) Pogotovu 'na licu mesta,' gde je recimo XT sa 80ms diskom ;) Samo linkovanje se meri minuuutima. Kada sam ispravljao program na jednom XT-u, 'ladno sam stizao da tokom prevođenja/linkovanja 1) odem do kisoska sa klopom 2) popijem kaficu 3) odem do WC-a 4) Pročitam nešto... itd. itd. ;)
clipper.861 d.petrovic,
Ă> Samo linkovanje se meri minuuutima. Kada sam ispravljao program Ă> na jednom XT-u, 'ladno sam stizao da tokom Ă> prevođenja/linkovanja 1) odem do kisoska sa klopom 2) popijem Ă> kaficu 3) odem do WC-a 4) Pročitam nešto... itd. itd. ;) Jedva sam se i odlučio da prokomentarišem !!! Pazi ! Ja imam 286/16 i nisam baš presrećan brzinom (cca 15 sek prosečno programče od oko 5000 linija), ali se i ne žalim. To što si ti u tom momentu bio mazohistički nastrojen ili nisi imao mogućnosti (vremena, auto, stanuješ daleko od inkriminisanog mesta) pa si sve to radio na XT-u ne znači da je to baš tako presporo. Uostalom za fazu testiranja možeš da koristiš .PLL biblioteke ili neki drugi linker i to onda kod mene traje oko 7-8 sek (prevođenje + linkovanje). Pozdrav, Dejan
clipper.862 d.petrovic,
Ă> Postoji li nacin da se .LIB pretvori u .PLL? Daaaaaa. Ja trenutno to ne radim, ali imaš negde u ovoj temi od 01.08. pa naovamo gomilu mojih pitanja, odgovora, mojih zaključaka... Pozdrav, Dejan
clipper.863 janko,
> Najvažnije za korisnike, šta uzeti. Posao ćete uraditi i > na jednom i na drugom. Priče da može postojati neka > značajna razlika između napisanih programa je obična > glupost. Prava istina je da su ovo konkuretski proizvodi > (mada različitih koncepcija) i da će uvek biti "tu negde". > Fox ima lepih prednosti: prenosivost, brzina, itd. Spolja značajna razlika između programa se može smatrati da ne postoji, (svi moraju da imaju unos, obradu i prikaz, zar ne?) ali kada gledaš programe IZNUTRA... I na to unutra valjda možeš da primenjuješ neke estetske kriterijume... slažem se sa tobom da je to stvar ukusa svakog programera posebno... ako pogledaš, i ja sam tako napisao onu poruku, samo kao lični stav... Naravno, drago mi je što sam čuo tvoje mišljenje. Ti si svakako veoma kompetentan da govoriš o Kliperu, više nego ja (što sam već pomenuo, nadam se?)
clipper.864 dejanr,
>> Zanima me, zaista, koliko kliperašima treba dok ubace novu rutinu >> (recimo, dodavanje jedne kontrole datuma u valid) pa dok istestiraju >> kako radi? Onako, u minutima. Ako pod testiranje misliš kompajliranje+linkovanje, 10-tak sekundi za program osrednje veličine (zavisi, normalno, i od brzine računara, diska itd, valjda je na XT-u "malo" više od toga ;). Ako misliš na neki logički test, onda sve zavisi koliko ta izmena zadire u dubine programa i, ako ništa drugo, koliko je meni u kome je vršena "daleko" od osnovnog menija.
clipper.865 gristic,
*> case polje = 'KELNER' .or. polje = '' *> sta = 'žEKANJE' *> htxt = ; Gos'n ndragan, ždraknite poruku 5.847. ;) 1988 ? 1989 ? Inspiracija u kafani (na lap top salveti) ? ;)
clipper.866 kvelkovski,
>> Postoji li nacin da se .LIB pretvori u .PLL? Pogledaj u PLL\BASE50.LNK datoteci. Tamo se kreira BASE50.PLL koji je sastavljen od CLIPPER.LIB, EXTEND.LIB ... Kupe
clipper.867 kvelkovski,
>> zameniti skoro sve, pa cak i drajver za pristup datotekama. Jeste li >> culi za SIx drajver? To omogucava koriscenje FoxPro 2 kompatibilnih >> datoteka. Za korisnicki interfejs necu ni da pominjem - toga ima Koristim Clipper 5.01 vec poduzhe ali nisam nashao nachin da ukljuchim .NDX indekse. Ima li uopshte nachina? Kupe P.S. Na mrezhi nisam uopshte radio pa me interesuje isplati li se (i jeli moguce) da se napravi driver za onaj Novell-ov BTrieve (ili kako se vec zove) ...
clipper.868 nbatocanin,
> ali kada gledaš programe IZNUTRA... I na to unutra valjda > možeš da primenjuješ neke estetske kriterijume... Ako sudiš po jeziku (eleganciji, izražajnim mogućnostima, ...), onda ćeš teško naći nešto bolje od Clipper-a. Da ne bude subjektivno, nedavno sam čitao neki uporedni pregled u kome se između ostalog bodovao i jezik DBMS proizvoda i sećam se da je Clipper bio daleko iznad ostalih u toj kategoriji.
clipper.869 ndragan,
/ jedan od eminentnijih korisnika Sezama. Ako prepozna čik nek' se javi, Ko, jel' ja? Prisutan i na broju, ser. A za onu 'eminenciju' nemaš piće - to što sam lajav još ne znači mnogo :). / Ima li "sumnjivog liceta" ? ;) / Napomena: namera nije da se neko diskredituje, već *isključivo* i / *samo* ono što piše na početku poruke. Nasmejao si me do suza. Imam ja taj običaj da promenljivim dajem blesava imena. Recimo, ako u Foksu koristim niske udarce (fread(), fopen() i ostale niske funkcije), broj drške (handle) obično smeštam u promenljivu Fridrih ili GFH. Tek da vidiš na šta je ličila 'zaštićena verzija' sorsa, gde su sve promenljive bile (search/replace) zamenjene šiframa tipa 'zx80','atari','quit_it','listaj', a one koje su imale smislena imena imale su sasvim deseto značenje u odnosu na stvarno... Baš sam neki dan pričao da ću možda i otići u penziju a da neću prestati da ser*m u sorsovima. Imam jedan biser u sistemskoj rutini koja poziva izradu/pregled/štampu izveštaja: č lin+ 5,kol+1 PROMPT " uzano " MESSAGE "nabudži štampač na uzana slova" ...koji je dosad postao legenda među operaterima kod naših mušterija. Među mojim drugarima se vodi nezvanični konkurs za nejblesavije ime (promenljive, baze, programa...). Programeri su inače najveći kumovi - krštavamo svakog dana na veliko. Zasad vode URSDSR (ukupan radni staž do stupanja u RO), VRANA (indikator vrste analitike), INDIANA (indikator prenosa u analitiku), OKKORAL.PRG (obračun), DIHTUNG.PRG (upozorenje da će se baza isprazniti), KLISTA.PRG (spisak obračunatih kamata), SUMPOR.DBF (suma poreza na jednoj fakturi). Pozivam Zezamovce da se priključe. BTW, odakle ti taj sors, trebalo je da bude zaštićen :). Ex, jednom napišem nešto u kliperu i posle četiri godine me sustigne... pravi leš iz ormana. Stidim se po čitavom telu (što sam radio u Kliperu :). I jesu li ikad počeli da ga koriste? Nismo se rastali u nekim lepim odnosima (mušterija i ja), al' se nismo ni posvađali (jedino nisu platili poslednjih 30%). Odakle ti to, leba ti? Bue_ Ndragan P.S. / neću mu ništa. ;) (u programu nisam nigde video (c) Copyright ili / nešto slično, pa pretpostavljam da ovo nije kažnjivo O;) Imaš pogrešnu verziju - pisala su (u zvaničnoj) naša imena (jedan drugar i ja) i čak je bilo predviđeno da u slučaju da se nekakav čeksum naših imena ne složi, program pobriše sve iza desetog sloga u matičnoj datoteci pa onda istu spakuje i preindeksira. Inače, nije kažnjivo al' će te košta - dođeš mi kriglu piva za ovo :). Program takođe više nema nikakvu komercijalnu vrednost, postoji (jel može malo reklame za sve ovo?) mnooogo bolja verzija aplikacije stambenih zadruga rađena u Foks Prou gde sve šljaka kako bog zapoveda. P.P.S. / replace z->prez with yuupper(z->prez) ======= Ukrasovcima skrećem pažnju na ovaj detalj. Pisano '88 u leto.
clipper.870 neman,
> Koristim Clipper 5.01 vec poduzhe ali nisam nashao nachin > da ukljuchim .NDX indekse. Ima li uopshte nachina? A zašto da koristiš .NDX ??? Zbog DBASEa ????? Pa za te rabote imaš DBU kao pomagalo !
clipper.871 janko,
> Ako sudiš po jeziku (eleganciji, izražajnim mogućnostima, >ć ...), onda eš teško naći nešto bolje od Clipper-a. Da ne >ć bude subjektivno, E, kad smo već zašli u te vode, voleo bih da mi objasniš opravdanost uvođenja onoga što se u Kliperu zove 'CODE BLOCKS' u bilo kom jeziku koji se, za razliku od Klipera, pošteno iskompajlira, a ne pretvara u interni interpreter... Moguće da živim u zabludi, ali ti 'CODE BLOCKS' mi se nimalo nisu svideli, kada sam ih video. Iskreno bih voleo da mi neko pokaže da to nije samo 'zakrpa' pogrešno odabranog pravca razvoja Klipera. Zatim, ta igranja sa preprocesorom su, ipak, samo igranja sa preprocesorom. I C ima preprocesor, ali se JAKO umereno koristi, (u C++-u još umerenije ;) što mislim da je dobro -- ako ti sam pišeš i održavaš svoje programe, baš te briga, ali kada bi radio u većem timu, baš me zanima kako bi ti se sviđalo kada bi svako izmišljao svoju sintaksu za elementarne naredbe... E, da, mana C preprocesora je što ne radi proveru tipa parametara koji su prosleđeni markrou u toku prevođenja. Kako to radi Kliper 5.0? Hoćeš li mi objasniti i šta je to što Kliperov jezik čini elegantnim? Ja sam uvek cenio estetske vrednosti i duboko ću ga poštovati, ako shvatim tu eleganciju? Ne bih želeo da me doživljavaš kao nekog 'mrzitelja Klipera.' Nisam nikada napisao nijednu aplikaciju na 5.0 verziji, i ne poznajem je tako kao ti, pa je moguće da sam nešto pogrešno shvatio. Meni se učinilo da je Kliper sa tim 5.0 doneo masu stvari koje mi ne trebaju, a praktično, nijednu koja mi je trebala. I sve vreme čekam, možda ću konačno čuti o nečemu što je stvarno jaaako korisno, ali nikako da čujem...
clipper.872 bulaja,
│Ne previse, zavisi od masine. Otprilike, bez kucanja teksta, │oko 30-40s. Najveci deo je RTLink, a sa Blinkerom je oko 15s. └─── Ja nemam Blinker :), ali zato imam neki update za verziju 1.50. To je neki exe koji patch-uje blinker.exe iz verzije 1.50, i tako napravi v1.51. Patch nosi datum 16.01.92, pa ne znam da li se ovde u medjuvremenu pojavila neka novija verzija. Btw, imam cak i uputstvo za Blinker (.DOC file, 240Kb texta), al' i dalje nemam Blinker :).
clipper.873 vkrstonosic,
>> Najvaznije za korisnike, sta uzeti. Posao cete uraditi i na jednom >> i na drugom. Price da moze postojati neka znacajna razlika izmedu Ima cini mi se jos jedna stvar koja je plus kod Clippera. Mnogo vise ljudi ga koristi (kod nas). Tako da sam ja za prve decije bolesti, okretao par telefona i od prijatelja dobijao sve informacije koje mi trebaju. Vrlo je zgodno kad ti neko kaze i da negde postoji bug, pa da ne moras sam da dolazis do tog saznanja, to moze da boli :)
clipper.874 vili,
Problem sa memo poljima. ----------------------- Ako u memo polju ima vise od 480 karaktera posle svakog: replace 'memo' with memoedit('memo',...) fajl .DBT se povecava za 1024 bajta iako nista nije dodato u memo-u. Ako u memo-u ima, recimo, 2567 bajtova .DBT se povecava za 3072 bajta, i tako unedogled sve dok taj .DBT postane tako veliki da jednog dana postane veci i od samog Clipper-ovog .EXE-a. Daklem, *.DBT fajlovi se povecavaju za ceo broj kB (ili za 512 bajta) ako se koristi funkcija memoedit(). Isto se desava i iz DBU-a, ako se izvrsi ctrl-W pri svakom ulasku u memo polje. Iz PCTools-a se moze videti da se svaki put u .DBT-u ponavlja sadrzaj memo-a pri svakom izlasku u memoedit-a. Ovo se ne desava ako u memo-u ima manje od 480 karaktera. E, sad, postoji li objasnjenje za ovo? Da li je ovo Clipper-ov 'bug' ili sta?. PS. Otkrio moj kolega sa posla Pedja, ciji je .DBT dobio neslucene razmere od oko 105kB !, a u memo-u samo 800 karaktera!. Vili
clipper.875 nbatocanin,
> Koristim Clipper 5.01 vec poduzhe ali nisam nashao nachin > da ukljuchim .NDX indekse. Ima li uopshte nachina? Ne. Obećavaju da će biti ponovo u sledećoj verziji.
clipper.876 d.petrovic,
Ă>> Koristim Clipper 5.01 vec poduzhe ali nisam nashao nachin Ă>> da ukljuchim .NDX indekse. Ima li uopshte nachina? Ă> Ă> Ne. Obećavaju da će biti ponovo u sledećoj verziji. Ajd, da ga bude. Ali šta li će nam sad pa opet to? Meni ni bazu Dbase ne može kako treba uvek da pročita, nego se zaglupi. Nedavno sam ispravljao na licu mesta jednu bazu kad su zajeboravili šifru (koje li muke ljudi božji, sve što sam zbudžio preračunati peške ;(( ) i nisam moga da pročitam bazu iz Dbase-a, a DBU nisam imao.
clipper.877 dpaun,
Braćo Clipperaši i mile sestre Clipperašice, u vezi ranije istaknutog problema podizanja YU slova (poruka 828), ja sam nešto petljao sa asemblerskom idejom nBatocanina iz jednog broja Računara, i ta stvar radi samo u slučaju 1, i to kada se, dok smo u polju Niz1, pritisne donja kursorska strelica (što je mnogo efikasnije i elegantnije nego da ganjamo kursor do yu slova, uključimo zaboravljeni CapsLock, ispravimo grešku, pozajmimo pilulu za sniženje pritiska, pošaljemo zabrinutu sekretaricu po čašu s vodom, etc ....) Pošto sam ja kao programer naivac tutu za klipper a tutuban za asembler, molim da se neko prihvati daljeg majstorisanja oko ovog problema. Može se od njega napraviti čak i BajtLP. Kako, dakle, urediti ovu stvar, da se i Niz1 i Niz2, pa sve tamo do NizaEntog, pošalje jednoj istoj funkciji DigniGa() a ona da radi ono što joj ovo sexy ime kaže. dPaun.Yu č x,1 get Niz1 pict "č!" valid DigniGa(Niz1) && Slučaj 1 č y,1 get Niz2 pict "č!" valid Yupper(Niz2) && Slučaj 2 read ... FUNC DigniGa() Niz1 := Yupper(Niz1) return .t. ********* * Asebmlerska paremija * prema manuskriptu brata nBatocanina * iz Računara ********** INCLUDE EXTENDA.INC DATASEG CLpublic <YUPPER> CLstatic <string smallyu "žčšćđ"> CLstatic <string bigyu "螊ĆĐ"> CLfunc char YUPPER <char str> CLcode PUSH ES PUSH BP PUSH SI JMP begin r_str DB 80 DUP(0) begin: LES SI, str MOV BX, 0 cikl: MOV AL, ES:ŠSI+BXĆ MOV r_strŠBXĆ, AL OR AL, AL JZ kraj CMP AL, 'a' JL yu_letter SUB BYTE PTR r_strŠBXĆ, ' ' JMP next_char yu_letter: MOV BP,0 tab: MOV AL, BYTE PTR smallyuŠBPĆ OR AL, AL JZ next_char CMP BYTE PTR r_strŠBXĆ, AL JNE next MOV AL, BYTE PTR bigyuŠBPĆ MOV BYTE PTR r_strŠBXĆ, AL next: INC BP JMP tab next_char: INC BX JMP cikl kraj: MOV AX, SEG r_str MOV BX, OFFSET r_str POP SI POP BP POP ES Clret AX BX END
clipper.878 ndragan,
/ Sve zavisi od dužine programa. Recimo, program od nekih 400 / linija, kompajliranje + linkovanje = 21 sec (286/16) i onda Daa... otkad nisam pisao program u komadu... ex, jednom pređeš na foks, i onda više nemaš osećaj. Moja mera nisu linije, nego kilobajt zipa. Normalna aplikacija ima 100 - 350K, od čega 70% napravi generator, 20% je prepisano iz slične ili iz verzije za drugog korisnika, i 10% je tiha patnja na licetu mesta, kako neko ovde reče. Štos je ipak u tome da FoxPro nema linker (osim za mamutski samostalni .EXE u 2.00), kompajlira u hodu samo sveže fajlove i ne moram uopšte da izlazim iz njega. Foks i kliper su zaista postali različiti po koncepciji.
clipper.879 ndragan,
/ rezultat prespor, a moze biti i nemoguce... sta ces onda ? Ubaci se parče rađeno u asembleru, u .obj formatu - učita se negde gore i poziva sa CALL sa sve prenosom parametara. Tako smo svojevremeno simulirali Scroll naredbu dok se nije pojavila. / 386/25. U minutima ? 11/60 - 0.17 minuta ili tu negde. Izgradilo se to, zaista. Pamtim neke tamo stvari iz '88 - ono je bio blagi užas.
clipper.880 ndragan,
/ A šta ćeš kad ti u Fox-u zatreba nešto što tu nema? Još nisam našao. Možda 'index while' da napravi delimični indeks dok je aktivan drugi indeks... onako 'seek... copy while... index' ali u jednom komadu :). Na stranu želje puste - ostalo ima, a ako nešto primetimo da fali, uvek nađemo rešenje. Možda ne uvek istog dana, ali ga nađemo, i to u foksu.
clipper.881 ndragan,
/ Gos'n ndragan, ždraknite poruku 5.847. ;) Ne izdrža srce vam junačko, a? Dva dana ne stignem na Sezam, i odmah se smatra da nemam petlju da se oglasim? / 1988 ? 1989 ? Inspiracija u kafani (na lap top salveti) ? ;) Ne, ali od lep top modela preporučujem kelnericu. /*> case polje = 'KELNER' .or. polje = '' /*> sta = 'žEKANJE' "He waits while you wait." Ulysses, James Joyce.
clipper.882 neman,
> Ne bih želeo da me doživljavaš kao nekog 'mrzitelja > Klipera.' Nisam nikada napisao nijednu aplikaciju na 5.0 ============================================== > verziji, i ne poznajem je tako kao ti, pa je moguće da sam ======================================== > nešto pogrešno shvatio. Meni se učinilo da je Kliper sa > tim 5.0 doneo masu stvari koje mi ne trebaju, a praktično, > nijednu koja mi je trebala. I sve vreme čekam, možda ću > konačno čuti o nečemu što ======================== Pljuvati po nečemu o čemu nemaš pojma u najmanju ruku nije korektno.
clipper.883 janko,
> Pljuvati po nečemu o čemu nemaš pojma u najmanju ruku nije > korektno. Ako to smatraš za pljuvanje. ;) I ako smatraš da baš nemam pojma. To što nisam pisao u Kliperu 5.0 ne znači da nemam iskustva u ovim poslovima. I ne znači da nemam svoj stav o tome, šta sam ja želeo da vidim da Kliper koji dolazi posle 87 ima, a šta je on doneo. Po meni, prašinu u oči... Ja to zovem iznošenje stava, i pišem ono što si citirao (da nisam napisao nijednu aplikaciju na Kliperu 5.0) upravo zato da bih se ogradio od eventualnih osuda da sam tvrdio nešto što nije tačno, time što preciziram da nemam previše iskustva, i možda tvrdim nešto što nije tačno. Ipak, za ovo što sam tvrdio, još uvek nisam dobio kontraargumente. A voleo bih da ih čujem... To što nisam napisao nijednu aplikaciju na 5.0 ne znači ni da ne bih umeo, niti da ne razumem koncepte koje koristi 5.0. O pomenutim konceptima (i mom nezadovoljstvu njima) sam upravo i pisao. I sasvim fino mogu da razgovaram i sa tobom o njima, ako si na to spreman... :) Šta će ti diskusija u kojoj svi ISTO misle? Samo iz sukoba mišljenja je moguće da proistekne nešto novo...
clipper.884 janko,
Neko je ovde pominjao Blinker linker. čeleo bih da čujem iskustva nekog ko je radio sa njim. Kako se ponaša sa Kliper 5.0 specifičnostima (.PLL datoteke, DLL koncept, podrška Kliper 5.0 virtuelnoj memoriji i te stvari...) Ili, da sažmem pitanje: može li POTPUNO zameniti RTLINK? I koliko je brži od njega, ako je odgovor na prvo pitanje da?
clipper.885 dpaun,
>> Ako u memo polju ima vise od 480 karaktera posle svakog: >> replace 'memo' with memoedit('memo',...) >> fajl .DBT se povecava za 1024 bajta iako nista nije dodato u >> memo-u. Ne razumem ovo, brate Vili! Radim dve-tri godine sa tekstualnim bazama, tj. pretežno se rvem sa memo i DBT, i ovo nisam zapazio (tj. da se DBT povećava iako ništa nije dodato u memo-u). Pre nego što zinem bilo šta, molio bih te - ako druga braća ne skontaju o čemu je reč - da dopuniš, odnosno preciznije opišeš uočenu pojavu. Možda i sa delom listinga u kome se nalazi operacija sa memo poljem. Memo i DBT su zato i uvedeni da "rastu" samo kada se nešto u memo polje unese. Kada se vrši izmena već unetog teksta, Clipper ne prepisuje novi sadržaj preko starog, već stari označi da je spreman za brisanje a novi doda na kraj dbt baze. Zato DBT raste ko da je u metastazi. Suvišan tekst, samim tim i svođenje DBT-a na njenu pravu veličinu, vrši se povremenim kopiranjem cele baze. Najbolje je ovo kopiranje ugraditi u meni kao opciju, a procedura bi izgledala ovako: RENAME Baza.dbf TO Tmp.dbf REBAME Baza.dbt TO Tmp.dbt SET DELETE ON USE Tmp COPY TO Baza.dbf CLOSE Tmp ERASE Tmp.dbf ERASE Tmp.dbt >> .DBT postane tako veliki da jednog dana postane veci i od samog >> Clipper-ovog .EXE-a. DBT, da je živ i zdrav, to treba i da radi. Znam za testove sa DBT veličine 20 MB; kod mene je trenutno negde oko 2 MB, i sve savršeno radi. >> Ovo se ne desava ako u memo-u ima manje od 480 karaktera. Clipper za memo rezerviše blokove veličine 512 bajta. Tu negde može biti odgovor, mada mi nije jasno da li govoriš o dodavanju novih slogova u bazu, ili o izmenama unetih slogova. žim se nešto unosi u memo polje, baza mora i da raste. >> E, sad, postoji li objasnjenje za ovo? Da li je ovo Clipper-ov >> 'bug' ili sta?. Ovako na uvce, mislim da je problem u nepotrebnom ulaženju u memoedit. Možda ček i o nepotrebnom korišćenju memo polja, ako je reč o kraćim tekstovima. Ovaj problem je najbolje razrađen u knjizi: Rick SPENCE: CLIPPER 5, Voduč za programere, Mikro knjiga, Beograd, 1991, s.161 i dalje Tamo su navedeni slučajevi kada je najoptimalnije koristii memo, a kad je, pak, bolje "dugačka znakovna obeležja" kako ih on naziva. Ima i listing programa za testiranje ove dileme. Pozdrav, dPaun
clipper.886 gristic,
*> Ko, jel' ja? Prisutan i na broju, ser. A za onu 'eminenciju' nemaš piće Na mestu voljno. Oslabili ti refleksi... ;) *> BTW, odakle ti taj sors, trebalo je da bude zaštićen :). Ex, jednom *> napišem nešto u kliperu i posle četiri godine me sustigne... pravi leš *> iz ormana... Izbunario iz arhive. Pravio sam Veliko_Spremanje_Mojih_1000_Disketa (redovno svakih 125 godina po jedno) i ovo se pojavilo. Prvo sam i ja bio zbunjen, a onda mi je sinulo: pre 2-3 godine dok još nisam imao mašinu pao mi je u šake XT Šnajder 1620 (1640?) inkriminisane zadruge (nedokučivi su putevi kompjuterski). Kao svaki savesni programer redovno sam pravio bekape, zipove, arcove, lhove, žvrnjčšćove i tako ostade zakopano negde (...štooo ne voliiim da brišem arhive, a tek što me mrziii da ih pregledaaam...tako da *sve* imam *najmanje* duplo ;<. Tako mi je, npr., trebalo *godinu* dana da istrebim sa disketa onaj virus... kako se ono zvaše... ah da, Tetris! (a onda instaliram DESQview/X (QEMM 6.03) i ono DVX TETRIS !!!!). Što se zaštite tiče obožav(ao s)am da "razbijam" tuđe zaštite i da posle toga obrišem programe, ali kod ovog *nisam* primetio nikakvu zaštitu. *> Stidim se po čitavom telu (što sam radio u Kliperu :). I treba. Pored (već tada) živog Foxa... ;) *> I jesu *> li ikad počeli da ga koriste? Nismo se rastali u nekim lepim odnosima *> (mušterija i ja), al' se nismo ni posvađali (jedino nisu platili *> poslednjih 30%). Odakle ti to, leba ti? Jok. Bio im komplikovan korisnički interfejs. Nije hteo sam da radi, moralo je i da se razmišlja koja je razlika između strelice gore i strelice dole, a i dobili žuljeve na laktovima. ;) *> Imaš pogrešnu verziju - pisala su (u zvaničnoj) naša imena (jedan drugar *> i ja) i čak je bilo predviđeno da u slučaju da se nekakav čeksum naših *> imena ne složi, program pobriše sve iza desetog sloga u matičnoj *> datoteci pa onda istu spakuje i preindeksira. Misliš na ovo? O:) č 2, 7 SAY "APLIKACIJA FINANSIJSKOG POSLOVANJA STAMBENE ZADRUGE" č 3, 7 SAY '"***********" *************' č 6, 35 SAY "AUTOR: Dragan Nedeljković, dipl. mat." č 7, 24 SAY "STRUžNI SARADNIK: Branislav Grmuša, prof. inf." č 9, 44 SAY 'nosilac posla: RO "CEMIK" NOVI SAD' . . . (z.doc) OPIS APLIKACIJE FINANSIJSKOG POSLOVANJA RAĐENE ZA STAMBENU ZADRUGU ************* *************** Autor: Dragan Nedeljković Opis aplikacije Aplikacija za praćenje finansikskog poslovanja do- bavljača i zadrugara stambene zadruge ************* iz **- *********** pisa=na je u bazi podataka Dbase II i prevedena kompajlerom Clipper na računaru Amstrad/Schneider PC1640. . . . (Zvezdice sam ja stavio zbog konjspiracije ;) *> č lin+ 5,kol+1 PROMPT " uzano " MESSAGE "nabudži štampač na uzana slova" ;)))) A ovako: č lin+ 5,kol+1 PROMPT " uzano " MESSAGE "'Ajde spiči bre taj tvoj bedni drndavi *ebeni štampač na ta prokleto tesna slova" (širina 79) :))) *> Inače, nije kažnjivo al' će te košta - dođeš mi kriglu piva za ovo :). Važi 'al neće me košta. Imam, hik, vezu u Jelen pivari. ;o) *> / replace z->prez with yuupper(z->prez) *> ======= *> Ukrasovcima skrećem pažnju na ovaj detalj. Pisano '88 u leto. 15.07/09.09.1988. Brrrr, mraaaaačni programerski srednji vek ;) Za ovo (što sam izdvojio i taj red) *ti* častiš (Krigla ? Jel' to ono maaalo, maleeecko stakleno sa drškom ? ;o)) *> Program takođe više nema nikakvu komercijalnu vrednost, postoji (jel *> može malo reklame za sve ovo?) mnooogo bolja verzija aplikacije *> stambenih zadruga rađena u Foks Prou gde sve šljaka kako bog zapoveda. Eh, da sam ga našao prošle godine prodao bih im ponovo. ;) (šalim se) Ovako sam se namučio u C-u da povežem Btrieve i Isam (ne pitaj zašto *oba* !!!) i da štampam ćirilična trebovanja. Sada ću im (pro)dati novu verziju u FoxPlusu pod Xenixom (FoxPro za *NIX? Eh, pusti snovi...). Pozdrav Goran P.S. Što se pića tiče: Odžaci ili Bečkerek (ili oba ;))? P.P.S. Jesi probao/uspeo da ukrstiš FoxPro 2.0 i Paradox Engine (štosa radi)? P.P.P.S. I gos'n MBP-cobol-guru jsalai ima(o je) iskustva sa njima (zadrugom). ;) Naravno i njegovi (stariji) cob sorsevi su tu negde (pretpostavljam). ;)))
clipper.887 nbatocanin,
Najnovija verzija Blinkera je 2.0 i po rečima Rik Spensa to je najbolji proizvod za Clipper.
clipper.888 nbatocanin,
> E, kad smo već zašli u te vode, voleo bih da mi objasniš > opravdanost uvođenja onoga što se u Kliperu zove 'CODE > BLOCKS' Probaću da što kraće objasnim osnovnu ideju i prednosti. Kodni blok je, u stvari, funkcija. E sad, zašto se uvodi još nešto pored standardnih funkcija? Kodni blokovi su *tip podataka*, što znači da nad njima možete vršiti i obradu. Doduše, ne previše složenu, ali dovoljnu: kodni blok možeš dodeliti promenljivoj, proslediti kao parametar proceduri, vratiti kao rezultat ili izvršiti. Zašto je to odlično? Zato što na taj način možete proceduri, funkciji ili objektu proslediti osim podataka i *akciju*, tj. možete reći ne samo "ovo je toliko, ovo toliko, ...", nego možete da kažete "ovo uradi ovako". Mislim da teorijske posledice ovoga ne treba naglašavati. Sećaš se mog primera za niz koji bi se teško deklarisao u strogo tipiziranom jeziku? E, zamisli sad niz (slog, u stvari) u kome jedan element kazuje *kako* nešto treba uraditi. Primena? Pa, objekti su, u stvari, takvi nizovi: slog koji sadrži obične podatke i akcije. Zašto je zgodno procedurama prosleđivati i akcije? Uzmimo jedan jednostavan primer: funkcija za sortiranje niza: ASort (aArray) vraća sortiran niz. Ali *kako* da sortira? Pa, najjednostavnije je reći: "OVAKO"! Time obezbeđuješ visoku univerzalnost programa. ASort (aArray, { |x,y| x >= y } ) Može se reći da se to isto postiže makroima: prosledi se string koji predstavlja izraz za poređenje, pa se sa &cString računa. Štos je što sa kodnim blokovima prevodilac u trenutku prevođenja zna koju akciju treba izvršiti, pa se može napraviti prevod, dok se makro uvek mora interpretirati iznova. Drugo, moglo se rešiti kao u C-u: pokazivač na funkciju, pa bi se onda pisalo "uradi onako, kako je zadato u funkciji PPP()". Onda bi se pisalo nešto ovako: ASort (aArray, PPP() ) Pogledajte koliko se ovim smanjuje preglednost programa: ko hoće da zna šta radi program, mora tražiti funkcija PPP u listingu. Ali, ima i nešto drugo. Rešenje pomoću funkcija bi saseklo mogućnost realizacije nekih komandi. Na primer, kada se napiše LOCATE FOR x > 4 pretprocesor to prevede u DBLocate ( { || x > 4 }, ... ) a u slučaju funkcija bi se morala generisati posebna funkcija za računanje izraza X > 4. Napominjem da je glupo, a ne realizovati LOCATE preko neke funkcije. > Zatim, ta igranja sa preprocesorom su, ipak, samo igranja > sa preprocesorom. I C ima preprocesor, ali se JAKO umereno > koristi Ovde jok. Pretprocesor predstavlja pluća Clipper-a 5.0. On je dosta moćniji od C-ovog i to ne bez razloga: skoro sve standardne naredbe su rešene kao pozivi funkcija maskirani pretprocesorom. > -- ako ti sam pišeš i održavaš svoje programe, baš te > briga, ali kada bi radio u većem timu, baš me zanima kako > bi ti se sviđalo kada bi svako izmišljao svoju sintaksu za > elementarne naredbe... Da, ali šta ako dobiješ/napraviš novu biblioteku funkcija? Pa moraš da koristiš nešto ovako: CrtajMaskuBre (Id, Row, Col, Top, Bottom, Shadow, Blink, Cvrc) Mislim da nikog ne treba ubeđivati da se ovo daleko lakše pamti kao CrtajMaskuBre Pos 1,2 SHADOW BLINK Ključne reči se daleko lakše pamte, a ne moraš sve ni navoditi. Može se i zameniti redosled parametara - ključna reč je dovoljna da se odredi šta je to. > E, da, mana C preprocesora je što ne radi proveru tipa parametara > koji su prosleđeni markrou u toku prevođenja. Kako to radi Kliper > 5.0? U standardnim makroima radi isto kao C - nema nikakve provere. Samo, mislim da je to standardno za pretprocesore: njihov jedini tip podataka je TEXT. žak i u strogo tipiziranim jezicima (Clipper to naravno nije) bi pretprocesor koji razlikuje tipove morao da radi najpliće posle leksičke analize, a čini mi se (odoka) da to ne bi bilo baš tako jednostavno. Direktive #translate se mogu uslovno nazvati nekim makroima. One umereno prepoznaju tipove, ali pružaju daleko moćnije preslikavanje ulaznih parametara od makroa. One su potpuno nova tema. > Hoćeš li mi objasniti i šta je to što Kliperov jezik čini > elegantnim? Ja sam uvek cenio estetske vrednosti i duboko > ću ga poštovati, ako shvatim tu eleganciju? Pa evo, na stranu lični ukus. Gornje stvari (i mnoge druge) su mogle biti rešene na 1000 drugih načina. Ja vidim lepotu u ovim rešenjima. Krajnje čistim principima je omogućena izvanredno jednostavna nadgradnja svih sistema: od jezika pa do kontrole tastature. I pored velike balasti zvane kompatibilnost. Mislim da bi se mogao napraviti sasvim dobar klasičan programski jezik na osnovu koncepcija jezika u Clipper-u: ako se izbace delovi koji se odnose na rad sa bazom, moglo bi se značajno ubrzati računanje izraza i uopšte poboljšati prevod. Kodni blokovi bi mogli da se stvarno prevode (nema pristupanja poljima), i ne vidim razloga da se tako ne napravi jezik sasvim blizak po performansama C-u. žak, čudi me što to još nije urađeno. A C-u svakako ne bi smetalo nešto poput kodnih blokova. Saznao sam da se Clipper grana u dva proizvoda, Jedan će se zvati Aspen i biće to Win proizvod brzinskih performansi oko 60% od C-a. Druga grana je za tekst programere i ide na dalje usavršavanje jezika i potpunu objektnu implementaciju. > Ne bih želeo da me doživljavaš kao nekog 'mrzitelja Klipera.' Ma ne! Zar misliš da bi se onda raspravljao s tobom? Ja sam uvek za čist i koristan razgovor. A možda će ovo nekom i koristiti? P.S. Svojevremeno sam se raspitao i kazaše mi da se kaže *pretprocesor*, a ne *preprocesor*.
clipper.889 nbatocanin,
> Ako u memo polju ima vise od 480 karaktera posle svakog: > replace 'memo' with memoedit('memo',...) Može i samo REPLACE memo WITH Space(512) ;( Sistem je jedan od glupljih.
clipper.890 bulaja,
│Neko je ovde pominjao Blinker linker. Zeleo bih │da cujem iskustva nekog ko je radio sa njim. └─── Ako te toliko interesuju mnoge stvari vezane za Clipper 5, zasto ne uzmes i malo da ga koristis? Ovo pitam zbog tvojih poruka gde se toliko interesujes za Clipper 5, a tvrdis da ga uopste nisi koristio. Verovatno ce ti mnoge stvari tako biti jasnije, ovako izgleda kao da proucavas samo teoriju Clippera na papiru :).
clipper.891 janko,
> Ako te toliko interesuju mnoge stvari vezane za Clipper 5, > zasto ne uzmes i malo da ga koristis? Ovo pitam zbog > tvojih poruka gde se toliko Zato što mi je lakše da pročitam neko iskustvo o Blinkeru, nego da ga jurim program po gradu, eksperimentišem i zaključim da nisam morao ni da se trudim. Pitanje je bilo vrlo konkretno: > Kako se ponaša sa > Kliper 5.0 specifičnostima (.PLL datoteke, DLL koncept, > podrška Kliper 5.0 virtuelnoj memoriji i te stvari...) > > Ili, da sažmem pitanje: može li POTPUNO zameniti RTLINK? I > koliko je brži od njega, ako je odgovor na prvo pitanje > da? Dakle, ako nema sve ono gore, ne vredi ga koristiti! Onda ne vredi ni da se trudim da ga nabavljam i zezam se sa njime... Sa 5.0 sam baš eksperimentisao (nisam samo čitao ;) ali me nije tada ubedio da mi je mnogo koristan... ;) Seti se još i nepouzdanosi 5.00 verzije itd...
clipper.892 janko,
> Drugo, moglo se rešiti kao u C-u: pokazivač na funkciju, > pa bi se onda pisalo "uradi onako, kako je zadato u > funkciji PPP()". Onda bi se pisalo nešto ovako: > > ASort (aArray, PPP() ) Jeste, tu si u pravu, lepše je da je sve na jednom mestu, u ovakvoj primeni. Priznajem da je lepše sa kodnim blokovima... > LOCATE FOR x > 4 > > pretprocesor to prevede u > > DBLocate ( š đđ x > 4 ć, ... ) > > a u slučaju funkcija bi se morala generisati posebna > funkcija za računanje izraza X > 4. Napominjem da je > glupo, a ne realizovati Pa, i ovako se generiše funkcija, samo je sakrivena u istu liniju? Ili se blokovi koda ne prevode kao funkcije? > CrtajMaskuBre Pos 1,2 SHADOW BLINK > > Ključne reči se daleko lakše pamte, a ne moraš sve ni > navoditi. Može se i zameniti redosled parametara - ključna > reč je dovoljna da se odredi šta je to. Odrastao sam na jezicima koji imaju jako malo ključnih reči, ukupno, pa na ovakve koncepte nisam navikao. Da ne govorim o tome da mi ovo miriše da moram dva puta da testiram funkciju -- prvi put kada je pišem i realizujem, a drugi put i da li sam napisao dobro 'izmišljenu' naredbu. Problem je i kada razvijaš više aplikacija -- obično se trudiš, tokom razvoja, da ne pišeš sto puta isto. Održavanje funkcija je relativno lako -- ako si je ispravio, a koristiš je u više programa, bez problema ćeš je nadalje koristiti u svima. Ali ako menjaš ove 'translacije,' šta onda? Kako ti to radiš? Da li uz svaku aplikaciju vučeš posebno sve fajlove sa translacijama ili...? Drugi problem je još fundamentalniji -- translacije treba da ti obezbede da ako ONO U ŠTA SE TRANSLIRA tvoj program budu promenili, ti i dalje možeš da ga prevodiš bez brige. Ako počneš i sam da daješ 'niske udarce,' programi ti još više postaju zavisni od verzije kompajlera. > Direktive #translate se mogu uslovno nazvati nekim > makroima. One umereno prepoznaju tipove, ali pružaju > daleko moćnije preslikavanje ulaznih parametara od makroa. > One su potpuno nova tema. To sam te i pitao: koliko su robusne? Da li time što uvodiš translate trikove i strukturno slabiš program (u smislu da ti je više dozvoljeno nego pre, a ne proverava se u toku prevođenja?) Zato sam te i pitao, jer ti imaš ISKUSTVA. U onim tekstovima koje su pisali tipovi koji su ga pravili, oni neće da iznose ružne stvari, nego ga samo hvale... > jednostavna nadgradnja svih sistema: od jezika pa do > kontrole tastature. I pored velike balasti zvane > kompatibilnost. Mislim da bi se mogao napraviti sasvim > dobar klasičan programski jezik na osnovu koncepcija > jezika u Clipper-u: ako se izbace delovi koji se odnose na > rad sa bazom, moglo bi se značajno ubrzati računanje > izraza i uopšte poboljšati prevod. Kodni blokovi bi mogli > da se stvarno prevode (nema pristupanja poljima), i ne > vidim razloga da se tako ne napravi jezik sasvim blizak po > performansama C-u. žak, Šta to znači 'kodni blokovi bi mogli stvarno da se prevode?' Zar se sada ne prevode? U čemu je onda trik? Što se tiče sintakse, danas je prilično lako realizovati jezik sa kakvom god hoćeš sintaksom, ako se ona može napisati kao BNF. Krajem šezdesetih pa do početka osamdesetih svi su izmišljali jezike -- to je bio glavni sport. Ali se, hvala Bogu, iz toga svega nešto iskristalisalo... jedna od tekovina tadašnjih bura je upravo saznanje da kompajler treba da štiti programera od njega samog. Neki jezici su preterivali takvim idejama (Virtovi) a neki ih zanemarivali (stari C). Na kraju se ipak došlo do neke 'razumne sredine.' Ta razumna sredina je da jezik treba da ima što manje ključnih reči, što uniformniju sintaksu, dobro rešen 'scope' promenljivih, i kontrolu tipa prosleđenih parametara... A šta meni najviše smeta kod Klipera? Po meni, baš to što nije dovoljno kompajler -- a mogao je da bude... Znam, kada se Kliper pojavio, najbitnija osobina mu je bila: 'Uzmite dBase program, propustite ga kroz Kliper, i sve će da radi, a imaćete .EXE verziju.' (Mada, ni S87 verzija nije baš tu bila dosledna -- bilo je nekih nepotrebnih odstupanja.) Jezik koji je fino funkcionisao u interpreterskoj okolini, prilično je rogobatno realizovati za kompajler. Na primer, makro supstitucije se nikako nisu mogle koristiti onako divlje kao u dBase programima. Moram da napomenem da sam radio na dBase-u još od vremena kada je najveća postojeća verzija bila II (što je i prva verzija -- autori dBase nisu nikada napravili dBase I -- ovo je bio marketinški trik) i sve to na CP/M-u, na kome je na disketu (ako se još sećam) stajalo manje nego na današnju DD disketu, a hard disk nije imao poddirektorijume (bilo je zabavno kucati DIR tada). dBase je stvarno bilo nešto najkorisnije što je postojalo na tim mašinama -- bilo je i za njih dovoljno brzo, i, opet, za njih je izgledalo prilično 'bez ograničenja.' Hoću da kažem, pratio sam razvoj di-bejz-lajk jezika dosta dugo, i mislim da ipak imam pravo da iznosim svoje mišljenje o tome kako izgledaju ti pravci koji su se razvili iz svega toga... I šta su dizajneri Klipera trebali da urade sa 5.0 verzijom? Da, umesto izmišljanja preprocesora (kojim su, opet, zakopali sebe time što za taj jezik nikada neće moći da se napravi čvrsta sintaksna provera -- pričao sam ti da sam želeo čak i sam to da realizujem -- sada je to nemoguće...) i 'svođenja na isto,' ako su već želeli da izmišljaju novi jezik (a 5.0 je, faktički, novi jezik) naprave kompajler koji radi 'u dva moda:' 'Kompatibiliti' i 'Pravom.' 'Pravi' bi bio jedan čvrst jezik, primeren kompajliranju, koji bi radio SVE MOGUĆE provere u toku kompajliranja, a 'kompatibiliti' bi služio onima koji ne žele da iskoriste čitave procedure pisane u starom maniru (ali, šta će im onda novi prevodilac O:) ?) Sad sam se setio -- za te stare aplikacije najbolnija tačka bila je nemogućnost svapovanja samih sebe pre startovanja eksternog programa. 5.0 to nije donela. Donela je virtuelnu memoriju. Ali ako je stara aplikacija radila bez virtuelne memorije, šta će mi onda virtuelna? Sve u svemu, što bi neko staru aplikaciju uopšte prevodio novim prevodiocem? Verovatno su se plašili da urade nešto tako drastično, kao, da bi ljudi mogli U ISTOJ funkciji/proceduri da mešaju stare i nove fore... Ali od tog mešanja je više štete nego koristi... što i ja i ti znamo... što se grbavo rodi... Ovako, sve je, ipak, ostalo nekako nedovoljno... 5.0 je nedovoljno interpreter (ni oni pre to nisu bili) ali, što je još nezgodnije, i nedovoljno kompajler... Što opet ne znači da Kliperom nije moguće uraditi puno lepih stvari. Danas već postoji puno softverskih proizvoda kojima se realizuju prilično složene stvari, a da oni ne poštuju elementarna pravila 'pravih jezika.' Danas je čitavu aplikaciju moguće razviti čak, naprimer, i popunjavanjem raznoraznih ćelija u spredšitovima, pa silnim manipulacijama redova, kolona (skrivanje, otkrivanje, proširivanje, idimi dođimi) i pisanjem nekih kao makroa. A počelo je od tabela koje je trebalo da ti sračunaju relativno proste stvari... Ono zbog čega ja nisam previše srećan sa takvim stvarima je što da bi stvarno dobro koristio mogućnosti jednog takvog paketa, moraš da jako dobro proučiŠ BAŠ TAJ paket i BAŠ TU njegovu verziju, gde one 'najkorisnije' stvari nikada nisu iste u različitim verzijama... S druge strane su 'regularni' programski jezici, gde naučiš jezik, a onda ocenjuješ kompajler po tome koliko dobro poštuje standard... i gde, hvala bogu, ne učiš sve ispočetka svaki put kada se pojavi nova verzija... ili kad preĆeŠ na prozvod druge firme. E sad, možda je moje očekivanje da Kliper uđe u onu drugu kategoriju bila nerealna? Možda Kliper nikad nije ni želeo da bude tako nešto, nešto što će moći da pravi više nego jedna jedina firma, i da se koristi bez obzira na 'okolinu?' Ufff. Baš sam se raspisao... Priznajem, opet, da iznosim lični stav, zasnovan na ličnim predubeđenjima, i da ne očekujem da se svi slažu sa onim što pišem. :) Drugačija mišljenja su više nego dobrodošla... Uz sve to, Nenade, hvala na strpljenju. Znaj da sam te uvek duboko poštovao kao stručnjaka za Kliper. PS. Hmmm. Pretprocesor ili preprocesor? Priznajem da je ovo drugo pod uticajem strane literature. Ali ne znam ni neku referencu na osnovu koje bih tvrdio da li može da se koristi? Kad smo već kod jezika, da li se slažeš da bolje zvuči 'blokovi koda' nego 'kodni blokovi?'
clipper.893 ppekovic,
>> Seti se još i >> nepouzdanosi 5.00 verzije itd... Već duže vreme je aktuelna verzija 5.01 koja, kao se pokazala kao pouzdana. >> I šta su dizajneri Klipera trebali da urade sa 5.0 verzijom? Kompatibilnost sa prethodnim verzijama kompajlera je jako lepa stvar ali i velika kočnica pri stvaranju novih verzija. Da su napravili kompajler kakav bi ti želeo da vidiš, onda bi se našao neki pera, marko, sima i sl. koji bi rekao: šta se zezaju ovi u Nantucket-u, zar ću za svaku verziju sve morati da pišem iz početka (zato sam ja digao ruke od Turbo Pascal-a, svaka verzija novi format unit-a). Ne zaboravi i da su programeri veoma konzervativna sorta. Da bi se navikli na novi proizvod potrebno je vremena i vremena. A ako im pružiš komaptibilnost sa starom verziom oni počnu da korste novu sa mogućnostima stare, pa polako "kupuju" jednu po jednu novost nove. Naravno, i ljudi iz Nantucket-a razmišljaju o onome o čemu mi ovde pričamo, pa ako si video poruku nbatocanin-a, tamo lepo piše da će da razvijaju clipper u dva pravca. Jedan, ka jeziku koji bi vidim u globalu i ti želeo da vidiš, a drugi u pravcu u kome su išli do sada. Paya
clipper.894 dpaun,
Suđeno mi je, izgleda, na opšte YuZadovoljstvo, da rečeni problem sam rešim, i time se plasiram u uži izbor za neki od narednih BajtovaLP. Rešenje je bilo u prenosu argumenata po referenci, tj. nizu koji se prosleđuje opštoj funkciji Dig() mora da prethodi operator č. Iz niže navedenog primera može se videti kako to izgleda u praksi. Kada zaboravimo da uključimo CapsLock, a primetimo da nam se provukao neki MaliYu, pritisnemo "strelicu na dole" i stvar će biti u redu; možemo, takođe, bez brige napustiti get-read sa <enter>, MaliYu će automatski postati VelikiYu. Za braću koja nemaju Masm prilažem ovde yu.obj. Da podsetim da se i asem obj linkuju kao i svi drugi obj fajlovi, u ovom slučaju, recimo: RTlink Fi MojProg,Yu Lib ... I još nešto. Ovo nikako nije homoljski hir. Zamislite da je korisnik nepažnjom uneo "žIVKOVIć" a traži "čIVKOVIĆ"-a? Ja toliko po "tem pitanju". Hvala braćo, drži tata; odoh ja u šumu da spremam drva! **** * cNiz:=cNiz1:=cNiz2:=cNiz3:=SPAC(30) č 1,1 GET cNiz1 pict "č!" VALID Dig(čcNiz1) č 2,1 GET cNiz2 pict "č!" VALID Dig(čcNiz2) READ č 3,1 GET cNiz3 pict "č!" VALID Dig(čcNiz3) READ * FUNC Dig(vNiz) vNiz := YUPPER(vNiz) RETURN .T. ******************** * yu.asm * prema nBatocaninu * kao što rekoh ******************** INCLUDE EXTENDA.INC DATASEG CLpublic <YUPPER> CLstatic <string smallyu "žčšćđ"> CLstatic <string bigyu "螊ĆĐ"> CLfunc char YUPPER <char str> CLcode PUSH ES PUSH BP PUSH SI JMP begin r_str DB 80 DUP(0) begin: LES SI, str MOV BX, 0 cikl: MOV AL, ES:ŠSI+BXĆ MOV r_strŠBXĆ, AL OR AL, AL JZ kraj CMP AL, 'a' JL yu_letter SUB BYTE PTR r_strŠBXĆ, ' ' JMP next_char yu_letter: MOV BP,0 tab: MOV AL, BYTE PTR smallyuŠBPĆ OR AL, AL JZ next_char CMP BYTE PTR r_strŠBXĆ, AL JNE next MOV AL, BYTE PTR bigyuŠBPĆ MOV BYTE PTR r_strŠBXĆ, AL next: INC BP JMP tab next_char: INC BX JMP cikl kraj: MOV AX, SEG r_str MOV BX, OFFSET r_str POP SI POP BP POP ES Clret AX BX END yu.obj
clipper.895 ndragan,
/ :) Pogotovu 'na licu mesta,' gde je recimo XT sa 80ms diskom ;) Ih te bi trebalo zakonom zabraniti.
clipper.896 ndragan,
/ bodovao i jezik DBMS proizvoda i sećam se da je Clipper bio daleko / iznad ostalih u toj kategoriji. Bogami, mora da žiri intimno voli Ce. Ovo primera iz 5.01 koje ste okačili u ovoj temi me je i navelo da kažem da mi kliper sve više liči na pretprocesor za Ce kompajler.
clipper.897 ndragan,
/ što sam zbudžio preračunati peške ;(( ) i nisam moga da pročitam bazu / iz Dbase-a, a DBU nisam imao. Peške? No, za pešačke preračune sa neprekidnim zavirivanjem u bazu (da vidimo šta smo napravili) posle svakog koraka, foks je ipak nenadjebiv.
clipper.898 vili,
> vec unetog teksta, Clipper ne prepisuje novi sadrzaj preko starog, vec > stari oznaci da je spreman za brisanje a novi doda na kraj dbt baze. > Zato DBT raste ko da je u metastazi. Suvisan tekst, samim tim i svodenje > DBT-a na njenu pravu velicinu, vrsi se povremenim kopiranjem cele baze. > Najbolje je ovo kopiranje ugraditi u meni kao opciju, a procedura bi > izgledala ovako: Pa ovo je idiotski! (Mislim na memo polja) Ocigledno je da Clipper ima BIG BUG sa memo poljima. > DBT, da je ziv i zdrav, to treba i da radi. Znam za testove sa DBT > velicine 20 MB; kod mene je trenutno negde oko 2 MB, i sve savrseno > radi. > A kako bi taj DBT od 2MB radio na mom disku od 42MB? Posle nekih dvadesetak memoedita (u kojima se samo vrsi izmena odredjenih karaktera) javio bi da nema mesta na disku.!!! > Ovako na uvce, mislim da je problem u nepotrebnom ulazenju u memoedit. ^^^^^^^^^^^ Sta znaci nepotrebno ulazenje u memoedit???? Ako u programu postoji opcija za izmenu ili unos memo podatka da li treba korisniku da 'napomenem' da tu opciju koristi samo 2 puta ili 7 puta ili koliko puta? Vili
clipper.899 nbatocanin,
@ x,y GET cProm1 VALID DiziBre() @ x,y GET cProm2 VALID DiziBre() itd.... READ FUNC DiziBre GetActive():varPut(YUpper(GetActive():buffer)) RETURN .T. A!!??? Koga ne mrzi da se bakće, može se vrlo lako postići da se YU slova dižu i *za* vreme kucanja (kao sa PICTURE "!!!") - pogledajte GetApplyKey() u GETSYS.PRG. xNenad
clipper.900 d.petrovic,
Ă> Sta znaci nepotrebno ulazenje u memoedit???? Ako u programu postoji Ă> opcija za izmenu ili unos memo podatka da li treba korisniku da Ă> 'napomenem' da tu opciju koristi samo 2 puta ili 7 puta ili koliko Ă> puta? Postade zanimljivo pitanje. Možda pri startovanju (ne nikako pri ulasku u memoedit, tek bi posle pričali da je Kliper spor :)) ) programa proveriti koliko ima mesta na disku, pa upozoriti, pa ponuditi pakovanje, pa...
clipper.901 d.petrovic,
Ă> Peške? No, za pešačke preračune sa neprekidnim zavirivanjem u bazu Ă> (da vidimo šta smo napravili) posle svakog koraka, foks je ipak Ă> nenadjebiv. Grrrrrrrr ;))) Ko je pominjao Blafa i Floka ? ;) Ma ja sam morao da izvadim iz polja u bazi neke gluposti, da pofaćam brojeve Ascii kodova i sve to izpreračunavam na digitrončetu mu da bih nekako ukapirao šifru za ulazak u program. Sva sreća što sam se malo pre toga opametio pa za sve aplikacije mrsim brojeve na isti način pa sam znao šta da bockam na digitrončetu. Mrrrrrzelo me da idem kući, pa da vadim moju bazu, pa... . Sad imam bolji fazon, znam napamet šta treba da se upiše da bih ga startovao MOJOM šifrom :))
clipper.902 dpaun,
Ko o čemu, dPaun o memu! Poznato je da MemoEdit() može da obrađuje niz dužine 64K; Ako se proba nešto veće, on to neće i u DOS izleće. Takođe veći fajl ne da ni da se pregleda. Tada će, doduše, učitati deo fajla, ali u praksi ima situacija kada je neophodno da iz našeg Clp programa listamo txt fajlove neograničene veličine. Ovaj slučaj detaljno razmatra, uz listinge primera, Rick Spence u knjizi "Clipper 5, vodič za programere", u delu "Prikazivanje velikih datoteka ili niza znakova". Kako sam zbog lenjosti propustio da blagovremeno naručim disketu sa listinzima, ja sam pomenute primere prekucao, ali taj moj brikolaž nikako da oživi. Pa sad pitam braću uzduž i popreko: da li je to rešio neko? Brže s odgovorom, dosta sam čeko! dPaun. PS. Znate li kakva je šuma u jesen, kad njome čovek hoda zanesen!
clipper.903 ppekovic,
>> Peške? No, za pešačke preračune sa neprekidnim zavirivanjem u bazu (da >> vidimo šta smo napravili) posle svakog koraka, foks je ipak nenadjebiv. Da, a ja sam čuo da u SCO-u pripremaju novu verziju UNIX-a pisanu na clipper-u, clipper je nenadmašiv u pisanju rezidentnih programa, kao i za programiranje CNC mašina. Ovako možemo dokle god hoćeš, ali je zaista bez ikakvog smisla. Valjalo bi ipak prvo da se raspitaš kakve su mogućnosti clipper-a za praćenje stanja baze posle svakog koraka pa da onda ocenjuješ šta je nenadjebivo a šta nije. Da ti pomognem, clipper jednu lepu stvar koja se zove clipper debuger. Paya
clipper.904 dpaun,
>> može se vrlo lako postići da se YU slova >> dižu i *za* vreme kucanja (kao sa PICTURE "!!!") Bio bi to mali korak za tebe a veliki za Yužovečanstvo. A još ako bi to zakačio ovde, znao bi o tebi i Vita šumar iz Ravne Reke, i moj komšija Vlasta Bačilo, s kojim koljem drva u šumi, i njegova žena Vilarija, i ... >> pogledajte GetApplyKey() u GETSYS.PRG. Ja gledao, ništa ne video, što video - nisam razumeo, pa sam onda čarne oči kleo - čarne oči, nek vam vid iskoči >> xNenad yPaun.žovekIzŠumeKojiNeRazume
clipper.905 dpaun,
>> Sta znaci nepotrebno ulazenje u memoedit???? Ne samo nepotrebno ulaženje, već i nepotrebno korišćenje memo tipa. Je si li pročitao navedeo poglavlje kod R. Spensa? >> Pa ovo je idiotski! (Mislim na memo polja) Ocigledno je da Clipper >> ima BIG BUG sa memo poljima. >> Ja ne mislim da je reč o bagu, već o još nedorađenom alatu. Kada bude tekstualna baza postala pomodna stvar, kao sada DBF, tada će i to morati da se uredi. Što se tiče DBF-a, stvar je rešena tako što ti kažeš koliko ti iznosi polje, i program ti, kod dodavanja novog sloga toliki prostor rezerviše na disku, bez obzira da li nešto piš(n)eš u njega ili ne. Dužina takvog polja, koliko se sećam, ne može da bude veća od 255 karaktera, ili se i ovde nešto promenilo u međuvremenu? I ova baza, tj. DBF, raste isključivo prema mustri koju si skrojio na početku. DBT, odnosno memo, predviđen je za upisivanje većih nizova čija se dužina ne može unapred predvideti. Jedino ograničenje je, zasad, na 64K. Bitnije od ovoga jeste sam koncept: DBT će se povećavati samo kada se nešto unese u memo polje baze, a ne uvek kada se sa APPEND BLANK doda novi slog. Kako reče brat Nenad, kad god pipneš REPLACE memo WITH memo_polje ... Zato je veoma važno proceniti, prilikom krojenja baze, da li je memo polje neophodno, ili se stvar može rešiti na drugi nači. Kod unošenja novog teksta u bazu nema problema; novi tekst će biti upisan u DBT, ona će se povećati u skladu sa tim unosom plus još neki sitniš preko toga. Problem, po meni, nastaje kod izmena u već unetom tekstu. Kada, na primer, nekim tekst procesorom ili editorom menjamo tekstualni dos fajl, on će biti vraćen na disk u skladu sa izmenama. Bolje reći, zauzeti prostor na našem disku neće se povećavati posle svake izmene u nekom tekstualnom fajlu. Ali, o tome brine DOS. Clipper, očigledno, nije smatrao da treba da ima mali DOS u sebi (bar ne zasad), koji će ovu stvar voditi u skladu sa komunalnom logikom. Moja iskustva sa Memo i DBT, pored svih očiglednih nedostataka, jesu ohrabrujuća. Nedostatke ne vidim u ovom kancerogenom konceptu DBT-a, već u siromašnim i oskudnim opcijama koje su ugrađene u MemoEdit(). Nešto se, doduše, može uraditi preko korisničke funkcije, ili, čak, potpunim isključenjem MemoEdita i korišćenjem spoljnog editora. >> A kako bi taj DBT od 2MB radio na mom disku od 42MB? Posle nekih >> dvadesetak memoedita (u kojima se samo vrsi izmena odredjenih >> karaktera) javio bi da nema mesta na disku.!!! Po ovome zaključujem da se, možda, pomalo i ne razumemo. Moje MemoEdit seanse su, na primer, između 1 i 30 KB. Reč je o tekstovima koji nastaju u toku terenskih istraživanja, o ispisima iz literature, o ... itd. Izmene i dopune u već unetim tekstovima moram da vršim čak češće od unosa nove građe. Naravno, ždraknem bar jednom nedeljno DBT i startujem opciju za sažimanje prema potrebi. To sažimanje (naveo sam primer u prošloj poruci), traje sve duže što je DBT veći. Ranije mi je to smetalo, sada to vreme koje čekam nazivam humanim vremenom koje mi bezdušna mašina daruje. Pa podignem pogled, pa primetim ljubičastu šminku na mladoj koleginici, pa primetim obline na čistačici, pa ... Pokušavam da zamislim problem koji te je naveo na memo, ali ne mogu. Ako ti nije mučno, opiši tu situaciju. Brate Vili, niko te bolje od mene neće razumeti, jer sam svu svoju sudbinu predao u ruke Clipperu baš zbog njegovog memo koncepta. dPaun
clipper.906 pjankovic,
O problemu pregleda tekstualnih fajlova vecih od 64 Kb: Svojevremeno je NBatocanin u "Racunarima" objavio asemblerski program kojim se mogu listati datoteke proizvoljne duzine, ali ne samo to. Direktno iz listanja se moze fajl odstampati, moze se izabrati kvalitet stampe i tako dalje. Medjutim poslije nekoliko uzaludnih pokusaja da asemblerski listing prilagodim svojim potrebama (naizgled je sve dobro radilo, ali je poslije izvjesnog vremena pocinjao da se "brlja" ekran) i posto me je mrzjelo da se dalje bakcem sa asemblerom, napisao sam to isto u Clipperu. Naravno, NE sve u Clipperu. Funkciju za ispis na ekran sam napravio u C-u (direktno u video memoriju). E sad, znam sta vas najvise interesuje: Koliko je to brzo (ili sporo). E pa, brze nego sto sam ocekivao. Na samu brzinu skrolovanja nemam zamjerki: sasvim je zadovoljavajuca. Jedino se malo duze ceka na prenos bloka u memoriju ( u memoriju ucitavam samo odredjen broj linija). Na primjer, da bi se ucitalo 1000 linija potrebno je oko 2 sekunde. Sigurno da su moguca ubrzanja ali me je mrzjelo da tome posvetim vise vremena. I u biblioteci NFLib (ima na Sezamu) postoji funkcija za pregled fajlova neogranicene duzine. Medjutim, ona izgleda nije bas cisto napisana. Cini mi se da nesto brlja po memoriji jer se poslije dva-tri njena poziva u ostalom dijelu pisanom u cistom Clipperu javljaju cudne greske tipa " varijabla nije definisana".
clipper.907 toma,
Uz poruku zakačen spisak fajlova sa Rhinoceros BBS-a koji imaju neke veze sa Clipper-om. Pošto sam video dosta lepih stvari, zamolio bih organe da organizuju neko eventualno prebacivanje istih u CLIPPER direktorijum SEZAM-a. Pozdrav from Toma. za_clip.zip
clipper.909 snemcev,
Pazi ovo: Deklarišem ja danas neke promenljive za jednu proceduru, i koristeći modućnost Clipper-a 5.01 da odjednom inicijalizujem više promenjljivih pišem ovo: ... PRIVATE bla_bla := tra_la_la := tandara_broc := šć ... i nizove popunjavam kasnije iz programa u stilu ... AADD( bla_bla, 'prvi niz' ) AADD( tra_la_la, 'drugi niz' ) AADD( tandara_broc, 'treci niz' ) ... i neće da radi ono što treba, pa to ti je. Elem, pokrenem ja isterivač duhova, pardon bubica i na jedno ?LEN( bla_bla ) posle izvršenja ove tri instrukcije on odgovara 3! Ja se ne dam zbuniti, i pitam ?LEN( tra_la_la ), a on: 3! E sad već počinjem da brinem. Zatražim ja ?bla_blaŠ1Ć, a on kaže "prvi niz", kao što i treba da bude. Iznenađenje tek sad dolazi: ?bla_blaŠ2Ć daje "drugi niz", a ?bla_blaŠ3Ć "treci niz". Jel to zdravo imati tri niza koji su u stvari jedan niz? Očigledno da im Clipper prilikom inicijalizacije dodeljuje isti memorijski prostor. Još jednom, u malo izmenjenom obliku hamletovsko pitanje 'Bug or feature'? Ili to ipak piše negde u dokumentaciji kojoj nisam posvetio baš previše pažnje? snemcev P.S. Sorry zbog uglastih zagrada, koristim YUSCII standard.
clipper.910 nbatocanin,
> Održavanje funkcija je relativno lako -- ako si je > ispravio, a koristiš je u više programa, bez problema ćeš > je nadalje koristiti u svima. Ali ako menjaš ove > 'translacije,' šta onda? E, pa tu je kvaka: ovako je još bolje! Gledaj to malo i sa druge strane: ta nova naredba može biti dragocen tampon između funkcije i programa. Evo na šta mislim: ako promeniš poziv funkcije (parametre), moraćeš da menjaš to po svim programima. Ako si koristio pretprocesor, možeš samo dodati nove opcije koje pokrivaju nove parametre, a može se koristiti i stari oblik! Tako si samo izmenom definicije naredbe uradio ceo posao. Ovo je odlična stvar. > Drugi problem je još fundamentalniji -- translacije treba > da ti obezbede da ako ONO U ŠTA SE TRANSLIRA tvoj program > budu promenili, ti i dalje možeš da ga prevodiš bez brige. > Ako počneš i sam da daješ 'niske udarce,' programi ti još > više postaju zavisni od verzije kompajlera. Da, ali ako pogledaš u šta se translira (bazični Clipper), to nema šanse a i potrebe da se promeni. Osnovne konstrukcije i pozivi funkcija. Kritični su jedino pozivi funkcija, a tu je kompatibilnost strašno lako sačuvati: ne diraš staru funkciju, već je označiš kao zastarelu. Uostalom, Clipper 5.0 ima mnogo prostiji osnovni jezik od s'87. > Da li time što uvodiš translate trikove i strukturno slabiš program > (u smislu da ti je više dozvoljeno nego pre, a ne proverava se u toku > prevođenja?) Tačno je da se tako zaista malo slabi analiza, jer se pretprocesiranjem gube informacije o polaznoj naredbi, ali kao posledicu tu vidim jedino slabije poruke o greškama. Kada bi se u definisanje novih naredbi uključila i obrada grešaka, sve bi se mnogo iskomplikovalo. Ono što sam ja radio (ne previše), veoma lepo radi i ne pravi probleme. Nemam ideju gde bi moglo biti problema, jer je princip po kome radi #translate veoma prost. > Šta to znači 'kodni blokovi bi mogli stvarno da se > prevode?' Zar se sada ne prevode? U čemu je onda trik? Koliko je meni poznato, u interni Clipper p-kod. Ako je pitanje zašto, mislim da je zbog konstrukcija tipa { || &expr } i pristupanja poljima baze. Kako da generiš kod kad se referišeš na nešto za šta ne znaš ni šta je za vreme prevođenja? > Na kraju se ipak došlo do neke 'razumne sredine.' Ta razumna sredina > je da jezik treba da ima što manje ključnih reči, što uniformniju > sintaksu, dobro rešen 'scope' promenljivih, i kontrolu tipa > prosleđenih parametara... Pazi, Clipper nije klasičan programski jezik: ko je video jezik sa *naredbom* za tabelarni pregled podataka? Ovo je specijalan jezik, a u njemu je štos dodati bezbolno more funkcija, a čini mi se da je za to uvođenje ključnih reči najbolji način. > A šta meni najviše smeta kod Klipera? Po meni, baš to što > nije dovoljno kompajler -- a mogao je da bude... Ja bih najviše voleo da naprave mogućnost nekih "brzih" delova programa. Na primer, označiš markerima "brz" deo programa, tu smeš da koristiš redukovani jezik (bez makroa i sl. gluposti), ali se generiše pravi prevod: time bi se potpuno izbegla potreba za stalnim skokovima u C i u ASM. > Da, umesto izmišljanja preprocesora (kojim su, > opet, zakopali sebe time što za taj jezik nikada neće moći > da se napravi čvrsta sintaksna provera -- pričao sam ti da > sam želeo čak i sam to da realizujem -- sada je to > nemoguće...) Ne bi rekao. BASIC Clipper nema pojma ni o kakvom pretprocesoru i ništa lakše nego uz svaku promenljivu čuvati i tip i kad se napiše X := "A", a X je broj, on da se buni. Ali, pravi problem su tu run-time operacije: makroi i podaci u bazi. Ko će ovde da kontroliše tip za vreme prevođenja: &cTmp := &cStr a kad bi se uvela kontrola za vreme rada to bi tek bila katastrofa od sporosti! > 'Pravi' bi bio jedan čvrst jezik, primeren kompajliranju, > koji bi radio SVE MOGUĆE provere u toku kompajliranja, a > 'kompatibiliti' bi služio onima koji ne žele da iskoriste > čitave procedure pisane u starom maniru (ali, šta će im > onda novi prevodilac O:) ?) Ja i dalje mislim da je 90% Clipper koda dovoljno brzo. Kad bi se dodala mogućnost onih "brzih" delova, bilo bi savršeno. > Sad sam se setio -- za te stare aplikacije najbolnija tačka bila je > nemogućnost svapovanja samih sebe pre startovanja eksternog programa. Ima dosta tih programčića od nekoliko K koji svopuju sve na disk ili u EMS, pa startuješ šta oćeš. Mislim da je glupo kresati performanse da bi se ovo postiglo u samom jeziku tako što se smanji zauzeće memorije. Ono, mogli bi da ugrade neku takvu funkciju u CLIPPER.LIB. > Donela je virtuelnu memoriju. Ali ako je stara aplikacija radila bez > virtuelne memorije, šta će mi onda virtuelna? Sve u svemu, što bi > neko staru aplikaciju uopšte prevodio novim prevodiocem? Zato što imaš novi kvalitet. Pre je stalno bila frka ako upotrebiš veliki niz ili string - Out of memory! A sada, možeš bez problema da kreiraš "memorijske datoteke" - nizove: ako ima memorije biće vrlo brzo, ako nema radiće sa diskom i biće kao da je sa datotekama. > Ovako, sve je, ipak, ostalo nekako nedovoljno... 5.0 je > nedovoljno interpreter Zašto? Ja i ovo malo interpretatorskih mogućnosti slabo koristim. > ali, što je još nezgodnije, i nedovoljno kompajler... To jeste. > A počelo je od tabela koje je trebalo da ti sračunaju relativno > proste stvari... Jeste. Treba samo videti evoluciju programskih paketa. Prvo naprave nešto (v1.0). Onda naprave to upotrebljivo (v1.1 ;). Zatim ugrade zahteve korisnika (v2.0), upotrebljivo (v2.1 ;), itd. Na kraju dobijaju proizvod sa brdom funkcija, a da time *još* nisu zadovoljili ni blizu sve korisnike. I onda posežu za spasonosnom (?) idejom - programski jezik kojim se to čudo programira. I onda kažu: "Jeste, toga nema, ali uz pomoć makro-jezika...". Tako danas i najgluplji proizvodi imaju svoj makro jezik. Da li se time definitivno dokazuje da je programiranje jedini efikasan način za rešavanje problema? > E sad, možda je moje očekivanje da Kliper uđe u onu drugu > kategoriju bila nerealna? Ni meni nije jasno zašto nisu probali da prebace Clipper na neki drugi OS do sada. Mislim da bi to bilo dosta jednostavno. > Kad smo već kod jezika, da li se slažeš da bolje zvuči > 'blokovi koda' nego 'kodni blokovi?' Nisam neki stručnjak, pa ne znam šta da kažem. Ja sam "code blocks" prvo preveo kao "kod blokovi", što je J. Regasek u mom tekstu prepravio u "kodni blokovi", to mi se učinilo dobro i sad to koristim. Kad pričam ja kažem "kod blokovi".
clipper.911 neman,
> Pošto sam video dosta lepih > stvari, zamolio bih organe da organizuju neko eventualno > prebacivanje Pa da ti malo smanjim doživljaj. I ja sam tako mislio dok nisam počeo da ih skidam. Veeelika većina stvari je stara 1987-1990, neke su još za Clipper86. Neke su SHAREWARE pa su u aplikaciji neupotrebljive (ispisuju poruke o tome). Neke postoje na SEZAMU. Ima par interesantnih funkcija, ali su one razbacane po raznim datotekama, neke su više puta definisane. Uglavnom su pokrivene NANFOR-om. Ako ste zainteresovani, spremiću pregled sadržaja datoteka.
clipper.912 janko,
Ne mogu a da na početku ne izrazim veliko zadovoljstvo što se diskusija jako lepo (po meni) razvila... > Da, ali ako pogledaš u šta se translira (bazični Clipper), > to nema šanse a i potrebe da se promeni. Osnovne > konstrukcije i pozivi funkcija. Kritični su jedino pozivi > funkcija, a tu je kompatibilnost strašno lako sačuvati: ne > diraš staru funkciju, već je označiš kao zastarelu. > Uostalom, Clipper 5.0 ima mnogo prostiji osnovni jezik od > s'87. Pod pojmom bazični Kliper smatraš direktne pozive funkcija (tj. drugu stranu translejt direktiva)? Da li si negde pročitao garanciju Nantuketa da jezik ni na tom nivou neće da se promeni? Nisam razumeo narednu rečenicu. Kako se to 'ne dira stara funkcija nego označi kao zastarela?' >> Šta to znači 'kodni blokovi bi mogli stvarno da se >> prevode?' Zar se sada ne prevode? U čemu je onda trik? > > Koliko je meni poznato, u interni Clipper p-kod. Ako je > pitanje zašto, Nije mi ni palo na pamet! Hvala na objašnjenju. > Ja bih najviše voleo da naprave mogućnost nekih "brzih" > delova programa. Na primer, označiš markerima "brz" deo > programa, tu smeš da koristiš redukovani jezik (bez makroa > i sl. gluposti), ali se generiše pravi prevod: time bi se > potpuno izbegla potreba za stalnim skokovima u C i u ASM. Eto, tu se slažemo. Proširi 'brze' delove na CEO program i eto čvrstog programskog jezika. Samo, onda ne otpadaju samo makroi, već još štošta... Ono gde bi sigurno trebalo ostaviti neku interaktivnost su upiti -- na neki način bi i dalje bilo fundamentalno da mogu da se formiraju u toku izvršavanja. >> 'kompatibiliti' bi služio onima koji ne žele da iskoriste >> čitave procedure pisane u starom maniru (ali, šta će im Ovde sam ja pogrešio -- ono 'ne žele' je trebalo, valjda, da bude 'žele?' >> Ovako, sve je, ipak, ostalo nekako nedovoljno... 5.0 je >> nedovoljno interpreter > > Zašto? Ja i ovo malo interpretatorskih mogućnosti slabo > koristim. Možda zato što si tzv. 'ful tajm Kliper programer?' Ili se ja nisam dobro izrazio na temu interpretiranja? Jednostavnost interaktivnosti je mnogo lepa stvar -- da li koristiš diBejz UZ Kliper? Kako 'sređuješ' stvari ručno, 'iz glave' kreiraš baze i tako to? Sve Kliperom ili...? >> Donela je virtuelnu memoriju. Ali ako je stara aplikacija >> radila bez virtuelne memorije, šta će mi onda virtuelna? >> Sve u svemu, što bi neko staru aplikaciju uopšte prevodio > novim prevodiocem? > > Zato što imaš novi kvalitet. Pre je stalno bila frka ako > upotrebiš veliki niz ili string - Out of memory! A sada, > možeš bez problema da kreiraš "memorijske datoteke" - > nizove: ako ima memorije biće vrlo brzo, ako nema radiće > sa diskom i biće kao da je sa datotekama. Koliko je virtuelna ta virtuelna memorija, usput? Da li si primetio neka ograničenja koja su ti se pojavila u praksi? Za kod mi je jasno da ga može da 'preklapa' koliko hoće... ali kako se ponaša baš sa varijablama? Gde su kod njih granice? Da li je, generalno, njih manje bolno koristi umesto manjih datoteka?
clipper.913 kanda,
>> proba nešto veće, on to neće i u DOS izleće. Takođe veći fajl ne da >> ni da se pregleda. Tada će, doduše, učitati deo fajla, ali u praksi >> ima situacija kada je neophodno da iz našeg Clp programa listamo txt >> fajlove neograničene veličine. Ovaj slučaj detaljno razmatra, uz >> listinge primera, Rick Spence u knjizi "Clipper 5, vodič za >> programere", u delu "Prikazivanje velikih datoteka ili niza znakova". Pa vidi DPaune, ako ti treba samo pregled datoteke, recimo pregled izvestaja pre stampanja, napravi TBrowse, i nabudzi mu GoTopBlock, SkipBlock i GoBottomBlock da se pomeraju po linijama teksta u datoteci, i definisi jednu kolonu da prikazuje sadrzaj aktuelne linije. Stvar radi prihvatljivo brzo i kad se sve napise u kliperu.
clipper.914 snemcev,
>> Program se kod mene nije hteo kompajlirati na clipper 87. >> Ispravio sam par sitnica i dodao pred-program za testiranje i >> još preveo na standard "Računari"... I evo ga! Probao sam i dobio malo čudne rezultate. Recimo: 11000 - jedanaesthiljad ( gde je a? ) 12000 - dvanaesthiljade ( treba hiljada a ne hiljade ) 13000 - trinaesthiljade ( isto ) 14000 - četrnaesthiljade ( isto ) 15000 - petnaesthiljada ( OK ) 11000000 - jedanaestmilion ( gde se dede a? ) Objašnjenje? snemcev
clipper.915 snemcev,
>> Ja gledao, ništa ne video, >> što video - nisam razumeo, >> pa sam onda čarne oči kleo - >> čarne oči, nek vam vid iskoči Ovo treba u VICEVI:najbolji! Do suza sam se ismejao! snemcev
clipper.916 pjankovic,
> Jel to zdravo imati tri niza koji su u stvari jedan niz? > Ocigledno da im Clipper prilikom inicijalizacije dodeljuje > isti memorijski prostor. Jos jednom, u malo izmenjenom > obliku hamletovsko pitanje 'Bug or feature'? Ili to ipak > pise negde u dokumentaciji kojoj nisam posvetio bas > previse paznje? Tacno je da ova tri niza zauzimaju isti memorijski prostor. Svaka izmjena u jednom automatski mijenja i druge. Prema tome : "It's a feature!".
clipper.917 ciki,
Procitah malopre neke malo starije porukice i videh da je aktuelna rasprava u semi oko dizanja YU slova u toku unosa GET/READ. Ok imamo source u asm-u i to radi OK. Aj sada da probamo ko sto rece nb da malo caprkamo po getsys-u,kada ono problema i problema. Sva sreca to sam pokusavao odavno da uradim pa vam prenosim svoja isku- stva. GET klasa ima mnogo svojih metoda(startujte samo NG pa vidite),od kojih je za nas narocito zanimljiva picture, jer get:picture daje picture niz koji je korisnik definisao.(Ovo svi znamo ali ipak) Naizgled evo naseg resenja ali to moze da upali u 25-40% slucajeva ako se bas ne bacimo u analizu GET klase. Ako je picture niz "č!" to je Ok jer dovoljno je to ispitati i ubaciti u getsys nesto kao ..................... if ( Set(_SET_INSERT) ) if (get:Picture == "č!") do case case cKey == "š" get:Insert("Š") ..................... (Moze krace ali radi slikovitosti) Ali zamislite picture u semi "99!!!X!999" (Ima sadista pa moras na sve racunati.). Sta sada ostaje.Pronaci uz pomoc neke metode get klase trenutni polozaj kursora unutar picture stringa pa ga usporediti sa ! itd... Puno srece onome ko ovo radi. Pozdrav Kikile! P.S. Ako neko uradi neka ga UL.
clipper.918 nbatocanin,
> Dužina takvog polja, koliko se sećam, ne može da bude veća od 255 > karaktera Može do 64K. > Bitnije od ovoga jeste sam koncept: DBT će se povećavati samo kada se > nešto unese u memo polje baze, a ne uvek kada se sa APPEND BLANK doda > novi slog. Na žalost, nije tako :((. Probajte ovo: FOR i := 1 TO 1000 REPLACE Memo WITH Space(600) NEXT > Nedostatke ne vidim u ovom kancerogenom konceptu DBT-a, već u > siromašnim i oskudnim opcijama koje su ugrađene u MemoEdit(). Ja suprotno: ništa mi se ne sviđa rad MEMO sistema, ni MemoEdit nije nešto, ali se da dosta učiniti. Biće tekst o tome u narednim "Računarima". Trebalo bi nabaviti neku od zamenu za memo polja, ima ih prilično.
clipper.919 nbatocanin,
Nećete verovati koliko je prosto: treba samo dodati jednu naredbu u GETSYS.PRG (zbog orijentacije sam dodao i okolni kod): ... // --- Ovo je dodato IF "@!" $ get:picture ; cKey := YUpper(cKey) ; END IF // --- Ovo je dodato if ( Set(_SET_INSERT) ) get:Insert(cKey) else get:Overstrike(cKey) end ... > A još ako bi to zakačio ovde, znao bi o tebi i Vita šumar iz > Ravne Reke, i moj komšija Vlasta Bačilo, s kojim koljem > drva u šumi, i njegova žena Vilarija, i ... Držim te za reč :))
clipper.920 nbatocanin,
> Ili to ipak piše negde u dokumentaciji kojoj nisam posvetio baš > previše pažnje? Piše, i tako je. Ponekad je i korisno.
clipper.921 ciki,
Ho! Na pocetku da kazem da pod metodama podrazumevam vidljive promenljive instanci!! Opet ja, ali samo sada sam uradio da se tokom pisanja dizu nasa slova, caprkajuci po getsys.prg-u. Ako ima zaintresovanih mogu priloziti i listing sa sve izmenama(iako je to zabranjeno (zar ne?)). Za one koji hoce i dalje da se muce evo pomoci. Primenjujte metodu get:Pos koja daje trenutno mesto get bafera, pa ga vezite za picture,tj. na primer: CIKI____ ž --> sada je get:pos daje 5(cudo jel da?) E sada ako imas picture oblika "!!!!!!!!" a ti jedno ┌────────────────────────────────────────┐ │ if substr(get:picture,get:pos,1) == "!"│ └────────────────────────────────────────┘ primenis i onda jos malo izmenis GetApllyKey() da bi mala slova za- menio velikima... Normalno ako ti je picture izraz "č!", onda izostavi ono uokvireno, vec odmah predji na dizanje slova. Koliko muke, a kako prosta stvar. Pozdrav Ciki! P.S. Moram izraziti zahvalnost I dpaun-u,pa nbatocaninu na ideji,i muci da mi podobno objasni svoj view program.
clipper.922 ciki,
Eh sada procitah odgovor nbatocanina(krace za 20 linija nego moje, ali se oslanja na assembler. Pozdrav Ciki!
clipper.923 dejanr,
>> Probao sam i dobio malo čudne rezultate. Recimo: >> 11000 - jedanaesthiljad ( gde je a? ) >> Objašnjenje? I ja sam malo pogledao, i jedino objašnjenje je logička greška koju je autor napravio. Naime, on kada vidi hiljade, milione itd, tretira sve prema istom algoritmu, a raspon 10-19 je specijalan. Recimo kaže se dve hiljade, tri hiljade ali i dvanaest hiljadA, trinaest hiljadA, a posle opet dvadeset dve hiljade, dvadeset tri hiljade itd. Program ovaj izuzetak naprosto nije predvideo. Dakle, ostaje da neko sam pokuša da ispravi program ili da se nadamo da će autor to čuti i "srediti", pa nam poslati ispravnu verziju.
clipper.924 d.petrovic,
Ă> Eto, tu se slažemo. Proširi 'brze' delove na CEO program i eto Ma ljudi bre, preterujete više sa tom sporošću klipera !!! Za šta se Kliper koristi nego za baze podataka i šta rade nego komuniciraju sa nekom prosečno obdarenom ženskom. E, sad: Ako takva prosečna ženska stiže da prati šta program radi i još da čeka da program svoj deo posla završi (osim pri reindeksiranju, pakovanju i sl.) onda to ne valja. Ali, ako maalkice iskusniji i domišljatiji (namerno kažem domišljatiji, jedino treba da zamisli operatera pri radu, koji trese cigaru u pikslu između unosa dveju stavki, mada je retko i toliiiiiko vremena potrebno da se izvrši deo programa, recimo da izvrši commit što ja radim češće, kad god menja vrstu rada) programer iskoristi vreme između dve reakcije programera niko se neće žaliti da mu kliper spor. Pa radi ti isto to i u asembleru pa će ti "skoro" isto vreme trebati ako je vreme pristupa HD-u 27 ms !! Bilo bi stvaaaarno puno da sad nastavim bla, bla kako to realizovati, ali uopšte nije teško. Ja pri testiranju najčešće ne mogu da stignem da unesem sve što traži iako unapred znam šta će sve desiti ako pritisnem....itd. Pozdrav, Dejan
clipper.925 d.petrovic,
Ă> Na žalost, nije tako :((. Probajte ovo: Ă> Ă> FOR i := 1 TO 1000 Ă> REPLACE Memo WITH Space(600) Ă> NEXT Ma to smo već zaključili ! Izgleda da si ti samo nešto preskočio. E, sad (lakše mi ovde da pitam nego da časkom probam ;)))) ) jel se to beše eliminiše sa PACK ? Pozdrav, Dejan
clipper.926 janko,
> Ă> Eto, tu se slažemo. Proširi 'brze' delove na CEO > program i eto > > Ma ljudi bre, preterujete više sa tom sporošću klipera !!! :) Speed was not an isue here, što kažu... NB je pominjao 'brze delove' ali je ideja bila u tome da nije nužno da se sve interpretira, već da bi bilo lepše da se stvarno prevodi... A ja sam o tome pričao ne zbog brzine, već zbog sigurnosti programera... o čemu sam napisao kilobajte i kilobajte pa ne bih da sad ponavljam... ima sve u ovoj konf... > reindeksiranju, pakovanju i sl.) onda to ne valja. Ali, > ako maalkice iskusniji i domišljatiji (namerno kažem > domišljatiji, jedino treba da zamisli operatera pri radu, > koji trese cigaru u pikslu između unosa dveju stavki, mada > je retko i toliiiiiko vremena potrebno da se izvrši deo > programa, recimo da izvrši commit što ja radim češće, kad > god menja vrstu rada) programer iskoristi vreme između :) Tipično ponašanje programera koji NE koriste svoje programe je da prave prilično slabašne (da ne kažem teško upotrebljive) korisničke interfejse. Tako da ono 'znam šta nailazi' retko ima smisla ako je interfejs slab... jer nije isto unositi proizvoljne vrednosti i unositi bitne podatke. No, skrenuo sam sa teme... žak i to, što je odziv spor, neki koriste da uliju veće strahopoštovanje... ako ti kompjuter preračunava plate za petsto ljudi dva sata, a na ekranu je poruka 'sačekajte malo,' amater ga gleda kao boga... ako to isto uradi za manje od minuta na XT-u, ljudi misle 'pih, pa to je * dim.' Ipak, oni koji koriste ovaj drugi posle ovog prvog, već umeju da cene taj drugi program. Ova ideja da programu ne smeta da radi dugo nije pala na pamet samo domaćim programerima (i 'programerima,' onim koji pišu aplikacije na Turbo Bejziku, ili nekom UKPC Paskalu (koji se interpretira), na primer). Tip iz američke firme koja pravi programe za dekriptovanje komercijalno zaštićenih datoteka tvrdi da su u svoje rutine dodali i petlje 'koje ne rade ništa' da ne bi izgledalo to dekriptovanje 'isuviše jednostavno.' ;))
clipper.928 toma,
■■>> Ako ste zainteresovani, spremiću pregled sadržaja datoteka. Ajd bar pregled da vidimo, kad si mi već smanjio doživljaj. :)) Pozdrav from Toma.
clipper.929 dpaun,
>> Koliko muke, a kako prosta stvar. Ima još jedno rešenje, bez ijedne programske linije: da se napusti YU prostor ... dPaun
clipper.930 dpaun,
>> Nećete verovati koliko je prosto: treba samo dodati jednu naredbu >> Nije znanje znanje znati, već je znanje znanje dati! Nama iz prvog Clipper razreda fali mnogo očiglednosti, mejeutike i sl. Ohrabren tvrdnjom da je prosto, ja pokušao ... -> Ritao se dok nisam kompajlirao getsys sa /m/n/w (kao što piše); -> sada je sve u redu, i YuVilajet može da odahne. -> zato valja rezimirati: Za podizanje MalihYu u toku kucanja, dakle kad je PICT "č!", valja uraditi sledeće: 1) iz poruke 5.894 skinuti yu.obj; 2) iz poruke 5.899 videti način pozivanja preko VALID-a 3) iz poruke 5.919 videti koju prepravkicu treba uneti u GETSYS.PRG 4) ulinkovati yu.obj i getsys.obj u aplikaciju; 5) osećati se konačno kao YuEuroPPejac! >>> A još ako bi to zakačio ovde, znao bi o tebi i Vita šumar iz >>> Ravne Reke, i moj komšija Vlasta Bačilo, s kojim koljem >>> drva u šumi, i njegova žena Vilarija, i ... >> >> Držim te za reč :)) Ma saznala je i cela Šumska uprava, i pola Majdanpečke Domene ... A Laza Tufan, kozar amater iz Todorove Reke, dobio vrtoglavicu od neverice ...
clipper.931 dpaun,
>>> Bitnije od ovoga jeste sam koncept: DBT će se povećavati samo kada >>> se nešto unese u memo polje baze, a ne uvek kada se sa APPEND >>> BLANK doda novi slog. >> >> Na žalost, nije tako :((. Probajte ovo: >> >> FOR i := 1 TO 1000 >> REPLACE Memo WITH Space(600) >> NEXT >> Dobro sam mislio, ali sam kuso objasnio. Mislio sam na onu situaciju kada se sa APPEND BLANK dodaje novi slog u bazu radi popunjavanja OSTALIH polja, a ne i Mem-a ... Da, da. Baš sam krečana! (Ne ide, izgleda, DrVosečstvo i ova suptilna Clipper problemtika). >>> Nedostatke ne vidim u ovom kancerogenom konceptu DBT-a, već u >>> siromašnim i oskudnim opcijama koje su ugrađene u MemoEdit(). >> >> Ja suprotno: ništa mi se ne sviđa rad MEMO sistema, ni MemoEdit >> nije nešto, ali se da dosta učiniti. Biće tekst o tome u narednim >> "Računarima". Nekoliko puta sam podsećao na (nailazeći) problem tekstualnih baza; jednom sam čak i pitao kako se to rešava u svetu, kako kod nas, ali je na moje pitanja pala prašina ... žekaću s nestrpljenjem "Računare". >> Trebalo bi nabaviti neku od zamenu za memo polja, ima ih prilično. >> Vidi ti njega: zna a ćuti! Ovo na dobro ne sluti.
clipper.932 ndragan,
/ makro supstitucije se nikako nisu mogle koristiti onako divlje / kao u dBase programima. A upravo divlje makro supstitucije čine lepotu ovakvih jezika. To je ono što nijedan jezik pre DiBejza, Klipera i Foksa nije imao. Dobro, imao je Spektrumov bejzik - tamo je u običnoj Input naredbi umesto broja mogao da se ukuca algebarski izraz sa nekoliko promenljivih, i bio bi izračunat i primljen. DB jezici su takođe doneli neverovatnu novost: znaju kako im se šta zove. Normalan kompajlirani jezik pamti imena promenljivih do objektnog modula, i još imena javnih promenljivih i procedura predaje linkeru; u linkeru sve to postaju nekakve adrese i od onih blesavih imena koje smo nadenuli promenljivim u svom programu ne ostaje ništa. Da ne spominjem da je nemoguće izmisliti novu promenljivu u toku izvršavanja programa, predati _ime_ procedure kao parametar drugoj proceduri... što sve može da se radi u DB jezicima. Možda se ljubiteljima klasičnih jezika kosa postrojava kad čuju za tako nešto, ali to _radi_, i kad se navikneš, ne možeš bez toga. Evo jednog primera programa koji nikad neće raditi (?) ni u jednom jeziku osim foks proa. Radi denominaciju: close all set safe off set head off _decc='2' do upiti with 'na koliko decimala','_decc' && proc. koja radi READ fsp=curd()+'*.dbf' fajl=sys(2000,fsp) do while ''#fajl use (fajl) alias radna excl && otvara redom .DBF if recc()>0 .and. fajl#'DUM' copy stru exte to dum sele 0 use dum count to t for field_len>7 .and. field_dec=2 if t>0 do pron with 'dum.prg' && radi set print to fajl itd ?? '*',(fajl) list off '* '+field_name,field_len,field_dec ; for field_type='N' ? 'sele radna' ? 'set talk on' ? ' ? dbf()' ? ' replace all' scan for field_len>6 .and. field_dec=2 ?? ';' ? trim(proper(field_name)) at 3,; 'with round('+trim(proper(field_name))+'/10,'+_decc+')' ends ? 'set talk off' ? 'retu' do proff && set print off itd sele dum use clea prog * poziva se editor da se ručno dotera generisani program modify command dum * pa kompajler da uradi svoje compile dum * i, pošto nema linkovanja, odmah se izvršava do dum else sele dum use sele radna endif endif fajl=sys(2000,fsp,1) endd clea all erase dum.dbf erase dum.prg Ovde se baš nisam pretrgao od makro zamena, s tim da je (fajl) isto što i &fajl, samo radi brže i ograničeno je na imena fajlova. Poenta je u tome što je za mene nezamislivo da mi ovako nešto padne na pamet u nekom od klasičnih jezika. Bue_ Ndragan
clipper.933 ndragan,
/ Jok. Bio im komplikovan korisnički interfejs. Nije hteo sam da radi, A i operaterka imala neograničeno bolovanje... / *** pisa=na je u bazi podataka Dbase II i prevedena Ovo tek koliko da se vidi koliko sam se '88 doznavao u razliku između Dbašića i Klipera :). Dbejz nisam ni pogledao, a kliper sam usput učio. / Važi 'al neće me košta. Imam, hik, vezu u Jelen pivari. ;o) A ti si ona ekipa što je pogodila poso za pet tona piva :). / maleeecko stakleno sa drškom ? ;o)) Onda ga ne vredi ni dizati sa stola. Pola kile pa naviše može 'a prođe. / Ovako sam se namučio u C-u da povežem Btrieve i Isam (ne pitaj zašto /* oba* !!!) i da štampam ćirilična trebovanja. Sada ću im (pro)dati Oderi ih onda i u moje ime. Zaslužili su :). Znaš da su otvorili filijalu i ovde - onaj bos što ima iks oči je odavde, pa... malo biznisa u starom kraju. Imaju i nekakvo stovarište, rade... pričaj im malo o modemima, transferu podataka itd, može još dobro i da prođe. Pa kad budeš instalirao ovde, svrati na tu kriglu. / novu verziju u FoxPlusu pod Xenixom (FoxPro za *NIX? Eh, pusti / snovi...). O, neee. Naježim se kad čujem za zeniks samo zbog toga što na njemu neće foks pro. Jes' da dobro radi i f+, al' ni nalik. / I gos'n MBP-cobol-guru jsalai ima(o je) iskustva sa njima (zadrugom). / ;) Na kraju će se ispostaviti da se u onom golubarniku izređalo pola Sezama. Bue_ Ndragan
clipper.934 ndragan,
/ Najbolje je ovo kopiranje ugraditi u meni kao opciju, a procedura bi ... u foks prou 2.0 bila nepotrebna, jer postoji naredba PACK MEMO.
clipper.935 ndragan,
/ brojeve Ascii kodova i sve to izpreračunavam na digitrončetu mu da Nisam mislio na digitron - čak, toliko daleko od toga, da sam morao da proverim da li je ono gore baš moj tekst što si citirao, da ne repliciraš možda nekom drugom. Mislio sam na muljavine tipa " copy to radna for 'maca' $ upper(animal + pet) .and. starost > 3 .and. between(rodjenje, š01.03.90ć, š31.03.90ć)", pa vidiš da ti ne treba to, jer su zeznuli godinu, pa staviš " copy to radna for 'maca' $ upper(animal + pet) .and. starost > 3 .and. month(rodjenje) = 3 ", pa onda uvatiš radnu i daš 'calculate avg(date()-rodjenje) to prosek' tek zato što te neko preko ramena pitao kolko su stari oni mačići iz marta devedesete. Ili postepene konverzije datoteka: prvo pretabaš jedno od sumnjivih polja, pa drugo i tako redom, i svaki put otkucaš samo dva tri reda i pogledaš šta si uradeo. A digitron se ionako nalazi u sistemskom meniju.
clipper.936 ndragan,
/ Da ti pomognem, clipper jednu lepu stvar koja se zove clipper / debuger. Sećam ga se, i veoma je dobar (S87). Jel možeš da izmisliš novu promenljivu dok singl stepuješ kroz program? Da prošetaš kroz baze (brauz tek da vidimo šta se događa), da pratiš promene u kritičnim promenljivim i da im menjaš vrednosti? Jel' vidiš i sors dok radi? Ne sećam se šta je sve imao, pa zato pitam. Al' nikad neće imati komandnu liniju (tj komandni prozor) za vreme trebljenja, a to me spaslo više puta - zaboravim da inicijalizujem neku promenljivu, pa između dva koraka to uradim. Ili zaboravim da otvorim neku bazu, ili da kreiram indeks. To mogu da uradim čak i u sred rutine za obradu greške; lepo sve sredim i gledam šta se dalje događa. Naravno, ako mi se isto desi i drugi put, opsujem sebe i opet produžim na opisani način. / smisla. Valjalo bi ipak prvo da se raspitaš kakve su mogućnosti To i radim, samo sam izabrao ovaj način, nadam se da nije previše potpaljivački. Ja se 'nako malo frljam sa "šta sve ima foks", pa onda neko napiše kako to izgleda u kliperu itd - nekako mi se više sviđa od uporednog testa i sličnog. Mislim, posle Telix vs Telemate, Windows vs Gem, St vs PC, mogli bismo da odvalimo jedno FoxPro 2.00 vs Clipper 5.01...
clipper.937 nbatocanin,
> Pod pojmom bazični Kliper smatraš direktne pozive funkcija > (tj. drugu stranu translejt direktiva)? Da li si negde > pročitao garanciju Nantuketa da jezik ni na tom nivou neće > da se promeni? Ne samo "drugu stranu", jer se pretprocesiranje vrši iterativno, sve dok postoje složene komande. Nisam pročitao garanciju Nantucketa, ali sam više nego siguran da funkcije koje ne počinju sa __ neće biti izmenjene: one se koriste i u normalnom radu i čak i minimalna kompatibilnost podrazumeva netaknutost tih funkcija. Uostalom, tako je bilo S87->5.0 (sa malim packama), pa ne vidim razloga da ne bude i dalje. Ako ne bude, to je skoro samoubistvo. Funkcije koje počinju sa __ možda neće ostati, ali to i nije važno, jer ih korisnik ne mora koristiti. Ukratko, Clipper pretprocesor je sjajno sredstvo za zadržavanje kompatibilnosti. > Nisam razumeo narednu rečenicu. Kako se to 'ne dira stara > funkcija nego označi kao zastarela?' Pa, DBEDIT je stara funkcija koja je ostala samo zbog kompatibilnosti - označena je kao "obsolete". > Jednostavnost interaktivnosti je mnogo lepa stvar -- da li > koristiš diBejz UZ Kliper? Kako 'sređuješ' stvari ručno, > 'iz glave' kreiraš baze i tako to? Sve Kliperom ili...? Imam neke svoje alatke, koristim samo DBU ponekad. Nekako mi se čini da razvoj u interpeterskoj okolini imaju i nekih slabo uočljivih mana. Na primer, kada je ciklus ispravka-proba-ispravka mnogo kratak, korisnik se razmazi i *manje* razmišlja, po sistemu "valjda je ovako, probaću", umesto da angažuje mozak, a tako se obično produžava razvoj. Sećam se kad sam radio na veoma sporim računarima da sam daleko pažljivije pisao programe nego na bržim. Ali, eto. Možda sam staromodan ;) > Koliko je virtuelna ta virtuelna memorija, usput? Teorijski oko 64MB, a trpi dok imaš memorije na disku. Ja veoma drsko kreiram velike nizove i stringove, ali mi 5.01 *nikad* nije iskočio sa "Out of memory". > ali kako se ponaša baš sa varijablama? Gde su kod njih > granice? Da li je, generalno, njih manje bolno koristi > umesto manjih datoteka? Clipper ima poseban podsistem za rad sa velikim varijablama. Memorija se alocira po potrebi, troši se EMS ili disk ako nestane prostora. Poseban sistem skuplja neiskorišćen prostor i ponovo ga uvlači u igru. Recikliranje se radi kad se obavlja neka od naredbi za čekanje (InKey, ...). Po mom iskustvu, sve radi veoma lepo. Izgleda da 5.01 ima manje bagova od S87.
clipper.938 nbatocanin,
Tačno je da nedostaje neki metod za analizu picture stringa. Ali mislim da se stvar može srediti. Ovako, od oka padaju mi na um dva rešenja: 1) Ako ima "@!" u picture, očisti se od funkcijskih oznaka i dobije nešto kao "XX!!XXAA". Sa oGet:pos se može dobiti pozicija otkucanog simbola, onda se nađe odgovarajući u picture stringu i poveća ako je tamo "!". 2) Pustiš Clipper da radi umesto tebe: YU slovo pre upisivanja u bafer zameniš sa "a", pa posle upisa pročitaš šta je u baferu. Ako je "A", znači da tekući simbol treba aperovati, pa vratiš kursor i to i uradiš!
clipper.939 coja,
Interesujeme da li je moguce vezivati polja u Clipper-u (pre svega memo-poljaa) preko hyper-teksta ili hyper-regiona. Pozdrav, Coja
clipper.940 d.petrovic,
:)))))))))))))))))))))))))))))))) Ă> A digitron se ionako nalazi u sistemskom meniju. Citirano tek da se setiš da je na tvoju poruku :) E, baš je zanimljivo s tobom o načinima i načinčićima. Pazi, tamo je bio samo .EXE i aplikacija se startuje pod šifrom koja je šifrine šifre šifra, može da se menja i drži se u polju u bazi. E, kad je neko izmenio i nije mogao da je startuje, ja sam morao da pročitam to polje u bazi pa da odgonetnem šta treba upisati pri startovanju programa. Svaćaš ? Pozdrav, Dejan
clipper.941 fric,
> Ako ste zainteresovani, spremiću pregled sadržaja datoteka. Može, naročito onih koje smatraš upotrebljivim & vrednim pažnje. Mene zanimaju 50ngch.zip (kakav li je to sad ng fajl ?) i cl_yusrt.zip p.s. Sad sam se logovao na Rhinoceros i video da su uveli pretplatu tako da nema ništa od downloada.
clipper.942 ppekovic,
>> Sećam ga se, i veoma je dobar (S87). Govorim o CLD-u iz 5.01 verzije koja je u upotrebi već par godina. >> Mislim, posle Telix vs Telemate, Windows vs Gem, St vs >> PC, mogli bismo da odvalimo jedno FoxPro 2.00 vs Clipper 5.01... Pa to već traje x meseci, samo FOX-u nešto slabo ide ;))), šalu na stranu,... Da bi neko prešao sa jednog kompajlera koji koristi godinama, ima veliku biblioteku svojih rutina za njega, o iskustvu da ne govorimo, potrebno je da se pojavi proizvod koji je suštinski bolji od njega. Sve što si do sada naveo o FOX-u je zaista zanimljivo i ima zanimljivih rešenja, ali na žalost ničeg revolucionarno novog, ničeg toliko dobrog zbog čega bi neko ostavio clipper i sve ono što sam pomenuo na početku poruke. I ne zaboravi nije stvar u clipper vs. FOX Pro, nego u clipper+iskustvo+biblioteke+korisnici vs. FOX Pro+šta? Paya P.S. Ne koristim clipper već više od godinu dana, dakle celu stvar posmatram dosta objektivno i ono što sam rekao nisu navijačke parole nego podsećanje da kad se priča o nekom proizvodu onda ne sme da se zaboravi i njegovo okruženje.
clipper.944 janko,
> / makro supstitucije se nikako nisu mogle koristiti onako > divlje / kao u dBase programima. > > A upravo divlje makro supstitucije čine lepotu ovakvih > jezika. Ja nisam pisao ništa protiv njih, kada se koriste tamo gde im je to 'prirodna' (ili neizbežna) okolina. Konkrteno, u dibejzu (na foksu još nisam radio) mogu biti vrlo korisne. Sećam se kako sam, svojevremeno, u vojsci, pisao 'generator POV predavanja' ;> (po narudžbini oficira, naravno). Makroi su radili pola posla. :) Druga polovina je bila popuniti baze podacima, naslovima i međunaslovima, a onda izmišljati tekstove. Rezultat: mogao sam da naštancujem odjednom ohoho tekstova. :) Vuk kod Špiljka je za mene bio malo dete. ;) > linkeru sve to postaju nekakve adrese i od onih blesavih > imena koje smo nadenuli promenljivim u svom programu ne > ostaje ništa. Da ne spominjem E, to sa blesavim imenima... Da znaš da mi se ne sviđaju te fore... Ako svi u firmi to radite, kako popravljate aplikacija koje nista pisali sami? Ja, bogami, bih i svoju teško umeo da popravim, posle onih zamena koje si opisao skoro...
clipper.945 janko,
> razvoj. Sećam se kad sam radio na veoma sporim računarima > da sam daleko pažljivije pisao programe nego na bržim. > Ali, eto. Možda sam staromodan ;) Možda sam i ja. :) Slažem se sa tobom. A kada još napraviš dovoljno programa, onda konačno ukapiraš da je koncept 'nemam vremena da uradim kako treba, ali imam, da uradim još jednom ispočetka ako primetim greške' isto tako nezgodan... Uz sve to, ove poslovne aplikacije su nezahvalne za neka noramlna planiranja, jer niko živ ne zna šta će mušteriji pasti na pamet sutra (pa ni ona)... Tu je vrlo značajno da aplikacija koju pišeš može lako da se menja... (to uglavnom zadovoljavaju ovi dibejzlajk jezici) a ako još hoćeš da si siguran da nećeš morati da dolaziš i sutra, kada oni i probaju da primene program, da ti jezik u kome pišeš obezbedi i da si siguran da je on već proverio sve što može da proveri -- to ovi jezici slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa okolinom) nema šanse da to ikad rade, po prirodi stvari... a kandidat za tako nešto bio je Kliper, ali... Sad mi pade na pamet, sa Klarionom nisam nikad radio, da li je on pravi kompajler ili...? >> Koliko je virtuelna ta virtuelna memorija, usput? > > Teorijski oko 64MB, a trpi dok imaš memorije na disku. Ja > veoma drsko kreiram velike nizove i stringove, ali mi 5.01 > *nikad* nije iskočio sa "Out of memory". >> ali kako se ponaša baš sa varijablama? Gde su kod njih >> granice? Da li je, generalno, njih manje bolno koristi >> umesto manjih datoteka? > > Clipper ima poseban podsistem za rad sa velikim > varijablama. Memorija se alocira po potrebi, troši se EMS > ili disk ako nestane prostora. A kada mašina nema EMS (286 čegrtaljke)? Da li je i dalje bolje od pravih datoteki? Mislim, da li ti se događalo da ti upadne u 'thrashing' (ono: ovo svapuje na disk, treba mu ono, a onda ono svapuje na disk, treba mu ovo, pa skoro do sudnjeg dana...), u koji ne bi upao da si 'sve držao pod kontrolom?' Ovi BC++ 3.0 programi su, naprimer, pisani tako da imaju nešto kao virtuelni kod (a podaci moraju da su u memoriji, ako sam shvatio koncept, za razliku od ovog Klipera) pa se nekad zaglupe i kad imaju na raspolaganju napr. 1.7MB. A takav simptom zaglupljivanja opisuje i ZZ na MSC 7.0 i (valjda) 4MB, u nekim slučajevima?
clipper.946 pjankovic,
> Pa vidi DPaune, ako ti treba samo pregled datoteke, recimo > pregled izvestaja pre stampanja, napravi TBrowse, i > nabudzi mu GoTopBlock, A šta ako su linije u tom tekstu duže od 80 karaktera? To može da se desi ako se na papiru A4 štampa CONDENSED ili ako se koristi papir A3 (136 karaktera u liniji bez CONDENSED).
clipper.947 bdm.,
## (lakse mi ovde da pitam nego da caskom probam ;)))) ) jel se to bese ## eliminise sa PACK ? Nisam probao ali po Spence NE. Zato on preporucuje umesto PACK koriscenje COPY... BDM.
clipper.948 dusanp,
=> Da ne spominjem da je nemoguće izmisliti novu promenljivu => u toku izvršavanja programa, predati _ime_ procedure kao => parametar drugoj proceduri... što sve može da se radi u => DB jezicima. Zar u C-u ako mi zatreba nova promenjljiva ne mogu da je alociram? Ili, zar se ne moze predati pointer na proceduru kao parametar drugoj proceduri? Ispravi me ako gresim, ali mislim da sve mogucosti koje si nabrojao postoje u C-u i rade na sasvim legalne nacine...
clipper.949 snemcev,
>> Piše, i tako je. Ponekad je i korisno. Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju volju ne mogu da se setim ni jedne korisne primene ove mogućnosti.
clipper.950 ciki,
**>> Koliko muke, a kako prosta stvar. ** ** Ima još jedno rešenje, bez ijedne programske linije: ** da se napusti YU prostor ... ** ** dPaun ****************** Eh nije to zanimljivo. Fino je to uraditi u assembleru ali ja sam "Clipper programer", pa kad su ljudi dali ceo listing, rekoh daj da probam, nista nemam da izgubim. P.S. Moze li tvoja metoda da digne nesto u fori "!9999X!!XX!" Đ1231đŠžčćč, znaci bez obzira kakav je PICTURE ? P.P.S Smanjio sam listing,pa sada dodatak sve skupa iznosi 10 linija. P.P.P.S. Tek sada procitah nbatocanin-ovo resenje. Koja zadivljujuca slicnost. Pozdrav Kikile! Deo listinga--------- ...................... .................. if (get:Picture == "č!" .or. SUBSTR(get:Picture,get:Pos,1) == "!") if at(cKey,"žčćšđ") > 0 get:Overstrike(substr("čžĆŠĐ",at(cKey,"žčćšđ")),1) else get:Overstrike(cKey) endif .................................................
clipper.951 d.petrovic,
Ă> l' znaš koliku sam ribu upecao pre neki dan? ;) A, jel ovoliiiiiiiiiku ? ;)) To bre nisu hiperbole, to je iživljavanje. Pa sad će me nateraš da nađem neku bazu od xx000 radnika pa da pušćim ovu 286/16 sa jaaaadnim diskom od 27 ms pa da ti šaljem testove :)
clipper.952 broker,
> / replace z->prez with yuupper(z->prez) > ======= > Ukrasovcima skrećem pažnju na ovaj detalj. Pisano '88 u > leto. Da nije pisano u leto '88 optuzio bih te za kradju imena funkcije.:)))
clipper.953 nbatocanin,
> Ma ljudi bre, preterujete više sa tom sporošću klipera !!! > Za šta se Kliper koristi nego za baze podataka i šta rade > nego komuniciraju sa nekom prosečno obdarenom ženskom. Nisam ni rekao da je spor u operacijama sa bazom podataka: spori su pozivi funkcija, što u većini slučajeva ne smeta, ali kao pišeš neku analizu dužeg stringa (konverzije, ...) ili nešto sl., to se mora raditi na C-u ili asembleru.
clipper.954 nbatocanin,
> Ma to smo već zaključili ! Izgleda da si ti samo nešto > preskočio. Nismo se baš najbolje razumeli, ali dovoljno. Ipak, ona naredba ne *dodaje* memo, zar im je bilo teško da provere da li nova vrednost (uzgred, potpuno ista kao i stara) može da stane u stari prostor? > E, sad (lakše mi ovde da pitam nego da časkom > probam ;)))) ) jel se to beše eliminiše sa PACK ? Jok!
clipper.955 nbatocanin,
Evo programčića koji ja koristim za to. S obzirom na izgovor, pre je čarapanska nego piroćanska varijanta ;) ntoc.zip
clipper.956 kanda,
>> A šta ako su linije u tom tekstu duže od 80 karaktera? To može da >> se desi ako se na papiru A4 štampa CONDENSED ili ako se koristi papir >> A3 (136 karaktera u liniji bez CONDENSED). Naravno, u praksi retko kad ceo izvestaj stane na ekran. Problem je resen kao kod tekst-editora, strelicama levo i desno pomeras 'prozor'. Kodni blok za tu (jedinu) kolonu ustvari izgleda ovako : {|| PadR(SubStr(_ReadLn(), nPos), nWi)} Gde je nWi sirina prozora, recimo 80. Kada pritisnes strelicu desno, nPos se uveca za npr. 16, kad pritisnes strelicu levo umanji se za isto toliko. Prilikom ovih horizontalnih pomeranja treba poslati i RefreshAll() poruku.
clipper.957 dpaun,
>> 5) osećati se konačno kao YuEuroPPejac! Braćo i sestre, #$%$%#%ž&*&&&pičkr!!!!!!!!! x,y Get Niz PICT "č!" VALID Dig() //Radi x,y Get Niz1 //Ne radi !!!! READ * FUNC Dig GetActive():varPut(YUpper(GetActive():buffer)) RETURN .T. /*** * GetApplyKey() */ . . if "č!" $ get:picture //Ovo domentuto po savetu brata Nenada cKey:=YUpper(cKey) endif . . A ovako psuje Clipper kada se pokuša ukuc u Niz1: BASE/1109 Argument error: INSTR GETAPPLYKE(268) //Ovde je izmena nBatocanina u GETSYS.PRG GETREADER(130) READMODAL(88) Prema NG BASE/1109 se odnosi na $. Predragi $ brate Nenade: uzmi ovaj GETSYS, pa s njim na kanal i doradi ga da me sada pusti ljudski da čukam i MaliYu kad mi se ćefne. Al požuri dok komšika Vilarija ima onakvo mišljenje o tebi. (Kad sam joj onomad pričao kakav si ti Klipper majstor, tako su joj oči bljesnule da je Vita šumar pomislio da se šuma upalila). dPaun.$
clipper.958 janko,
> A, jel ovoliiiiiiiiiku ? ;)) To bre nisu hiperbole, to je > iživljavanje. Pa sad će me nateraš da nađem neku bazu od > xx000 radnika pa da pušćim ovu 286/16 sa jaaaadnim diskom > od 27 ms pa da ti šaljem testove :) Ma, svašta. Ja ne kažem da ne može brže od onoga što sam rekao, čak, suprotno! Moja rečenica je bila 'jedan radi dva sata a drugi za jedan minut na XT-u.' E, ako te zanima da vidiš taj što radi dva sata, mogu da ti obezbedim taj program, pa da vidiš koliko će tvoj AT da se muči (a onda sve podeli bar sa šest, pa vidi koliko je na XT-u ;) Ne, nisam ga ja pisao. Ali treba ga videti da bi se verovalo. ;)
clipper.959 d.petrovic,
Ă> drugi za jedan minut na XT-u.' E, ako te zanima da vidiš taj Ă> što radi dva sata, mogu da ti obezbedim taj program, pa da Fala ti lepo, video sam već jedan takav. Davno je to bile ali je odprilike : select 1 use radn select 2 use sta go 1 select 1 zbir=0 mrdrpr=lastrec() ;>>>>> šta ako je zapis obrisan for i = 1 to mrdrpr select 1 go mrdrpr x=NEKO_TAMO_POLJE select 2 y=NEK_TAMO_POLjE zbir=zbir+(x * y) next prosek=zbir/mrdrpr .... Da ne kažeš da tvrdim da je Kliper brz, samo kažem da treba kritične delove ljudski napisati. Pozdrav, Dejan
clipper.960 neman,
Evo konačno obećanog pregleda. P.S. 50NGCH.ZIP je NORTON GUIDE za *.CH datoteke spisak.arj
clipper.961 nbatocanin,
> A kada mašina nema EMS (286 čegrtaljke)? Da li je i dalje > bolje od pravih datoteki? Mislim, da li ti se događalo da > ti upadne u 'thrashing' (ono: ovo svapuje na disk, treba > mu ono, a onda ono svapuje na disk, treba mu ovo, pa skoro > do sudnjeg dana...), u koji ne bi upao da si 'sve držao > pod kontrolom?' Dosta dugo sam radio na 286/12 sa 640K RAM-a i nije mi se to desilo. Dešavalo se da neke operacije budu spore, ali nikakve mrtve petlje. Doduše, nisam to nešto posebno testirao: samo sam, osim redovnih problema, radio i ovako nešto: FOR i := 1 TO 4000 a[i] := Space(40000) NEXT Drlja po disku, ali radi! Crkava kad nestane prostora za swap.
clipper.962 nbatocanin,
> Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju > volju ne mogu da se setim ni jedne korisne primene ove > mogućnosti. Na primer, radiš parče programa koje radi nešto sa nizom. Svuda se na niz referišeš sa NIZ[]. Onda ti se ukaže potreba da radiš sa nekim drugim nizom. Tada jednostavno napišeš na početku bloka NIZ := NOVI (pod nekim uslovom, verovatno). Pošto je ovo samo izmena pokazivača, operacija je maksimalno brza. Ovo se mnogo često koristi koda rada sa objektima, koji su veoma slični po strukturi. Verovatno bi se mogao smisliti i "čistiji" primer.
clipper.963 janko,
> FOR i := 1 TO 4000 > aŠiĆ := Space(40000) > NEXT > > Drlja po disku, ali radi! Crkava kad nestane prostora za > swap. Taj disk je bar 200 MB? Inače, ovo me već fascinira, ako radi kako treba. Izuzetno zgodna stvar!
clipper.964 snemcev,
>> Piše, i tako je. Ponekad je i korisno. Jel može jedan primer za ovo 'ponekad'? Ja uz najbolju volju ne mogu da se setim ni jedne korisne primene ove mogućnosti.
clipper.965 nbatocanin,
> {|| PadR(SubStr(_ReadLn(), nPos), nWi)} Odlična ideja! Jesi li isprobao koliko ovo brzo radi? Ako DejanR ovo ne objavi u Bajtovima, obavezno ide u Savetnik.
clipper.966 nbatocanin,
> Prema NG BASE/1109 se odnosi na $. Prvo, nije ti potrebna funkcija Dig ako izmeniš GETSYS.PRG. Clipper se buni ako je oGet:Picture NIL, pa se računa "@!" $ NIL, sto je neispravno. Znači, treba izmeniti GETSYS.PRG ovako: IF get:picture <> NIL .AND. "@!" $ get:picture cKey := YUpper(cKey) END IF a kad koristiš: @ x,y GET cVar PICTURE "@!" Ovo naravno neće raditi za složenije picture stringove, kao što je rečeno.
clipper.967 ciki,
Ho! Pisem ovo a ruka mi drhti od tuge i bola, barabo jedna ovakvog si coveka nasao da falsifikujes,... Eh sada, da li je tacno ili je greska u mome sorsu da LIB SUBNTX(preuzeto sa sezama) radi samo 3-4 puta u toku izvrsavanja 1 programa? P.S. Kako napreduje menjanje GETSYS-a bruder dpaun-e ? ;>>>
clipper.968 bulaja,
│Eh sada, da li je tacno ili je greska u mome sorsu da LIB │SUBNTX(preuzeto sa sezama) radi samo 3-4 puta u toku izvrsavanja 1 │programa? └─── Skoro tacno. Mozes je koristiti samo 5 puta.
clipper.969 dpaun,
>> P.S. Kako napreduje menjanje GETSYS-a bruder dpaun-e ? ;>>> žini mi se da je stvar konačno rešena sa amandmanom brata nBatocanin-a. Bar za PICTURE "č!" (vidi nove poruke vezane za ovaj problem). dPaun
clipper.970 dpaun,
>> treba izmeniti GETSYS.PRG ovako: >> >> IF get:picture <> NIL .AND. "č!" $ get:picture >> cKey := YUpper(cKey) >> END IF >> Pa kaže, konačno: Za podizanje MalihYu u toku kucanja, dakle kad je PICT "č!", valja uraditi sledeće: 1) iz poruke 5.894 skinuti yu.obj; 2) iz gornjeg primera videti kako izgleda kompletna izmena i prepravka GETSYS.PRG-a; videti i poruku 5.919; 3) GETSYS clipperovati obavezno sa /m/n/w; 4) ulinkovati yu.obj i getsys.obj u aplikaciju; 5) nikakve druge kerefeke nisu potrebne (funkcije DigniGa i slično); 6) radi sigurno u slučajevima kad je get klot, i kad je pcture "č!"; 7) za ostale slučajeve pitajte i vi malo, braćo. Ima valjda još koja neznalica ovde, a? dPaun.VelikiYu!
clipper.972 ratman,
Na koji se nacin moze niz sacuvati u .MEM file? Nizovi se, kako mi se cini, ne mogu direktno sa SAVE-ovati... Pozdrav, Dejan
clipper.973 goxx,
■ Na koji se nacin moze niz sacuvati u .MEM file? ■ Nizovi se, kako mi se cini, ne mogu direktno sa SAVE-ovati... Pogledaj malo funkcije FT_SAVEARR i FT_RESTARR u Nanfor biblioteci, ali pazi da nemaš kodne blokove u nizu koji snimaš. Ime fajla u koji se snima odredjuješ sam pa prema tome može se zvati i *.MEM. Goran
clipper.974 kanda,
>> Odlična ideja! Jesi li isprobao koliko ovo brzo radi? Ako DejanR ovo >> ne objavi u Bajtovima, obavezno ide u Savetnik. Ne samo da sam isprobao, nego to koristim vec 6-7 meseci. Sto se brzine tice, nalazim da je prihvatljiva; istini za volju, gotop, gobottom i skip funkcije sam za svaki slucaj napisao u C-u.
clipper.975 kanda,
Juce sam bio kod jednog kolege, i primetio da covek koristi neke neverovatne egzibicije kako bi naterao RMAKE da prevede SVE datoteke. Dovoljno je dodati prekidac /f. Usput, tek posle sam primetio da se u NG prekidac /f i ne pominje; ipak, RMAKE /? ga pokaze.
clipper.976 bulaja,
│Juce sam bio kod jednog kolege, i primetio da covek koristi neke │neverovatne egzibicije kako bi naterao RMAKE da prevede SVE datoteke. │Dovoljno je dodati prekidac /f. └─── Dovoljno je i obrisati sve .OBJ :). Inace koristim Borland-ov make, tamo je make -B (build).
clipper.977 dpaun,
Imam jedno (dopunsko) pitanje, vezano za GETSYS.PRG. Kada se izvrši BiloKojaIzmena u GETSYS.PRG - na šta inače vlasnici Clp-a imaju poravo - da li je neophodno da se ceo GETSYS.PRG prevede i linkuje, ili ima neki (kulturniji) način da se samo ta promenjena funkcija uključi u MojProg, ili u neku od službenih biblioteka. I kako. dPaun
clipper.978 ndragan,
/ nadamo da će autor to čuti i "srediti", pa nam poslati ispravnu / verziju. Bravo! Rutina je dosad odradila bar desetak hiljada puta i niko nije primetio. Preneo sam autorima, rekli su 'jel? jeeeebo te bog, aj sredi to ako stigneš'. Mislio sam danas, ali sam zaglavio u SORu... pa, ovih dana. Inače, prolaze i gore stvari. U ovdašnjem komunalnom štampaju obračun vazdušarine na predštampanim obrascima, na kojima je otisnut i faksimil onog četvorojezičnog pečata velikog kao šolja za kafu. E, taj pečat je naopako - kao u ogledalu. Za nekoliko godina niko nije primetio.
clipper.979 ndragan,
/ korisnik se razmazi i *manje* razmišlja, po sistemu "valjda je ovako, / probaću", umesto da angažuje mozak, a tako se obično produžava Pa baš i ne. Kritično parče lokalizujem u neku manju rutinu, pa je isprobam u nekoliko ubrzanih ciklusa. Ako ne proradi iz prve, proradi iz najviše pet-šest iteracija, što u principu znači da buljim u editor minut-dva (mentalno debagiranje), parkiram 'set step on' na mesto gde sam uočio da me rutina ne sluša, pokrenem aplikaciju (ili samu rutinu, ako je nezavisna) i posmatram šta se događa od onog mesta. Tako uspevam da rasturim i logički vrlo komplikovane situacije, i najveći bag koji ostaje posle svega je što zaboravim da iz završne verzije obrišem onaj 'set step on'. Dakle: 'valjda je ovako, da vidimo', ali na užim delovima, tamo gde ima smisla, i gde je brže od ručne analize. Bue_ Ndragan
clipper.980 ndragan,
/ je on već proverio sve što može da proveri -- to ovi jezici / slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa U jezicima koji dozvoljavaju makro zamene za vreme izvođenja (dakle ne za vreme kompajliranja!) uvek imaš mogućnost da iznenadiš interpreter; jedina varijanta za kompletno testiranje je da _prođeš_ kroz sve budžake ;(.
clipper.981 ndragan,
/ fore... Ako svi u firmi to radite, kako popravljate aplikacija / koje nista pisali sami? Ja, bogami, bih i svoju teško umeo da Pa, ono što si video bi trebalo da ti da ideju - sve je u menijima, unosima i izveštajima; problem unakrsnog održavanja je samo tamo gde postoje (čak i van menija, iz opravdanih razloga) procedure koje melju podatke - preračuni, obrade, kao što je u LD i u nekim varijantama materijalnog: to ne diram. A postoje konvencije o tome šta se kako zove; rutina koja obrađuje ceo dokument posle unosa svih stavki u jednoj grupnoj masci ima tačno određeno ime; imena svih izveštaja su dostupna iz generatora dokumentacije za meni itd. Sve je vrlo jasno, a sama imena... pa jeb* ga, i programeri imaju dušu.
clipper.982 ndragan,
/ mislim da sve mogucosti koje si nabrojao postoje u C-u i Hteo sam da kažem da u skroz kompajliranim jezicima ne možeš da kažeš da se, recimo, izgeneriše slučajno ime promenljive... evo ovako: x=rand() x1='T'+strr(x) && neka funkcija STRR od broja izvadi prvih 6 cifara && i neka je sad x1='T457455' &x1='nešto' I posle ovoga u programu postoji string promenljiva T457455 koja ima vrednost 'nešto'. Ako je to izvodljivo u Ceu, tim bolje. Od Cea znam samo ono što sam pre 4 godine pročitao (K&R) i što tu i tamo pročitam na Sezamu; u to vreme još nisam sasvim shvatao kakvo oružje su makro zamene. Vidi i ovaj primer: sn=metod && polje iz baze; sadrži '0','1' ili '2' do racun&sn && poziva se rutina racun1, racun2 ili racun0 Da bude još lepše, racun2.prg uopšte ne mora da postoji kad se pokrene aplikacija; aplikacija može sama da ga napiše, a integraljena okolina će ga kompajlirati u trku. Dobro je ako je ovo takođe izvodljivo u Ceu (za ovo drugo sumnjam); alatka je moćna, a u ruke Mandušića Vuka... Bue_ Ndragan P.S. Ovo mi je promaklo: / alociram? Ili, zar se ne moze predati pointer na proceduru Pointer, ok. Ja predajem ime procedure u string promenljivoj ili u izrazu; procedura to prima kao string parametar; negde u njoj se nalazi makro koji raspakuje sadržinu tog stringa i to mu je ime procedure koju će ova pozvati. Ovako: prg='zzv' ... do proc1 with 'bz'+prg ... procedure proc1 para _what ... do &_what && e sad negde treba da postoji procedura bzzzv && i ona će se izvršiti
clipper.983 ndragan,
/ startuje, ja sam morao da pročitam to polje u bazi pa da odgonetnem / šta treba upisati pri startovanju programa. Svaćaš ? Kad mi život postane nedovoljno komplikovan, zvaću te :)
clipper.984 ndragan,
/ revolucionarno novog, ničeg toliko dobrog zbog čega bi neko / ostavio clipper i sve ono što sam pomenuo na početku poruke. Nije mi ni bila namera da preobraćujem. Uostalom, bivši kliperaši budu loši foksovci, bivši foksovci loši kliperaši i obratno. Ovo je više bilo "komšija, šta ima novo kod tebe? evo nama se omacila mačka". / clipper+iskustvo+biblioteke+korisnici vs. FOX Pro+šta? To isto na drugom kraju, isto takođe. To što većina korisnika foksa pokušava da radi bez biblioteka, jeste njihov problem. Biblioteka je nužna i važna. Znam to, jer nas dvojica (manje više) održavamo našu zvaničnu biblioteku u firmi, i veoma mi je poznata problematika tipa 'jel da pišem lokalnu verziju il da čačkam sistemsku, a da li to još neko koristi pa da mu ne pokvarim...' i potreba za kompatibilnošću itd. Na kraju ću ja znati sve što me zanimalo o kliperu (opet ne dovoljno) i kliperaše o foksu, a može tu da kresne i koja idejica... nije na odmet.
clipper.985 ndragan,
/ for i = 1 to mrdrpr / select 1 / go mrdrpr Jel' ovaj hormonalan što je to pisao? N puta množi polje iz entog sloga u jednoj bazi poljem iz jednog istog sloga u drugoj bazi, to sabira i deli opet sa n? Ili nije korektno prekucano? žak i da nije, ovo je stvarno bez veze.
clipper.986 d.petrovic,
Ă> / for i = 1 to mrdrpr Ă> / select 1 Ă> / go mrdrpr Ă> Ă> Jel' ovaj hormonalan što je to pisao? N puta množi polje iz entog Ă> sloga Mrzi me da tražim, da vidim da li sam BAŠ TAžNO prekucao, BAŠ to ili nešto BAŠ SLIžNO sam video svojim očima kad sam se posle pitaj boga koliko vremena vratio i video da DBase (to je radilo u Dbase III) još nije završio. To sam dao samo kao primer da ne treba suditi o brzini po NEKIM programima koje vidiš. Pozdrav, Dejan
clipper.987 janko,
> / je on već proverio sve što može da proveri -- to ovi jezici > / slabo zadovoljavaju. E sad, ovi pravi interpreteri (sa > U jezicima koji dozvoljavaju makro zamene za vreme > izvođenja (dakle ne Nijedan _pravi_ jezik koji se kompajlira to ne dozvoljava. ;) A interpreteri su interpreteri...
clipper.988 bcetina,
Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i koji?
clipper.989 d.petrovic,
Ă> Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i Ă> koji? Ja sve pešice kroz ceo program (ne svaki put isto, sve u delovima u par funkcija), a možda bi trebalo sa .FMT datotekama. O njima nemam pojma, u svemu što sam do sada radio (nije baš malo :)) ) išao sam pešice. Pozdrav, Dejan
clipper.990 dusanp,
=> x=rand() => x1='T'+strr(x) && neka funkcija STRR od broja izvadi => prvih 6 cifara && i neka je sad x1='T457455' => &x1='nešto' => => I posle ovoga u programu postoji string promenljiva => T457455 koja ima vrednost 'nešto'. Vidi, to jeste lepo i efektno, ali je još uvek funkcionalno zamenljivo sa alociranjem promenljivih. => sn=metod && polje iz baze; sadrži '0','1' ili '2' => do racun&sn && poziva se rutina racun1, racun2 ili && racun0 Takođe, kada ovako nešto zatreba, jednostavno se unapravi struktura koja sadrži adrese rutina za obradu, a onda se pozi- va rutina broj sn, znači dosta slično ovome. Ja razumem moć i lepotu makrozamene u toku rada programa, ali jednostavno smatram da je usporenje rada programa (navodno zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga koliko sam radio sa kliperom. Pa da, reći ćeš ti, tako mi i treba kad radim u kliperu.;))
clipper.991 nbatocanin,
Ako želiš da podeliš svoju ideju sa drugima, pošalji kratak opis i listing. Znači, ne treba sve, nego samo osnovne stvari.
clipper.992 djoskovski,
-> PRIVATE bla_bla := tra_la_la := tandara_broc := sc -> ... Posle ovog dobijemo plus tri pointera koji pokazuju na isto memorisko podrucje u kojem se nalazi JEDAN NIZ -> -> i nizove popunjavam kasnije iz programa u stilu -> -> ... -> AADD( bla_bla, 'prvi niz' ) Bez razlike kojim pointerom pristupamo JEDNOM nizu posle ovog LEN(bilo_koji_niz)=1 , odnosno niz dobija svoj prvi element. -> AADD( tra_la_la, 'drugi niz' ) Pristupamo ISTOM nizu preko drugog pointera posle ovog LEN(bilo_koji_niz)=2 -> AADD( tandara_broc, 'treci niz' ) Pristupamo istom nizu preko treceg pointera posle ovog LEN(bilo_koji_niz)=3 It is FEATURE Za kopiranje niza u Clipper-u se koristi funkcija ACLONE koja kreira kopiju kompletne strukture niza Pozdrav, D.Joskovski
clipper.993 djoskovski,
Clipper,Fox i video trake Vec duze vremena pratim diskusije u okviru ove teme u stilu FOX vs CLIPPER, dBASE vs CLIPPER ,kompajleri ili interpreteri i sl. mislim da je to u redu, ali da se sa tim ne treba preterivati, pa evo ukratko mojih stavova: 1. Verzija Clipper 5.0 (5.01) "pretstavljanjem" "kodnih blokova", predefinisanih objekta, napustila je stari kurs Clippera 87 i pored vertikalne kompatibilnosti. 2. Usvajanjem STATIC i LOCAL deklaracija ,switceva pri kompajliranju /w/a/n ostvaren je KORAK prema jezicima koji se kompajliraju. (ko razume shvatice ;) ) 3. Usvajanjem mocnog preprocesora, ostvaruju se dva cilja - lakse programiranje i citliv kod (lakse odrzavanje) (vazno korisnicima CLIPPERA) - lakse unapredjenje citavog sistema (vazno NANTUCKET-u) 4. Fox-BASE , FOX-pro ,FOX-pro for LAN ( pa ti ljudi su i ime promasili pa su posle morali da menjaju, dobro ostalo je ono FOX, lukavo zar,ne? ) Dobro, salu na stranu fox je pre 4-5 godina bio jedino resenje za zaradu, ako korisnik vise korisnicke aplikacije nije hteo da plati LAN hardver (Ko je pre 4-5 godina kupovao softver ? a i danas?), ali svatam Fox-ovce, nemaju ljudi temu a bogami ni direktorijum, pa nam dolaze u goste a kad dodjes u goste, zna se hvalis se. toliko, interesuje me vase misljenje o prva tri stava, cetvrti je .. (i programeri imaju dusu) Pozdrav svima ( i gostima) D. Joskovski
clipper.995 dpaun,
>> 7) za ostale slučajeve pitajte i vi malo, braćo. Ima valjda još >> koja neznalica ovde, a? Ova neznalica - čekajući da sine sunce pa da ode u šumu na drva - igrala se sa picture ovih dana. Bilo je to pravo otkriće, jer nigde ne piše da se picture može menjati do mile volje. A moja mila volja imala je jedan ozbiljan razlog da to radi: u delu MojeAplikacije, koja obrađuje bibliografske jedinice, reference autora standardizuju se tako što se prezime unosi velikim slovima, a ime po šablonu "prvo slovo veliko a ostala mala". Međutim, kod imena se javljaju razne situacije (inicijali obični, pa inicijali tipa Lj.Nj., pa dvodelna imena kao "Paun Es", pa Ana-Marija itd.). Koristeći već stečeno iskustvo i rešenja obrazložena u ranijim porukama (vidi 5.970), stvar sam rešio na sledeći način: č .. GET prezime PICT "č!" č .. GET ime PICT "č*" //ovo je MojaMaska Niže je navedena dopuna listinga getsys.prg-a da bi ovo radilo. /*** * GetApplyKey() //ovo je originalni kod if (get:type == "N" .and. (cKey == "." .or. cKey == ",")) get:ToDecPos() else // ovo je dopuna nBatocanina if get:picture <> NIL .AND. "č!" $ get:picture cKey:=YUpper(cKey) //YUpper() se nalazi u Yu.Obj endif // ovo je dopuna dPauna if get:picture <> NIL .AND. "č*" $ get:picture if get:pos == 1 cKey := DigniYu(cKey) else if get:pos>2.and.substr(get:buffer,get:pos-1,1)=="." cKey := DigniYu(cKey) elseif get:pos>1.and.; (substr(get:buffer,get:pos-1,1)==" ".or.; substr(get:buffer,get:pos-1,1)=="-") cKey := DigniYu(cKey) else cKey := Lower(cKey) endif endif endif ... ... func DigniYu(cKey) do case case cKey == "đ" cKey := "Đ" case cKey == "ć" cKey := "Ć" case cKey == "š" cKey := "Š" case cKey == "ž" cKey := "č" case cKey == "č" cKey := "ž" otherwise cKey:=UPPER(cKey) endc return (cKey) dPaun.ProgramerNaturalista
clipper.996 ndragan,
/ Nijedan _pravi_ jezik koji se kompajlira to ne dozvoljava. ;) Jako sam lepo zadovoljan lažnjakom dok radi bolje od pravog :).
clipper.997 ndragan,
/ Kako kreirate maske za ekran, mislim peške sa SAY ili neki UTL i koji? FMT iz dBašića pa onda naš generator čita te .FMT fajlove i još neke naše .DBF fajlove i generiše sorsove za unos. Zvuči gadno, ali šljaka.
clipper.998 andrejl,
>│ FMT iz dBašića pa onda naš generator čita te .FMT fajlove >│ i još neke naše .DBF fajlove i generiše sorsove za unos. >│ Zvuči gadno, ali šljaka. Meni zvuči lepše od glupog UI-a pa onda prođe kroz mene, pa onda prođe kroz mene, pa onda ... bye, andrejl
clipper.999 fric,
> /w/a/n ostvaren je KORAK prema jezicima koji se kompajliraju. > toliko, interesuje me vase misljenje o prva tri stava, Sve je to krasno, ali džabe Nantucketu i vertikalna kompatibilnost, i pretprocesor, blokovi, objekti i ostalo, kad radi pomenute kompatibilnosti nije uveo strogu tipiziranost promenljivih i kontrolu istih pri kompajliranju. Mislim da bez toga nema govora o ozbiljnijem jeziku - u smislu lakoće i efikasnosti programiranja i održavanja. Menjam makroe za tipiziranost !
clipper.1000 kanda,
>> Ja razumem moć i lepotu makrozamene u toku rada programa, >> ali jednostavno smatram da je usporenje rada programa (navodno >> zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga >> koliko sam radio sa kliperom. To da li je opravdano, zaista zavisi od namene. Kliper je namenski jezik i tamo gde se on koristi brzina obicno nije toliko bitna koliko mogucnost da se odgovori na egzoticne zahteve korisnika, da se radi sa bazama nepoznate strukture itd.
clipper.1001 kanda,
>> Ako želiš da podeliš svoju ideju sa drugima, pošalji kratak opis i >> listing. Znači, ne treba sve, nego samo osnovne stvari. Evo saljem listing funkcije VText(). Ovakva kakva jeste je vise ilustracija tehnike, fali stosta da bi mogla da sluzi za pregled izvestaja. Naime izvestaji obicno sadrze kontrolne sekvence za stampac, markere pocetaka strana, itd itd, takve stvari se naravno ne prikazuju, sto zahteva C ili asembler da ne bi bilo suvise sporo. U TBrowse sistemu ima jedna falinka : pri iscrtavanju kolone, sistem 1) pozove metod koji mu vrati sadrzaj kolone koju treba ispisati 2) postavi kurzor na mesto ispisa, i 3) ispisuje. Da su autori zamenili mesta koracima 1) i 2), bilo bi moguce da metod koji treba da vrati sadrzaj kolone ujedno i ispise kolonu. Ovo bi moglo *mnogo* da ubrza ispis ako bi metod bio napisan u C-u i pisao direktno u video memoriju. vtext.zip
clipper.1002 nbatocanin,
> Dakle: 'valjda je ovako, da vidimo', ali na užim delovima, > tamo gde ima smisla, i gde je brže od ručne analize. Mislim da se nismo razumeli: mislio sam na situacije kada treba izračunati (pogoditi) granične vrednosti indeksa kod petlji i sl. Ko će da razmišlja da li je a[i+2*j-3*k-4] ili nešto drugo - ako ciklus izmene kratko traje probaću pa ću "nabosti" rezultat :)
clipper.1003 nbatocanin,
> To isto na drugom kraju, isto takođe. Ipak bih rekao da za Clipper ima dosta više toga, bar po reklamama i katalozima koje sam video. A to je zato između ostalog što je mnogo jednostavnije napraviti novu funkciju za Clipper: napišeš na C-u, ubaciš u lib i gotovo.
clipper.1004 ciki,
Procitah malopre da oces nesto za pravljenje maskica. Evo ti pokusaj sa ovim.Posto sam duze razmisljao o tome ja sedoh i napravih nesto za cirka 45min. Iako radim sa 5.01, ovo je radjeno sa S'87 jer je Tlink nenadj*biv tj. nenadmasiv u brini. Znaci kompajliraj, prevedi pa rokaj. Inace program ce ti posle rada kreirati maska.txt datoteku, koju ces posle obradjivati u nekom txt. editoru. Evo malo help-a: Strelice pomeraju tekuci kursor. Sa Alt-a dobijas ascii tablu. Sa O ili o crtas okvire ili linije.Posto nacrtas, a ti lepo opali Enter, pa posle izaberi kojim ces box type-om iscrtati, ili ces tu oblast obrisati. Sa alt-t cini mi se dobijas tekuce koordinate kursora Sa B ili b brises na mestu crsr-a. Sa T ili t ispisujes text i to posto uneses broj karaktera, pojavi ce ti se █████...██ gde ces ispisivati txt. Sa alp-p menjas kursor. Enter - stavlja kursor na tekucu koordinate crsr-a Kraj rada Esc i stvara taj maska.txt P.S. Zbog brzine, i listing je ugly, ali radi svoj posao. Pozdrav Ciki! maska.arj
clipper.1008 boris.,
Da li je neko naišao na ovaj problem sa funkcijom int()? ?int(0.2*10) // 2 ?in(1.2-1.0)*10) // 1 a=(1.2-1.0)*10 ?a // 2.0 ?int(a) // 1 BorisT
clipper.1009 d.petrovic,
Ă> Da li je neko naišao na ovaj problem sa funkcijom Ă> int()? Pređi na Kliper 5.01 i koristi Nanfor biblioteku, sve radi.
clipper.1010 zdiv,
U datoteci subntx2.zip su dva fajla koja su zapakovana sa lozinkom konkretno xtr_lib.exe i xtr_src.exe da li je to neka greska ili sta?!
clipper.1011 ndragan,
/ Takođe, kada ovako nešto zatreba, jednostavno se unapravi / struktura koja sadrži adrese rutina za obradu, a onda se pozi- Da, to bi bilo to, izuzev slučaja kad rutina za obradu još ne postoji - dakle, kad forsiram grešku da bih pohvatao snimak stanja neposredno pre poziva, ili me baš mrzi da pišem tu rutinu a hoću da propustim ostatak programa posle poziva, ili aplikacija sama piše tu rutinu za vreme rada. U tim slučajevima bi ta adresa bila nedefinisana. No, to nije nikakvo 1:0 ili 6:5 za mene, nego samo razlika u metodu. / ali jednostavno smatram da je usporenje rada programa (navodno / zbog toga ?) preveliko da bi bilo opravdano. To pričam iz onoga Pa i nije, jer su obetri :) rutine koje se pozivaju na taj način već učitane i pri ruci su; foks ima neki interni spisak već pozivanih rutina i dosta ih brzo ponovo nalazi. Drugo, za makro zamene koje daju imena (fajlova, a kod 2.00 bilo kakva imena) umesto &var piše se (var), što radi desetak puta brže, jer dobar deo analize otpada - rantajm zna da to nije opcija ili šta ti ja znam, već ime nečega što na tom mestu može da dođe, te ga raspakuje iz odma'. / Pa da, reći ćeš ti, tako mi i treba kad radim u kliperu.;)) To si ti rekao :)
clipper.1012 ndragan,
/ goste a kad dodjes u goste, zna se hvalis se. 1. ja napisah jednom aplikaciju na kliperu, što je dokumentovano u ovoj temi 2. ja sam kod kuće na celoj teritoriji sezama sa pokrajinama osim amige, koje i vama od sveg srca želim (od obatri, i 286 i 68000 i Z80) 3. da vas ne podbada neko sa strane, nikad ne bi isplivalo šta je to zaista novo u 5.0; večito bismo čitali neke detalje a manje o suštini 4. i onda bi kroz nekoliko verzija došlo dotle da su programi na foksu i kliperu uzajamno nečitljivi (to će se desiti), a takođe da više ne znamo šta koji ima šta nema. I onda više ne bismo mogli da razgovaramo. A to može da se izbegne.
clipper.1013 ndragan,
/ to ako stigneš'. Mislio sam danas, ali sam zaglavio u SORu... pa, ovih / dana. Po datumu kad sam poslao poruku prošlo je samo tri dana, međutim pisana je mnooogo ranije (negde od četvrtka nisam stigao da se okačim, ili sam se kačio ali nisam imao egzek pri sebi...) Elem, evo nove verzije SLOVIMA.PRG, ovog puta nije bilo druge nego da je uzmem sam u ruke i doteram štogod. Testirao sam na nađene greške, ali svi znamo koliko to vredi. Istestirajte me dobro, pa ako valja, kažite, ako ne, opet kažite, i obratno. Bue_ Ndragan slovim2.arj
clipper.1014 bulaja,
│U datoteci subntx2.zip su dva fajla koja su zapakovana sa lozinkom │konkretno xtr_lib.exe i xtr_src.exe. da li je to neka greska ili sta?! └─── Nije greska, sifru dobijes posle registracije. Unutra se nalazi source i potpuno funkcionalna biblioteka.
clipper.1015 ndragan,
/ Mislim da se nismo razumeli: mislio sam na situacije kada treba Jesmo, samo principski, a ne i u pojedinostima, ali to je već manje bitno. To šacometrijsko programiranje mi zvuči kao ono dPaunovo 'programiranje na uvce'. Ima i toga, kad naiđem na situaciju koju nisam imao - napišem ga odokativno, pa kad me iznenadi rezultatom, onda singl step kroz sumnjivi deo. U principu opet traje kraće nego da se gnjavim da iz glave pokušavam da predvidim sporedne efekte komandi i da sâm sebi ručno (iz glave) teram neku rigoroznu kontrolu. Glavna kontrola je da proteram program kroz očekivane situacije, i da prođe kroz njih zdrav i čitav. Možda zvuči kao pomalo prljava tehnika, ali radi i na kraju se dobija dosta čist tekst. / će da razmišlja da li je aŠi+2*j-3*k-4Ć ili nešto drugo - ako ciklus / izmene kratko traje probaću pa ću "nabosti" rezultat :) Kalkulator je uvek pri ruci - ili on lajn dibager, te se sve to može isprobati. Opet nemam potrebu da proračunavam unapred bilo šta. Za primere kao što je taj tvoj opekli smo se svi bar po jednom, bez obzira na jezik u kome radimo. Stvari kod kojih ima šanse da program zaglavi u kombinatornom bumu ili da probije neke razumne granice (broj vrćenja neke petlje, dužina niza, prostor koji treba na disku...) ipak dobro proračunam ili bar ošacujem, i potom držim na oku. S druge strane, postojanje bilo kakvih konstanti u programu je izvor razloga za kasnije ispravke. žak ne volim da punim promenljive sa pet ili šest blankova, znaš ono Store ' ' to _sifra č 4,4 get _sifra ...jer će sutra kod druge mušterije da se desi da ima malo obimniji šif(t)arnik, i traži šifru sa dva mesta više, ili manje. To lako izmenim, generator sprovodi izmenu kroz maske, ali van njih ostaju slične pitalice kod štampi. Zato radije pišem Store Space(Len(baza.sifra)) to _sifra Takođe, jedine konstante koje dozvoljavam u programu su one koje ja zadam (vrste dokumenata, prva cifra od šifre ili konta ako znači nešto), inače nikakve zavarene stvari tipa 'ako je roba=234 .ili. 345 onda ovo inače ono' ne stavljam. To je veoma kvarljiva stvar - prekosutra će doći neka operaterka na zamenu dok ova bude na porođajnom, uputstva o specijalnim šiframa se neće preneti i - cvrc, poziv u sred najgore gužve. Radije ću ubaciti neki indikator u bazu ili izmisliti posebnu vrstu dokumenta. Ex, promenio sam temu, al' i ovaj drugi problem mi se čini vredan rasprave, pa da čujem kako se drugi snalaze. Bue_ Ndragan
clipper.1016 ndragan,
/ jednostavnije napraviti novu funkciju za Clipper: napišeš na C-u, / ubaciš u lib i gotovo. Foksu dugo nije trebalo tako nešto (mada je postojao mehanizam 'Load ... Call), a sada ima i to (*.plb fajlovi, biblioteke funkcija koje se pozivaju kao bilo koje foksove funkcije, samo negde pre toga treba ubaciti jedno 'Set Library to <ime>'). Foks je od početka bio interpreter sa logikom da ima_sve (i ne treba Ce). Dobro, neke stvari još nedostaju (index while :), ali kad instaliram foks odmah mogu da radim i to sve što foks može, dakle ne treba ništa da nabavljam ('jel ima neko biblioteku 'getsex.lib', baš me nešto svrbi da probam jednu stvar' :), dok je Kliper išao logikom Cea: evo ti osnovni alat koji ima samo to što mora da ima, a biblioteke ćeš pisati sam ili nabaviti. Koncepcije su u startu različite, mada se aplikacije koje se na kraju dobijaju malo razlikuju ;>. E, da, pitanjce: je li istina da kliperaši imaju običaj da po startu aplikacije pootvaraju sve baze i indekse koji će im trebati. If yes, zašto? Mislim, ako je sve otvoreno, onda piči promaja.
clipper.1017 ndragan,
/ nenadj*biv tj. nenadmasiv u brini. Znao sam da ima još jedna reč gde se ne može 'dj' zameniti sa 'đ', al nisam mogao onomad da se setim.
clipper.1018 ndragan,
/ ?in(1.2-1.0)*10) // 1 Ovako iz aviona, meni se čini da tu fali zagrada... / ?a // 2.0 / ?int(a) // 1 Da si ispisao ? a-round(a,0) verovatno bi dobio +/- 0.00000nešto. Nije stvar do jezika, nego do interne prezentacije brojeva; 0.2 ima prve značajne cifre 2000... i eksponent -1; 1.2 ima značajne cifre 120000 i eksponent 0 (ili .2000 e00 odnosno .12000 e01 što je češći slučaj); oni imaju različite binarne prikaze u EIII (ili beše IEEE) formatu ili koji već format koristi jezik/procesor. Pretpostavljam da je 0.2 iznutra jednako 0.200000001 (recimo), a da se (1.2 - 1) iznutra prikazuje kao 0.19999999... . Ispiši na dovoljno mnogo decimala da ga vidiš, ili zaokruži pre upotrebe na dve decimale više nego što sečeš.
clipper.1020 aleksj,
Imao bih da nesto priupitam oko povezivanja C-a i Clippera. Naime u knjigama je zapisano : " Napises funkciju u C-u i ulinkujes je zajedno sa Clipper programom "( tako sam makar ja razumeo). I to tako fino funkcionise dok se igram : ? "clipper" ... printf ... c Ali kada sam probao nesto sa grafikom ( za C sam odskora poceo da se interesujem), jednostavno mi javi prekoracenje stacka-a. Iskljucim mu proveru, a "racunalo" mi se blokira. Pokusavao sam sve i svasta ali bez uspeha. P.S. Mozda je to zato sto sam koristio C++ 2.xx ?!
clipper.1021 vcalic,
>> P.S. Mozda je to zato sto sam koristio C++ 2.xx ?! Jeste. Uzmi MSC, verziju 5.1 ili 6.0.
clipper.1022 nbatocanin,
> Ex, promenio sam temu, al' i ovaj drugi problem mi se čini > vredan rasprave, pa da čujem kako se drugi snalaze. Itekako. Problem bih nazvao "zavisnost podataka od programa". Ja ga rešavam tako što smanjujem ovu zavisnost na najmanju moguću meru. Pravim rečnik podataka, pa se trudim da u programu ne koristim trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno rešenje, sve više uviđam da je zadovoljavajuće.
clipper.1023 aleksj,
> 1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a > program linkuje sa PLL opcijom, Clipper javlja da je los > format datoteke. Kad se izbaci DOS=HIGH, sve savrseno > radi. Evo citam ove "zastarele" poruke, pa reko' da dam neko svoje zapazanje. Isti efekti dogadjali su se i meni, ali kada smanjim kolicinu slobodne memorije (612K) ucitavanjem nekog rezidentnog programa, NG na primer, sve radi uobicajeno. Pa mislim da nije u pitanju DOS nego "visak" memorije. P.S. Hvala ti na Milanovom (Nikolic) telefonu, nov sam na Sezamu pa se polako prilagodjavam - nisam znao da postoji naredba USERS.
clipper.1024 aleksj,
> 1. Kada se sa DOS-om 5.0 stavi direktiva DOS=HIGH, a > program linkuje sa PLL opcijom, Clipper javlja da je los > format datoteke. Kad se izbaci DOS=HIGH, sve savrseno > radi. Evo citam ove "zastarele" poruke, pa reko' da dam neko svoje zapazanje. Isti efekti dogadjali su se i meni, ali kada smanjim kolicinu slobodne memorije (612K) ucitavanjem nekog rezidentnog programa, NG na primer, sve radi uobicajeno. Pa mislim da nije u pitanju DOS nego "visak" memorije. P.S. Hvala ti na Milanovom (Nikolic) telefonu, nov sam na Sezamu pa se polako prilagodjavam - nisam znao da postoji naredba USERS.
clipper.1025 kanda,
>> Itekako. Problem bih nazvao "zavisnost podataka od programa". Ja ga >> rešavam tako što smanjujem ovu zavisnost na najmanju moguću meru. >> Pravim rečnik podataka, pa se trudim da u programu ne koristim >> trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno >> rešenje, sve više uviđam da je zadovoljavajuće. Vrlo zanimljiva tema! A sta sve drzis u recniku ?
clipper.1026 ndragan,
/ Pravim rečnik podataka, pa se trudim da u programu ne koristim / trenutna polja, već opise u rečniku. Mada i ovo nije baš potpuno Zvuči zanimljivo. Kako izgleda primer u sorsu? Mislim samo par redova.
clipper.1027 snemcev,
>> ... Istestirajte me dobro, pa ako valja, kažite, ako ne, opet >> kažite, i obratno. Pa da kažem. Ovo (slovima.prg) nije Clipper. Jel ti ono beše radiš u Fox-u? Problem sa DIMENSION imebr(9) sam lako rešio, ali imam još jedan. Ajde, da te ne mrzi, reci mi šta radi funkcija 'betw'? Clipper se ubi tražeći je po bibliotekama, ali sve što je uspeo da kaže je 'Undefined symbol after library search' ili nešto u tom stilu.
clipper.1028 nbatocanin,
> Vrlo zanimljiva tema! A sta sve drzis u recniku ? Malo je predugo za objašnjenje, ali ukratko, kompletnu strukturu baze podataka: opis i definicije polja, komentare, indekse, itd. Na osnovu ovih podataka vršim otvaranje datoteka, pridruživanje odgovarajućih indeksa, itd. Na primer, datoteku otvaram sa: Open ("Naziv") a funkcija OPEN traži sve indekse u rečniku i otvara ih. Tako je dodavanje novog indeksa potpuno bezbolno po program. Order menjam preko simboličkog naziva, tako da promena indeksa ne utiče na program. Na primer, Order ("Prezime") umesto SET ORDER TO 2 jer ovo drugo propada kad se doda još jedan indeks na početak. Takođe na osnovu rečnika automatski kreiram indekse po potrebi i vršim povremeno brisanje podataka iz baze podataka. Pripremam neki prilog, biće u jednim od narednih "Računara".
clipper.1029 ndragan,
/ podataka: opis i definicije polja, komentare, indekse, itd. Na osnovu Tako nešto ima i naš generator; ono što se razlikuje je što se na osnovu programa koji pozivaju rutinu 'otvori' skupljaju postojeći indeksi u upotrebi, analizira indeksni pojam i na osnovu toga generiše program koji te indekse pravi. / Order ("Prezime") Ovo me navodi da opet pitam: da li je (... ili) istina da je u kliperu običaj da se po startu aplikacije pootvaraju sve baze i indeksi? Jer ovako nešto praviti, za mene znači da su linije u kojima se baze otvaraju malo daleko da bi se mogao pogledati redosled indeksa. Ja nikad ne setujem redosled po imenu nego uvek po broju, jer na početku rutine otvaram baze i na kraju ih zatvaram (rutina je retko kad duža od 8K, recimo (imam samo nekoliko koje su duže od 150 linija, a i to su neke kombinovane višestruke štampe)), a to se onda lako kontroliše iz bilo kog editora.
clipper.1030 ndragan,
/ Pa da kažem. Ovo (slovima.prg) nije Clipper. Jel ti ono beše / radiš u Fox-u? Problem sa DIMENSION imebr(9) sam lako rešio, ali Aha. / 'betw'? Clipper se ubi tražeći je po bibliotekama, ali sve što Neće ni naći, to je foksova funkcija Between: Between(a,b,c) je isto što i b<=a .and. a<=c ...samo što je sistemska, pisana najverovatnije u asembleru. Koristim je već refleksno, pa mi nije palo na pamet da neće proći kroz kliper. More, jel radi to čudo kako valja (posle ovog)?
clipper.1031 nbatocanin,
> Pa da kažem. Ovo (slovima.prg) nije Clipper. Probaj moj program prikačen uz poruku 5.955 u ovoj temi.
clipper.1032 kanda,
>> Malo je predugo za objašnjenje, ali ukratko, kompletnu strukturu baze >> podataka: opis i definicije polja, komentare, indekse, itd. Na osnovu >> ovih podataka vršim otvaranje datoteka, pridruživanje odgovarajućih >> indeksa, itd. Na primer, datoteku otvaram sa: >> >> Open ("Naziv") OK, da pokusam da rezimiram ideje : 1) svi indeksi bi trebalo da se otvore pri otvaranju baze 2) indekse je lakse i sigurnije birati po imenu nego po rednom broju 3) omoguciti kreiranje, 'prepakivanje', reindeksiranje baze, bez navodjenja detalja (dovoljno je ime baze!) Da dodam i ja poneku : 4) 'lokalne baze'. Jednostavno, kazes da zelis da koristis neku bazu, sa tim-i-tim indeksom i tim-i-tim filterom. Ako je baza vec u upotrebi, tj. otvorena, sistem zapamti stanje (aktivni indeks, aktivni filter, broj aktivnog sloga itd) i tek onda postavi nove vrednosti. Kada zavrsis posao, ti kazes 'zatvori', a sistem vrati bazu u prethodno stanje. Ovo omogucava pisanje potprograma koji rade bez obzira iz koje situacije ih pozoves ! Stvar upravo testiram i zasad radi kao srpska oooops! tj. kao japanska zeleznica. 5) pa kad je tu recnik, mozda bi imalo smisla pamtiti i PICTURE za SAY i GET, mozda i neke jednostavnije VALID izraze... mada je ovo vec malo nategnuto, sasvim dobro sluzi i #define.
clipper.1033 kanda,
>> Ovo me navodi da opet pitam: da li je (... ili) istina da je u >> kliperu običaj da se po startu aplikacije pootvaraju sve baze i >> indeksi? Jer ovako nešto praviti, za mene znači da su linije u kojima >> se baze otvaraju malo daleko da bi se mogao pogledati redosled >> indeksa. Ja nikad ne setujem redosled po imenu nego uvek po broju, >> jer na početku rutine otvaram baze i na kraju ih zatvaram (rutina je >> retko kad duža od 8K, recimo (imam samo nekoliko koje su duže od 150 >> linija, a i to su neke kombinovane višestruke štampe)), a to se onda >> lako kontroliše iz bilo kog editora. Ne znam kakav je obicaj :) al ja gledam da su mi baze otvorene samo kada se stvarno koriste. Sto se indeksa tice, postoji nekoliko dobrih razloga da se pri otvaranju baze otvore SVI pripadajuci indeksi, najbolje automatski, kao ono sto je pisao Nenad. Dalje, kako god okrenes, Order('Prezime') je lakse za razumeti nego SET ORDER TO 2. Svaka knjiga iz programiranja preporucuje da se, gde god je moguce, izbegavaju ovakvi 'mrtvi' brojevi. 'Prezime' je deo neke logike programa, '2' je ipak samo broj. Na primer, linija : Radnici->(Order('Prezime')) je sasvim nedvosmislena; SET ORDER TO 2 to nije : koja baza je u pitanju ? koji indeks je u pitanju ?
clipper.1034 snemcev,
>> Probaj moj program prikačen uz poruku 5.955 u ovoj temi. Promakao mi je nekako, probaću ga svakako.
clipper.1035 snemcev,
Danas sam kreirao (iz Clipper programa) bazu čija je struktura duga tačno 1123 bajta. Takvu bazu DBU otvori, ali kad zatražim BROWSE, ok kolosalno javi neku grešku sa '&' tj. sa makroima. Jel to zato što je struktura datoteke duža od 1K? Ima li drugog rešenja osim prepravljanja izvornog koda? Za divno čudo, PcShell bez ikakvih problema prikazuje sadržaj ove datoteke.
clipper.1036 raul,
Zdravo !!!! Moze li mi neko reci zasto se u CLIPPERU (S87) kad koristim naredbu SET KEY TO ime procedure ( na primjer dodjelim da mi F! pozove neku proceduru ). Zasto sve radi jedno 5-6 puta dobro , a onda se na stisak tatsera pojave brljotine, tj. maska se pokvari.
clipper.1037 d.petrovic,
Ă> Moze li mi neko reci zasto se u CLIPPERU (S87) kad koristim naredbu Ă> SET KEY TO ime procedure ( na primjer dodjelim da mi F! pozove neku Ă> proceduru ). Zasto sve radi jedno 5-6 puta dobro , a onda se na Ă> stisak tatsera pojave brljotine, tj. Malkice nejasno, ali... jesi li isključio taj taster kad je pozvao funkciju ? Npr. set key 28 na neki tamo help, čim uđeš u taj help prvo isključuješ taj taster, a pre nego što se vratiš ponovo ga uključiš. Ako nije to, budi malkice detaljniji ili daj taj deo source-a ovamo.
clipper.1038 pstojanovic,
To se obicno desi kada imas rekurziju; naime, kada pozivas npr. set key -1 to kalendar sa F2 pa u kalendaru pritisnes jos neki put F2, a u proceduri kalendar imas formiranje privatnih promeljivih, lako dolazi do gomilanja steka. Narocito ako pamtis ekrane (ekran=25*80*2 bajta= 4 KB po promenljivoj). U prethodnom odgovoru ti je kolega dao ispravan odgovor, iskljucis pri ulasku taster za poziv a na izlasku iz procedure ga ponovo ukljucis. To greska recimo nece vaziti za CL 5.01 zbog dinamicke memorije, ali ... Murphy is a live ;). Ko zna, treba biti dosledan.
clipper.1039 pstojanovic,
Evo jednog programa koji meni koristi, probajte, pa komentarisite... pi.arj
clipper.1040 zradojicic,
Da li neko ima napisanu funkciju (proceduru) za ocitavanje serijskog broja HD-a. KLF.
clipper.1041 d.petrovic,
Ă> Da li neko ima napisanu funkciju (proceduru) za ocitavanje Ă> serijskog broja HD-a. Ajde sad lepo kaži od koga si sad pa to čuo :). Ima neko ali je nije još završio = usavršio = to je spoooooooro da bi se ubacilo u neku aplikaciju.
clipper.1042 ndragan,
/ Dalje, kako god okrenes, Order('Prezime') je lakse za razumeti nego / SET ORDER TO 2. Svaka knjiga iz programiranja preporucuje da se, gde Da, svakako. I mi to uvodimo; kvalifikovanje polja po aliasu (a ne po zoni) smo odavno uveli. Sintaksa tipa 'select 4' (to sam viđao samo kod samoukih početnika) je inače suluda, i kod programa dužeg od tri ekrana diže pritisak a obara produktivnost bar dvostruko ;). Ono 'Set order to 2' koristimo tako retko da nije naročito smetalo, a i svaka rutina koja nešto mulja sa bazama (a nije deo maske) mora da pozove standardnu rutinu za otvaranje i na kraju i onu za zatvaranje, a pošto su rutine kratke, nije teško da se zaviri u prve linije. Ali, i to uskoro ukidamo (ili još jednom proređujemo), pošto FoxPro2 ima nešto što se zove strukturni indeks, indeks koji se sam automatski otvara sa bazom, a u njemu su već upisana imena indeksa (TAG - još malo pa kao u Venturi :). Jesam kazo da idemo ka istom, različitim putevima. / razloga da se pri otvaranju baze otvore SVI pripadajuci indeksi, / najbolje automatski, kao ono sto je pisao Nenad. Da, ako ima šanse da će se u bazu nešto pisati, inače ne - u mreži je to još dva-tri fajla više za otvaranje, a ako radim Index For oni će se svakako zatvoriti.
clipper.1043 ndragan,
/ 1) svi indeksi bi trebalo da se otvore pri otvaranju baze Osim... vidi prethodnu poruku. / 2) indekse je lakse i sigurnije birati po imenu nego po rednom broju Da. / 3) omoguciti kreiranje, 'prepakivanje', reindeksiranje baze, bez Za ovako kritične operacije bi trebalo malo pripaziti - indeksiranje i pakovanje zahtevaju zaključavanje, a u mreži... / Stvar upravo testiram i zasad radi kao srpska oooops! tj. kao / japanska zeleznica. I Japanci imaju brze pruge? / za SAY i GET, mozda i neke jednostavnije VALID izraze... mada U jednoj verziji glavne knjige imam _globalne_ pikčere za iznos, konto i nalog za izveštaje; strpam ih u promenljive i ako dođe do dalje inflacije samo dodajem devetke :). Valid izraze treba držati u bazi maski :).
clipper.1044 dpaun,
Clp dozvoljava i ovakve operacije: PUBL Opc1, Opc2 ... ... USE MojSET Opc1 := Polje1 Opc2 := Polje2 ... č r,c PROMPT Opc1 MESS ".... č r+1,c PROMPT Opc2 MESS ".... MENU TO Izb ... Ovo omogućava pisanje programa čije menije korisnik krsti prema svojoj potrebi. dPaun
clipper.1045 jtitov,
Da li neko koristi za linkovanje neki drugi linker osim onog koji stize uz Clipper 5.0 ('87)? Prednosti/mane?
clipper.1046 aleksj,
> Moze li mi neko reci zasto se u CLIPPERU (S87) kad > koristim naredbu SET KEY TO ime procedure ( na primjer > dodjelim da mi F! pozove neku proceduru ). Zasto sve radi > jedno 5-6 puta dobro , a onda se na stisak tatsera pojave > brljotine, tj. maska se pokvari. Obrati paznju na to da help iz help-a mozes (bezbedno) pozvati samo jednom, tj. ako pritisnes F1 par puta za redom moze se svasta dogoditi (isto vazi i za bilo koji drugi podprogram koji je dodeljen SET KEY - u ako nekoliko puta pritisnes taj taster za redom ). Trebao bi da u pozvanoj proceduri podesis taster koji je pozvao datu proceduru da to ne moze ponovo da uradi npr. PROCEDURE HELP SET KEY -1 TO . . . SET KEY -1 TO HELP RETURN i da na kraju ponovo vratis istu proceduru tasteru.
clipper.1047 zalex,
Koristim BLINKER 2.0. Linkuje Clipper, Pakal, Asembler, Bejzik ... Inkrementalno linkovanje radi savrseno, u 80% slucajeva linkovanje ne traje duze od 3-4 sekunde. Linker je dinamicki, veliki programi se izvrsavaju bez frke. Jedini je problem sto ne moze da linkuje Clipper 87 datiran sa 21.12.87 0:00, vec samo 21.12.87, 2:00. Na zalost, imam upravo pogresan Clipper, pa bih bio JAAAAKO zahvalan onom koji moze da mi pomogne. Posto radim na mrezi, a dosadila mi je poruka "insufficient memory", dinamicko linkovanje mi je neophodno. Ne mogu da predjem na CLIPPER 5.01, jer nemam vremena (a i koristim neke biblioteke koje ne rade sa njim). ZALEX
clipper.1048 nbatocanin,
> Dalje, kako god okrenes, Order('Prezime') je lakse za razumeti nego > SET ORDER TO 2. ... a i kad dodaš indeks na početak ne moraš da menjaš brojeve uz SET ORDER.
clipper.1049 nbatocanin,
> mozda bi imalo smisla pamtiti i PICTURE za SAY i GET, mozda i neke > jednostavnije VALID izraze... mada je ovo vec malo nategnuto, sasvim > dobro sluzi i #define. Zašto nategnuto? Rečnik podataka podrazumeva sve podatke o podacima. Ja planiram da tu uguram ne samo podatke o načinu prikazivanja i unosa i sl., već i podatke o pravima pristupa pojedinih procesa i slične stvari. Na primer, funkcije koje bi vraćale podatke o svakom polju (format za unos, prikazivanje i sl) mogu se trivijalno napraviti. A onda se izbegava more problema - tako se veoma povećava nezavisnost na relaciji program-baza podataka. Sledeći korak je formalizacija procesa i kreiranje "rečnika funkcija". Ovo bi morao biti osnov svakog dobrog generatora programa. Ali, i samo rečnikom podataka se dobija puno. Na primer, kako sam ja bez njega menjao strukturu baze podataka: 1) Pomoću DBU-a menjam strukturu. Ako je neka složenija promena (promena tipa polja), onda se mora praviti mali programčić. 2) Evidencija u dokumentaciji programa - svako normalan ima opis svih datoteka, polja itd. 3) Izmena u modulu za proveru integriteta: ponovno kreiranje indeksa i sl. 4) Izmena u modulu za periodično brisanje podataka - treba dodati podatke o izmeni. 5) Izmena svih USE..INDEX naredbi u programu. Sreća što sam i ranije imao donekle automatizovano otvaranje, pa sam ovo ovde "izbegavao". Slično ovome je i izmena SET ORDER naredbi. 6) Izmena delova programa koji se odnose na izmenu u bazi - ovo za sada nisam previše razmatrao, ali polako.. :) A sad samo uđem u pomoćni program koji mi služi za manipulaciju rečnikom, napišem šta hoću, a on promeni fizičku strukturu, rečnik i dokumentaciju. Moduli za brisanje i kreiranje indeksa ove podatke uzimaju iz rečnika, pa u njima i nije potrebna intervencija. Najlepše od svega je što je uvođenje rečnika 100% kompatibilno sa prethodnim rešenjima, tako da nije potrebno menjati prethodne programe: USE i dalje radi, OPEN se uvodi postepeno u nove module. Ovakva centralizacija je jako dobra za sve vrste kontrola: ako jednom automatizujete proces i napravite ga dovoljno opštim, kasnije ste sigurni da ono što ste uradili RADI. A to je jako dobro, zar ne? Prava stvar ka kojoj treba težiti je objektno orijentisana baza podataka: svaka DBF datoteka je objekat koji "zna" i čuva neke informacije, a sa kojim se komunicira preko poruka, kao sa šalterskim radnikom. Kako vi preko šaltera ne možete previše uticati na rad tog radnika i obrnuto, sledi da izmena tog objekta ne utiče na spoljni program. E, to će biti prava stvar! Oće li taj Clipper 6.0! :) P.S. Nevezano za ovo, zašto koristite izraz "baza" za DBF datoteku? Za DBF datoteku se može reći da je tabela ili relacija, ali baza je samo u trivijalnom slučaju, zar ne?
clipper.1050 dejanr,
Da li vam se nekada desilo da vam clipper '87 + tlink unište CLIPPER.LIB? Meni se to dešava danas evo treći put. Prvi put pre jedno 3 godine na AT-u, i tada je CLIPPER.LIB bio samo malo pobrljan (ali dovoljno da kaže bad object file). Drugi put pre jedno godinu dana na 386/25 kada ga je skratio na 100 "random" bajta. Treći put danas, kada je u njega upisao neki .MAP fajl, plus malo đubreta. Pošto sam za sve to vreme intenzivno koristio clipper, ovo nije neka pojava koja se dešava svaki dan nego verovatno pod nekim jako specifičnim okolnostima. Sada sam na clipper.lib stavio read only flag, šteta što ću morati da čekam par godina da vidim deluje li ili ne ;)
clipper.1051 raul,
Zdravo, opet ja. Hvala vam na odgovorima, pomogli ste mi. Jos jedno pitanje : kada koristim naredbu MENU TO , a ne znam koliko cu dobiti PROMPTOVA ( recimo kada hocu da podatke iz baze stavim u PROMPT .... MENU TO ) da li nekako mogu da odredim koliko ce biti PROMPTOVA ( Da li bih to mogao preko SET KEY to 24 i da prenesem parametre promenljivoj MENU TO i kako )? Hvala !!!
clipper.1052 jtitov,
> vec samo 21.12.87, 2:00. Na zalost, imam upravo pogresan > Clipper, pa bih bio JAAAAKO zahvalan onom koji moze da mi > pomogne. Posto radim na mrezi, a dosadila Evo koju '87 imam: pa nesto je sa vremenom 00:00, a nesto sa vremenom 2:00. Sa vremenom 2:00 je sledece: clipper.exe, clipper.lib, debug.obj, extend.lib, ndx.obj, plink86.exe, i jos neke manje-vise nebitne sitnice. Pa ako ti nesto znaci...
clipper.1053 raul,
Zdravo. Imam Clipper S87, a zelio bih da koristim misa. Moze li mi neko reci kako to da uradim. Imam CLIPGRAP21 i Hercules karticu. Probao sam i sa demo programomk CLIPGRAP-a, ali nikako da se pojavi ikona .... Pozdrav : RAUL
clipper.1054 broker,
> Moze li mi neko reci zasto se u CLIPPERU (S87) kad > koristim naredbu SET KEY TO ime procedure ( na primjer > dodjelim da mi F! pozove neku proceduru ). Zasto sve radi > jedno 5-6 puta dobro , a onda se na stisak tatsera pojave > brljotine, tj. maska se pokvari.
clipper.1055 d.petrovic,
Ă> Zdravo. Imam Clipper S87, a zelio bih da koristim misa. Moze li mi Ă> neko Nemoj da se ljutiš ako ti je to neko već rekao ali... pređi brate na 5.01 i uživaj.
clipper.1056 rolandz,
Evo mislim da mogu da ti pomognem, ostavi mi poruku. Volume in drive C is DEEP PURPLE Volume Serial Number is 0000-0000 Directory of C:ĐCLIP87ĐBEZVEZE . <DIR> 11-05-92 6:18p.. <DIR> 11-05-92 6:18pCLIPPER EXE 79121 12-21-87 2:00aPLINK86 EXE 83834 12-21-87 2:00aCLIPPER LIB 307019 12-21-87 2:00aEXTEND LIB 82189 12-21-87 2:00aOVERLAY LIB 7104 12-21-87 2:00aDEBUG OBJ 57986 12-21-87 2:00aTEXT TXT 0 11-05-92 6:19p 9 file(s) 617253 bytes 15232640 bytes free rastumaci mrzelo me je da kucam a sad necu da prekidam vezu zbog greše pozdrav or RolandZ a.
clipper.1057 banex,
>> Zdravo. Imam Clipper S87, a zelio bih da koristim misa. Moze li mi >> neko reci kako to da uradim. Imam CLIPGRAP21 i Hercules karticu. Ima nekoliko lib-ova koji su namenjeni toj stvari, nisam ni jednu probao ( nisam ni imao miša do sada ;) ali se iz gomile može izabrati ono što tebi naviše odgovara. Probaj ovu koju sam ti zakačio uz poruku, imaš i mali primer kako treba da izgledaju rutine a rađena je asembleru. Samo ulinkuješ bmouse.obj uz tvoje .obj datoteke, i trebalo bi da radi. Ako ti ne odgovara, viči da pošaljem neku drugu. PS. Nema veze kakvu video karticu imaš... bmouse87.arj
clipper.1058 banex,
>> Nemoj da se ljutiš ako ti je to neko već rekao ali... pređi >> brate na 5.01 i uživaj. Kad smo već kod 5.01 klipera, da li neko zna u čemu je problem kod sledećeg primera: Source datoteke (.prg) su rađene u starom kliperu (summer 87), i kada ih proteram kroz kliper 5.01 tako da on sam pronalazi odgovarajuće, napravi jedan .obj koji se bez problema linkuje sa Rtlinkom. Exe program dalje radi bez problema. Ako te iste .prg datoteke kroz novi kliper proteram sa /m svičem, da mi napravi za svaku po jedan .obj file, tada pri linkovanju izbaci za svaki po jedan error i prekine rad sa porukom da su to kliper87 funkcije (ili tako nešto ;) ? Da li bih trebao da koristim neki svič za rtlink u tom slučaju, nisam se baš mnogo bavio istim?