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.923 dejanr, -> #914, snemcev
>> 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, -> #912, 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 !!! 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, -> #918, nbatocanin
Ă> 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, -> #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 !!! :) 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, -> #911, neman
■■>> 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, -> #921, ciki
>> Koliko muke, a kako prosta stvar. Ima još jedno rešenje, bez ijedne programske linije: da se napusti YU prostor ... dPaun
clipper.930 dpaun, -> #919, nbatocanin
>> 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, -> #918, nbatocanin
>>> 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, -> #892, janko
/ 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, -> #886, gristic
/ 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, -> #885, dpaun
/ 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, -> #901, d.petrovic
/ 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, -> #903, ppekovic
/ 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, -> #912, janko
> 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, -> #917, ciki
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, -> #935, ndragan
:)))))))))))))))))))))))))))))))) Ă> 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, -> #911, neman
> 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, -> #936, ndragan
>> 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, -> #932, ndragan
> / 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, -> #937, nbatocanin
> 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, -> #913, kanda
> 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., -> #925, d.petrovic
## (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, -> #932, ndragan
=> 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, -> #920, nbatocanin
>> 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, -> #938, nbatocanin
**>> 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, -> #943, janko
Ă> 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, -> #869, ndragan
> / 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, -> #924, d.petrovic
> 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, -> #925, d.petrovic
> 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, -> #946, pjankovic
>> 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, -> #930, 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, -> #951, d.petrovic
> 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, -> #958, janko
Ă> 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, -> #945, janko
> 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, -> #949, snemcev
> 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, -> #961, nbatocanin
> 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, -> #920, nbatocanin
>> 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, -> #956, kanda
> {|| 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, -> #957, dpaun
> 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, -> #967, ciki
│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, -> #967, ciki
>> 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, -> #966, nbatocanin
>> 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, -> #972, ratman
■ 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, -> #965, nbatocanin
>> 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, -> #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. └─── 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, -> #923, dejanr
/ 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, -> #937, nbatocanin
/ 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, -> #945, 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 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, -> #944, janko
/ 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, -> #948, dusanp
/ 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, -> #940, d.petrovic
/ 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, -> #942, ppekovic
/ 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, -> #959, 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 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, -> #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 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, -> #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 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, -> #988, bcetina
Ă> 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, -> #982, ndragan
=> 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, -> #974, kanda
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, -> #909, snemcev
-> 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, -> #970, 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, -> #987, janko
/ Nijedan _pravi_ jezik koji se kompajlira to ne dozvoljava. ;) Jako sam lepo zadovoljan lažnjakom dok radi bolje od pravog :).
clipper.997 ndragan, -> #988, bcetina
/ 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, -> #997, ndragan
>│ 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, -> #993, djoskovski
> /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, -> #990, dusanp
>> 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, -> #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. 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, -> #979, ndragan
> 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, -> #984, ndragan
> 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, -> #988, bcetina
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, -> #1008, boris.
Ă> 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, -> #990, dusanp
/ 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, -> #993, djoskovski
/ 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, -> #978, 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, -> #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?! └─── Nije greska, sifru dobijes posle registracije. Unutra se nalazi source i potpuno funkcionalna biblioteka.
clipper.1015 ndragan, -> #1002, nbatocanin
/ 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, -> #1003, nbatocanin
/ 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, -> #1004, ciki
/ 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, -> #1008, boris.
/ ?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, -> #1020, aleksj
>> P.S. Mozda je to zato sto sam koristio C++ 2.xx ?! Jeste. Uzmi MSC, verziju 5.1 ili 6.0.
clipper.1022 nbatocanin, -> #1015, ndragan
> 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, -> #130, nbatocanin
> 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, -> #130, nbatocanin
> 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, -> #1022, nbatocanin
>> 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, -> #1022, nbatocanin
/ 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, -> #1013, ndragan
>> ... 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, -> #1025, kanda
> 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, -> #1028, nbatocanin
/ 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, -> #1027, snemcev
/ 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)?