PCPROG.3

26 Jul 1993 - 22 Apr 1994

Messages - clipper

clipper.3 nbatocanin,
odgovor na [9.1016] > Da li se na 5.2 objekti mogu i definisati? Na žalost, ne. > Kao sto rekoh, ne mogu bas da se pohvalim preteranim > poznavanjem 5.0 objekata a citajuci u reference-u nije mi > sasvim jasno sta radi browse:configure() metod. Rekonfiguriše TB objekat iz početka: ponovo čita sve zadate interne promenljive, proračunava koordinate i sl. Ovo treba koristiti kad se menja neka interna promenljiva TB objekta, a želimo da se ta izmena vidi.
clipper.2 nbatocanin,
odgovor na [9.1009] > "Lopov" ne mora ništa da menja u programu - samo promeni > ime firme i proda ga upola cene "izvadivši" tako štetu što > je platio program. Ne bi bilo prvi put. Ja (možda naivno) još uvek ne mogu da verujem da postoje takvi ljudi. Ja se, čak i da hoću, nikad ne bi usudio tako nešto da uradim: šta ako korisnik zatraži neku značajniju izmenu? Zna li neko konkretan slučaj ovakve krađe?
clipper.4 nbatocanin,
odgovor na [9.1018] > Sta je tu cemo slicno? > Ovo je rekurzivno definisana struktura, a tamo je > rekurzivna ... macka (TBcolumn) u dzaku (TBrowse)! > ;) Sad sam malo detaljnije gledao onaj primer i u pravu si: tu nešto nije kako treba. Očigledno si udario u neko interno ograničenje Clipper objekata. Pogledaću za koji dan malo detaljnije. Inače, što se tiče tvog problema, da li ovo rešava problem: tebi ne treba da preneseš funkciji ceo objekt, već samo redni broj kolone, tj. ovako nešto: TB:addColumn(TBcolumnNew("", {|| Udf(1) }) TB:addColumn(TBcolumnNew("", {|| Udf(2) }) TB:addColumn(TBcolumnNew("", {|| Udf(3) }) Zašto ovako ne definišeš kolone?
clipper.1 nbatocanin,
odgovor na [9.1014] > Na primer, ladno pravljenje POP-UP menija Objasni malo detaljnije. Sa dBase IV sam radio cirka 10 min. pa mi ovo ni izbliza ne dočarava noseće značenje ;)
clipper.5 nbatocanin,
odgovor na [9.1013] >> Browse ima toliko opcija da se razmišljam da napišem >> generator za tih nekoliko linija, da mi bar prvu >> verziju napiše sintaksno tačnu i štogod ulepšanu. žisto >> me zanima šta su posebne cake u DbEdit(), tek da vidim >> da li mi nešto od toga nedostaje. Kad smo već kod te teme, da li FoxBrowse može nešto od sledećeg: - Da se zada frekvencija skaniranja izvornih podataka: na primer, želiš da na mreži interaktivno prikazuješ/menjaš spisak aktivnih procesa. - Da se menjaju parametri prikaza za vreme prikaza (korisnik briše ili dodaje kolone i sl.) - Da se koristi za pregled drugih stvari (nizovi, ASCII datoteke) I interesuje me koja je njegova najmoćnija opcija? Naravno, po subjektivnoj proceni. > Meni izgleda nije jasno o čemu vi ovde... :)) > Zar postoji nešto što DbEdit() može, a ne može da se uradi > u TBrowse() ?? Nema šansone, jerbo je DBEdit obična Clipper procedura koja koristi TBrowse objekte.
clipper.6 dejanr, -> #2, nbatocanin
>> > "Lopov" ne mora ništa da menja u programu - samo promeni >> > ime firme i proda ga upola cene "izvadivši" tako štetu što >> > je platio program. Ne bi bilo prvi put. >> >> Ja (možda naivno) još uvek ne mogu da verujem da postoje takvi ljudi. >> Ja se, čak i da hoću, nikad ne bi usudio tako nešto da uradim: šta >> ako korisnik zatraži neku značajniju izmenu? Pa, to je unapred rešeno. Pera i Laza se dogovore i od mene naruče program, plate svaki po pola a onda jedan izmeni ime firme i koristi program piratski. Kad bilo kome od njih treba izmena, Pera (koji je jedini samnom imao veze) traži tu izmenu, posle opet preprave program za Lazu i tako... >> Zna li neko konkretan slučaj ovakve krađe? Ćuj, slućaj... ja bre imam čitavu metodologiju rada za takve mušterije (istina, ne za te koji koriste declipper, takve još, fala Bogu, nisam imao, nego za one što iz Nortona menjaju :). Kada posumnjam da će neko da "deli troškove" za program sa nekim (ili nekolicinom) drugih, a to se prilično lako uoči, do sada ni jednom nisam pogrešio, ja mu dam program u kome se ime firme menja prosto ko pasulj. Bode oči da se promeni :) Međutim, program je napravljen tako da posle nekog datuma počne malo da brlja. Nikakvu štetu ne pravi, nego recimo ne radi štampanje ili tako nešto što čini program totalno neupotrebljivim. Mušterija se javi, kaže pojavio se problem, ja se lepo izvinim i dam mu ispravljenu verziju. Samo, u toj ispravljenoj verziji ime firme nije "očigledno" nego je tako zakukuljeno da ga je jako teško (never say never ;) izmeniti. Njih dvojica (trojica...) se onda par dana pate da ga izmene, ali ne uspeju. No, onaj drugi se u međuvremenu "navukao" na korišćenje računara, ne može više bez njega i bez tog programa koji mu je lepo radio posao, a obaška što je već dao pare za kompjuter, štampač... Ne ostaje mu ništa drugo nego da pokorno dođe kod mene i kupi program :) Mislim da sam na taj scenario do sada prodao 7-8 instalacija. Lepo su to smislili oni što prodaju drogu, šteta ne primeniti ;>
clipper.7 d.petrovic, -> #5, nbatocanin
Ă>> Zar postoji nešto što DbEdit() može, a ne može da se uradi Ă>> u TBrowse() ?? Ă> Nema šansone, jerbo je DBEdit obična Clipper procedura koja Ă> koristi TBrowse objekte. Morao sam da pitam ;). Toliko poruka koje čitam i češkam se pa se pitam zar je moguće da niko od njih ne poznaje dovoljno Tbrowse :))
clipper.8 rpausic,
CONF JOIN PC.PROG.2 CONF REPLY 9.1010 > Kućni programer? Kolega, saučešće. Bićeš kriv za sve, i što zajebeš > ti i što zajebu oni, a onda će te hvaliti na sva usta za nešto što > si uradio malim prstom za pet minuta, pa će te posle psovati što > trodnevni posao nije bio gotov za minus pola dana... Sve je tačno, čak i gore ;-<<<<. Sa biserima ne bih opterećivao ovu conf. Imaš li lična iskustva ili si samo pretpostavljao? P.S. Hvala na saučešću!
clipper.9 rpausic,
CONF JOIN PC.PROG.2 CONF REPLY 9.1020 > Zato se pridruzujem tvom 'apelu' i kandidujem za jedno od mesta u > eventualnoj grupi ( izuzev ako ne diskriminisete prebege u > protivnicki FoxPro tabor :) Temu sam pokrenuo u clipper-u delom slučajno, delom namerno. Prvo tu sam se zatekao kada sam se odlučio na taj korak, a drugo mislim da još uvek najveći broj programera sa sličnim problemima radi u Clipper-u. U poverenju, i ja se pripremam u prebege, ali verovatno u PDX. Negde u budućnosti ... Inače, nikada nisam pripadao grupi ljudi koji bi se posvađali oko odnosa PC/Amiga, Clipper/FoxPro/PDX/??? i slično, pa mi nisi nikako u protivničkom taboru. Tamo su mi knjigovođe ;-> Znači nije važan jezik, već poslovna primena!
clipper.10 cnenad,
Prvo, pitanje za moderatora. Zasto tema o clipperu sad ima broj 11 kad je recimo u provj conf bila 5 pa u drugoj 9 ? Sto nije ostao isti broj teme u svim conf ? Drugo, potrebna mi je hitna pomoc, ako mozete da izbajate sta se dogodilo sa programom koji nije uopste menjan ali je poceo da neprijatno zaglavljuje. Recimo, radim unos preko get u neka polja i onda treba sa replace da izvrsi zamenu u poljima baze ÚÚ-ĺa Úza to vreme je ispisano na ekranu SACEKAJTE i kad se zavrsi program nastavlja dalje da radi a evo vec nekoliko puta se zaglavljuje. Ali ne zaglavljuje se samo na tom mestu nego i na drugim. Medjutim ta druga mesta u programima su isto predvidjena za unos nekih podataka preko GET-a. Da nema neke veze mozda se enviro.parametrom set clipper=f:40 koju sam obrisao iz autoexec-a ? Pomagajte !
clipper.11 d.petrovic, -> #10, cnenad
Ă> Da nema neke veze mozda se enviro.parametrom set clipper=f:40 Ă> koju sam To je broj fajlova koje kliper može istovremeno da otvori i verovatno je tu problem. I nije "f:40" nego "f40". Osim toga, ako je proglam linkovan rtlink-om i ima dinamičke overleje ne radi kako treba sa EMS memorijom. Provari to pa kukaj dalje. I kako se zaglavi? Ako je doserror 4 onda je sigurno to: "set clipper=f40".
clipper.12 goranr, -> #1, nbatocanin
Pa, recimo, dbase IV ima standardno ugradjene opcije ÜÂza kreiranje POPUP menija, a nema zezanja ko u Clipperu, za pisanje raznih levih funkcija. Ima MENU CREATE (valjda je tako, i ja sam s dbaseom radio oko 30 min)(ŔkĘ, i sl. funkcije.
clipper.13 ialeksic, -> #4, nbatocanin
>>>Inace, sto se tice tvog problema, da li ovo resava problem: tebi ne >>>treba da preneses funkciji ceo objekt, vec samo redni broj kolone,... Kao sto rekoh negde ranije u ovom lancu (ako mogu samog sebe da citiram ;)), pitanje je bilo PRINCIPJELNE prirode. I dalje sam ubedjen da TBrowse objekat nepotrebno referencira TBcolumn objekat da bi eksportovao varijablu ColPos, jer da bi to uradio mora da zna kome TBcolumn objekatu (a to znaci ColPos) zeli da pristupi. To se izgleda ne desava samo sa colPos vec i sa rowPos (sto sam probao) a mozda i za jos neke eksportovane entitete. Zbog toga se ne bih usudio da kazem da je to BUG, pre bih rekao da je to dizajner upravo hteo da uradi (ili nije mogao da izbegne ;) ). Sto se tice ideje sa : TB:addColumn(TBcolumnNew("", {|| Udf(1) }) TB:addColumn(TBcolumnNew("", {|| Udf(2) }) ... to nije ono sto sam pocetno hteo. A hteo sam da UDF automatski (preko ^^^^^^^^^^ colpos, ili nekako drugacije, neznam kako) prepozna koji TBcolumn procesira. Tvoje resenje prevazilazi problem, ali se onda mora voditi racuna o redosledu definisanja TBcolumn objekata. Ja sam na kraju digao ruke od ovoga tako sto koristim zasebne UDF-ove za zasebne TBcolumn objekte.
clipper.14 cnenad, -> #11, d.petrovic
ŁŁŁ To je broj fajlova koje kliper moze istovremeno da otvori i ŁŁŁ verovatno je tu problem. I nije "f:40" nego "f40". Osim toga, ŁŁŁ ako je proglam linkovan rtlink-om i ima dinamicke overleje ne ŁŁŁ radi kako treba sa EMS memorijom. Provari to pa kukaj dalje. ŁŁŁ I kako se zaglavi? Ako je doserror 4 onda je sigurno to: "set ŁŁŁ clipper=f40". Namestio sam set clipper=f40, ali i dalje zaglavljuje. Program jeste linkovan RTLINK-om ali bez ikakvih prekidaca.
clipper.15 rpausic, -> #10, cnenad
>## Da nema neke veze mozda se enviro.parametrom set clipper=f:40 koju >## sam obrisao iz autoexec-a ? >## Pomagajte ! Obavezno vrati tu promenljivu na vrednost kakva je bila. Koje su ostale specifikacije problema? Moraš se setiti svih stvari koje su se desile od vremena kada je program ispravno radio. Npr. da li si menjao računar, kolike su bile ulazne vrenosti (red veličine), eventualne poruke o greškama, itd. Svakim novim detaljem se povećava mogućnost da ti ovako napamet pomognemo.
clipper.16 rpausic, -> #14, cnenad
>## Namestio sam set clipper=f40, ali i dalje zaglavljuje. >## >## Program jeste linkovan RTLINK-om ali bez ikakvih prekidaca. Probaj sa SET CLIPPER=f:40 ili SET CLIPPER=//f:40. Zašto bez ikakvih prekidača. Probaj više da se udubiš u filozofiju Clipper-a 5.x i koristi prednosti koje ti on nudi. Ako nemaš, nabavi knjigu Rika Spensa, Clipper 5 u izdanju Mikro Knjige. Verovatno je skupa, ali vredi svaki dinar koji uložiš u njega. Pregledao sam malo tvoje poruke i zaključio da si još početnik i da ti programiranje nije uža struka. Šta ti kaže dibager? Ako ništa ne pomogne, pošalji deo sorsa. Možeš i na mail.
clipper.17 ialeksic,
Da li neko zna sta u ovom uproscenom programcicu ne valja. Radi se o postavljanju relacije na samu sebe. A uz to ide i dodavanje slogova :) Evo ga: FUNCTION TEST(BrojSlogova) /* Program treba da kreira olancanu strukturu gde je: Tx: kljuc Nxt: Sledeci Prv: Prethodni */ LOCAL DBFname:="test" , ; DBFalias:="testa" , ; Prethodni i:=0 IF !FILE(DBFname+"dbf") aDbf := {} AADD(aDbf, { "Tx", "N", 4, 0 }) AADD(aDbf, { "Nxt", "N", 4, 0 }) // Kreira .dbf ako ne postoji AADD(aDbf, { "Prv", "N", 4, 0 }) DBCREATE( DBFname, aDbf) ENDIF USE (DBFname) ALIAS (DBFalias) NEW IF !FILE(DBFname+"ntx") INDEX ON STR(Tx,4) TO (DBFname) // Kreira .ntx ako ne postoji ENDIF SET INDEX TO (DBFname) USE (DBFname) NEW SET INDEX TO (DBFname) SET RELATION TO STR(Prv,4) INTO (DBFalias) ZAP SET EXACT ON (DBFname)->(DBAPPEND()) Prethodni:=(DBFname)->Tx:=++i // Pocetni slog COMMIT DO WHILE i++<VAL(BrojSlogova) // vrti! (DBFname)->(DBAPPEND()) (DBFname)->Tx:=i (DBFname)->Prv:=Prethodni COMMIT // MISLIO SAM DA CE NEST OD DBSKIP(0) // OVA DVA POMOCI AL' SLABA VAJDA /* PROGRAM NE RADI DOBRO JER SE OVO NIKAD NE DOGODI JER JE (DBFalias) stalno na EOF */ (DBFalias)->Nxt:=(DBFname)->Tx Prethodni:=(DBFname)->Tx ENDDO
clipper.18 cnenad, -> #16, rpausic
ŁŁŁ nemas, nabavi knjigu Rika Spensa, Clipper 5 u izdanju Mikro ŁŁŁ Knjige. Verovatno je skupa, ali vredi svaki dinar koji ulozis ŁŁŁ u njega. Pregledao sam malo tvoje poruke i zakljucio da si ŁŁŁ jos pocetnik i da ti programiranje nije uza struka. Imam od Alempija Veljovica knjigu o 5.01 a za to trenutno nemam love ali cim dodjem do nje odmah je kupujem. Mozda u odnosu na tebe jesam pocetnik ali taj program je sljakao nekih godinu dana i sad je poceo da zeza. Dobro sljakao je kad je bio preveden sa S87 a zezanje je pocelo od kada sam presao na 5.01. Izgleda da cu morati malo da pregledam i prepravim sors.
clipper.19 cnenad, -> #15, rpausic
ŁŁŁ li si menjao racunar, kolike su bile ulazne vrenosti (red ŁŁŁ velicine), eventualne poruke o greskama, itd. Svakim novim ŁŁŁ detaljem se povecava mogucnost da ti ovako napamet pomognemo. Nisam menjao racunar, nema nikakvih poruka o greskama, samo se zaglavi i ako drzim neki taster posle zaglavljivanja cuje se na zvucniku pijuckanje. evo dela sorsa na kome se najcesce zaglavljuje: ovde idu promenljive do while k="D" .or. k="d" do while .t. do RAM2 do z do slobodno set delimiters to " ." set delimiters on @5,2 say 'SIFRA ARTIKLA:' @5,16 get sfr pict "99999999" @5,27 say 'SIFRA MAGACINA:' @5,41 get smg pict "999" read use art locate for sif_ma=smg .and. sifra=sfr if found() do bg @11,8 say "POKUSALI STE DA NIVELISTE ARTIKL KOJI JE VEC JEDNOM NIVELISAN !!!" @13,19 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!" inkey(10) loop endif use artikli locate for sif_ma=smg .and. sifra=sfr if .not. found() do bg @10,2 say " POKUSALI STE DA NIVELISTE ARTIKL KOJI NISTE DEFINISALI ILI NE POSTOJI U TOM" @11,2 say "MAGACINU ILI SU UNETI PODACI POGRESNI ! UNESITE TACAN PODATAK ILI NOVI ARTIKL" @13,21 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!" inkey(10) close data set color to return else read exit endif enddo IZ="D" do while .t. do while .t. do slobodno naziv_robe=" " @5,47 say "NAZIV: "+naziv_robe pict "xxxxxxxxxxxxxxxxxxxxxxxxx" @5,75 say mera pict "XXX" set delimiters on @7,12 say lag_kol pict "9,999,999" @7,70 say porez pict "999" @9,70 say ukal_proce pict "999" @7,4 say 'STANJE:' get LAG_kol pict "9,999,999" @7,22 say 'STARA CENA BEZ P.:' get lag_cena pict "99,999,999,999" set delimiters off @7,63 say 'POREZ:' get porez pict "999"+' %' set delimiters on @9,4 say 'NOVA CENA BEZ P.:' get NCBP pict "999,999,999,999" set delimiters off @9,41 say 'UKALKULISANA RAZLIKA U CENI:' get UKAL_proce pict "999"+' %' do w @6,3 to 10,77 @6,2 to 6,78 double @8,3 to 8,77 @6,24 say chr(209) @7,24 say chr(179) @8,24 say chr(193) @8,40 say chr(194) @9,40 say chr(179) @10,40 say chr(193) @6,62 say chr(209) @7,62 say chr(179) @8,62 say chr(193) @8,3 say chr(195) @8,77 say chr(180) @6,3 say chr(209) @6,77 say chr(209) read if LAG_kol>0 .and. lag_cena>0 .and. ncbp>0 exit else do z @17,7 say "POLJA ZA UNOS MORAJU BITI SVA POPUNJENA BROJEVIMA VECIM OD NULE !!!" do w @19,20 say "PRITISNITE BILO KOJU DIRKU NA TASTATURI !!!" inkey(7) @17,3 clear to 17,78 @19,3 clear to 19,78 loop endif enddo do z do del @17,23 say 'PODACI SU UNESENI DOBRO (D/N) ?' get IZ pict "X" do while .t. read if IZ="D" .or. IZ="d" .or. IZ="N" .or. IZ="n" exit else x="N" iz=x exit endif enddo if IZ="D" .or. IZ="d" @17,2 clear to 17,78 @20,1 clear to 24,79 do b @1,1 to 24,79 double @1,17 say chr(203) @1,64 say chr(203) @4,1 say chr(204) @4,79 say chr(185) @6,1 say chr(204) @6,79 say chr(185) exit endif if IZ="N" .or. IZ="n" @17,2 clear to 17,78 do delmi2 set delimiters to " ." loop endif enddo do b @10,44 to 24,44 @10,44 say chr(194) @18,2 to 18,27 @20,2 to 20,27 do z ovde idu racunanja za razne parametre @11,3 say "PROCENAT NIVELISANJA: " @11,30 say procniv pict "999,999.9999"+" %" ispisi rezultata.... do z_ @22,11 say "S A C E K A J T E ! ! !" use radna append from artikli all for sifra=sfr .and. sif_ma=smg replace lag_kol with lag_kol, lag_cena with lag_cena, proc_niv with procniv, iznos_niv with z1, ncbporeza with ncbp, iznos_por with z2, ncsporeza with ncsp, prer_stopa with prerstopa, razlika_sp with razlikasp, razlika_bp with razlikabp replace revalor_sp with revalorsp, revalor_bp with revalorbp replace ukpnnivcsp with ukpnivcensp, ukpnnivcbp with ukpnivcenbp, nov_stanje with ukpnncsp use art append from radna use radna zap use artikli replace lag_cena with ncbp for sifra=sfr .and. sif_ma=smg do while .t. do z @22,11 clear to 22,36 @22,11 say 'ZELITE PONOVO (D/N) ?' get k pict "X" do g_ @22,31 say '?' set color to read if k="D" .or. k="d" .or. k="N" .or. k="n" exit else x="N" k=x exit endif enddo if k="D" .or. k="d" set intensity on loop else endif if k="n" .or. k="N" close data endif do delmi2 exit enddo do ram return
clipper.20 cnenad, -> #12, goranr
ŁŁŁ Pa, recimo, dbase IV ima standardno ugradjene opcije ÜÂza ŁŁŁ kreiranje POPUP menija, a nema zezanja ko u Clipperu, za ŁŁŁ pisanje raznih levih funkcija. Ima MENU CREATE (valjda je ŁŁŁ tako, i ja sam s dbaseom radio oko 30 min)(ŔkĘ, i sl. To je mnogo lepse uradjeno nego u kliperu. Ali smeta mi jedna druga stvar, sto recimo kad se vracas sa ESC tasterom iz nekog podmenija i dodjes na glavni meni u DBASE IV on registruje cak i ako si greskom pritisnuo ESC i prekida program odnosno pojavljuje se njegov "DIJALOG PROZOR" gde pita standardno 'cancel' 'ignore' 'help' Naredba za setovanje, SET ESCAPE OFF nije pomogla i dalje je mogao da se program prekine sa pritiskom na ESC u bilo kom trenutku.
clipper.21 cnenad, -> #19, cnenad
Zaboravio sam da dopisem da se zaglavljuje kad izvrsi replace i treba da se pojavi upitnik da li da se radi sledeci artikl ili ne Inace on sa naredbom izvrsi zamene u bazi pa tek onda zaglavi.
clipper.22 draganm, -> #6, dejanr
*> u toj ispravljenoj verziji ime firme nije "ocigledno" nego je *> tako zakukuljeno da ga je jako tesko (never say never ;) *> izmeniti. Ajde napravi bilo kakav program koji ima zakukuljen text cisto da pokusam da ga 'razbijem'. :)
clipper.23 d.petrovic, -> #16, rpausic
Ă> Šta ti kaže dibager? Ako ništa ne pomogne, pošalji deo sorsa. Ă> Možeš i na mail. Ma reče čovek da je program već radio. Nije dignuta EMM memorija?
clipper.24 rpausic, -> #19, cnenad
> Nisam menjao racunar, nema nikakvih poruka o greskama, samo se > zaglavi i ako drzim neki taster posle zaglavljivanja cuje se na > zvucniku pijuckanje. Pištanje iz zvučnika ti znači da je bafer tastature pun (u ovom slučaju). Probao sam da ti lociram grešku, ali nisam uspeo. Ako neko ima više iskustva u prebacivanju iz S87 u 5.01 neka ti pomogne, mada mislim da nema dovoljno elemenata. Javio sam ti mail-om par saveta.
clipper.25 snemcev, -> #17, ialeksic
>> Da li neko zna sta u ovom uproscenom programcicu ne valja. Radi se o >> postavljanju relacije na samu sebe. A uz to ide i dodavanje slogova Kol'ko ja znam Clipper, SET RELATION znači da pri svakom pomeranju pokazivača sloga treba izvršiti SEEK u oblasti koja je povezana sa tekućom. Što postavljaš relaciju samu na sebe? Tada ti GO BOTTOM ode na kraj datoteke, a pošto je to pomeranje pokazivača izaziva automatski SEEK, pa pošto je i to pomeranje pokazivača... Jednom rečju - rekurzija.
clipper.26 goranr, -> #20, cnenad
Ne znam, kazem ti, ali ono sto sam video bilo je dosta lepo uradjeno. Sad, to je bila verzija 1.0, a nisam video ni 2.0, ni 2.0 kompajler, ali ako se mogu popraviti te stvari, i kad bi mogao da se napise sopstveni error handler, to bi bilo jaaaaaaaako dobro. ÔOPAH
clipper.27 nbatocanin, -> #12, goranr
> Ima MENU CREATE Očekivao sam nešto više. Uostalom ovo sa nekoliko redova napraviš u Clipper-u, maskiraš sa #translate i eto ti MENU CREATE u Clipper-u :)
clipper.28 nbatocanin, -> #6, dejanr
> Lepo su to smislili oni što prodaju drogu, šteta ne > primeniti ;> Uh, ubediste me da promenim mišljenje ;)
clipper.29 nbatocanin, -> #10, cnenad
> Drugo, potrebna mi je hitna pomoc, ako mozete da izbajate > sta se dogodilo sa programom koji nije uopste menjan ali > je poceo da neprijatno zaglavljuje. Mora biti da je nešto u međuvremenu menjano: sjet se, sjet se... > Recimo, radim unos preko get u neka polja i onda treba sa > replace da izvrsi zamenu u poljima baze ÚÚ-ĺa Úza to vreme > je ispisano na ekranu SACEKAJTE i kad se zavrsi program > nastavlja dalje da radi a evo vec nekoliko puta se > zaglavljuje. Ali ne zaglavljuje se samo na tom mestu nego > i na drugim. Medjutim ta druga mesta u programima su isto > predvidjena za unos nekih podataka preko GET-a. Uh, odavde je teško reći: uzmeš bre dibager pa korak po korak i onda lepo vidiš gde zaglavljuje. > Da nema neke veze mozda se enviro.parametrom set > clipper=f:40 koju sam obrisao iz autoexec-a ? Mož' da bidne, al' ne mora da znači ;)
clipper.31 nbatocanin,
> BLINKER : 1115 : bliovlmgr(S8OVLMGR) : '__DOS_HOLD' : > unresolved external Imaš verziju Summer'87 sa kojom Blinker ne radi. Moraš naći noviju ili preći na 5.01, što ti najtoplije savetujem.
clipper.30 nbatocanin,
> Je li tacno da postoji neka vrsta sintaksnog checkera za > Clipper koji radi u editoru, i.e. svaki put kada se otkuca > linija i CR, proverava sintaksu. Mislim da ćeš teško naći nešto *baš* ovako. Najsličnije stvari ima BRIEF u paketu dBRIEF, koji BRIEF prilagođava xBase programiranju. Međutim, mene to nije nešto dojmilo. Doduše gledao sam neku staru verziju, možda je neka nova bolja. Upravo radim sa programom dClip, koji predstavlja neki interaktivni sistem za razvoj Clipper programa, pa ću javiti kad budem imao neke utiske :)
clipper.32 oldtimer,
Ljudi prosvetlite me malo. Clipper ne koristim profesionalno, imam 5.01a, Blinker i gomilu biblioteka što je za moje hobističko bavljenje istim više nego dovoljno, ali ipak.. Da li 5.2 donosi nešto novo i vredno osim raznih formata indeksnih datoteka. Da, pročitao sam Računare 93, ali me zanima mišljenje nekog ko je ovo probao u praksi. B)Miša
clipper.33 gari,
Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi bas kako treba ili ja uporno ne vidim gresku: Evo doslovno CELOG programa: *********************************** LOCAL Infile, ctmp, i, aname:={} Infile := fopen("proba.txt") ctmp := space(3) for i:=1 to 10 fread(infile,@ctmp,3) aadd(aname,ctmp) next achoice(10,10,20,70,aname) return *********************************** File proba.txt (ASCII): 111222333444555666777888999000 Posle ovoga treba da pokaze sa funkcijom achoice: 111,222,333,444,555,666,777,888,999,000 medjutim uporno se prikazuje: 000,000,000,000,000,000,000,000,000,000 STA NIJE U REDU !?!?!?!?!?!?!?!?!?!?!?!?!?!? p.s. Inace ovo ima veze sa programom za vracanje arhive sa diskete on nbatocanin-a pozdrav, Gari
clipper.34 bulaja, -> #30, nbatocanin
│Upravo radim sa programom dClip, koji predstavlja neki interaktivni │sistem za razvoj Clipper programa, pa cu javiti kad budem imao neke │utiske :) └─── Javi, bas ce me interesovati tvoje misljenje posto sam ja dClip vrlo brzo obrisao :) (ne zato sto je mnogo los, vec zauzima suvise mesta a nisam mu video neku svrhu:).
clipper.35 bulaja, -> #32, oldtimer
│Ljudi prosvetlite me malo. Clipper ne koristim profesionalno, imam 5.01a, │Blinker i gomilu biblioteka sto je za moje hobisticko bavljenje istim │vise nego dovoljno, ali ipak.. Da li 5.2 donosi nesto novo i vredno osim │raznih formata indeksnih datoteka. └─── Udarni novitet su RDD, ostalo su uglavnom male promene. Jedina nova funkcija je ColorSelect() (aktiviranje odredjenog para iz SetColor(), bilo bi korisnije da su stavili da funkcija samo vraca cColor a ne da setuje) , ima nekoliko izmena u GET klasi, zgodan TBrowse metod TBrowse:forceStable() i to je uglavnom sve. Ja licno sam jos uvek na 5.01 iz jednog prostog razloga - sa Clipperom 5.2 ne rade biblioteke prevedene verzijom 5.01. Neko je ovde rekao da definisanje prazne Clipper501 procedure resava problem, ali nije tako - tako samo linker nece prijaviti undefined simbol, a program ce se jednako zaglavljivati. Trebalo bi ovih dana da dovucemo iz USA neke stvarcice koje omogucavaju koriscenje 5.01 biblioteka u 5.2. Ukoliko to proradi Ok, onda bi vredelo bezbolno (da ne mora nista da se menja:) preci na 5.2.
clipper.36 goranr, -> #27, nbatocanin
Pa, kazem ti, i ja sam slabo radio sa tim, medjutim, mogu reci da se pomocu tog CREATE POPUP i SHOW POPUP mogu praviti jako lepi meniji. ÔOPAH
clipper.37 nbatocanin, -> #13, ialeksic
> I dalje sam ubedjen da TBrowse objekat nepotrebno > referencira TBcolumn objekat da bi eksportovao varijablu > ColPos, jer da bi to uradio mora da zna kome TBcolumn > objekatu (a to znaci ColPos) zeli da pristupi. Slažem se. > To se izgleda ne desava samo sa colPos vec i sa rowPos > (sto sam probao) a mozda i za jos neke eksportovane > entitete. Za sve, u stvari. Bilo kakav pristup TB objektu rezultuje greškom.
clipper.39 nbatocanin, -> #17, ialeksic
> Da li neko zna sta u ovom uproscenom programcicu ne valja. > Radi se o postavljanju relacije na samu sebe. A uz to ide > i dodavanje slogova :) Evo ga: Nemoj otvarati istu datoteku u dve radne oblasti - to je veoma rizičan potez. Povezana lista se može napraviti i na druge načine.
clipper.38 nbatocanin, -> #19, cnenad
> append from artikli all for sifra=sfr .and. sif_ma=smg > replace lag_kol with lag_kol, lag_cena with lag_cena, > proc_niv with procniv, iznos_niv with z1, ncbporeza with > ncbp, iznos_por with z2, ncsporeza with ncsp, prer_stopa > with prerstopa, razlika_sp with razlikasp, razlika_bp with > razlikabp replace revalor_sp with revalorsp, revalor_bp > with revalorbp replace ukpnnivcsp with ukpnivcensp, > ukpnnivcbp with ukpnivcenbp, nov_stanje with ukpnncsp Daj malo bliže gde krahira, ko će na suvo analizirati ovoliki listing.
clipper.40 d.petrovic, -> #33, gari
Ă> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi Ă> bas kako treba ili ja uporno ne vidim gresku: Očigledno fread nije ono što je bila ;(( Ovo prevedeno sa CL 5.01 radi, 5.2 sam malo maltretirao, čisto da proverim da nije do aadd() i nije. Pokazivač očigledno ne stoji gde je bio :(. Zanimljivo je da NIJEDNA promenljiva tu više nije sigurna :((((((((((((((((. Na kraju je primer šta se još dešava. LOCAL Infile, ctmp, i, aname:=šć, c:=0 Infile := fopen("proba.txt") *ctmp := space(3) && ovo izbrišeš for i:=1 to 10 ctmp := space(3) && pa ga staviš ovde fread(infile,čctmp,3) aadd(aname,ctmp) next cls achoice(10,10,20,70,aname) return ========== drugi pimer =================== LOCAL Infile, ctmp:=space(3), q:=space(3), w:=space(3), e:=space(3) Infile := fopen("proba.txt") fread(infile,čctmp,3) q:=ctmp fread(infile,čctmp,3) w:=ctmp fread(infile,čctmp,3) e:=ctmp cls č 10, 10 say q č 11, 10 say w č 12, 10 say e return *luda funkcija pobrljavi SVE promenljive koje su iste dužine i koje *su joj vidljive :(((
clipper.41 d.petrovic, -> #40, d.petrovic
Nije da volim sam sebi da repliciram, ali sad sam video da je prethodni primer možda nejasan. Probajte ovo da prevedete sa CA 5.2, biće veselja: =================== ovde iseci ==== PRIMER.PRG ================= LOCAL Infile, ctmp:=space(3), q:=space(4), w:=space(3), e:=space(3) Infile := fopen("proba.txt") ctmp := space(3) cls fread(infile,čctmp,3) q:=ctmp ? q fread(infile,čctmp,3) w:=ctmp ? w fread(infile,čctmp,3) e:=ctmp ? e ? "" ? q ? w ? e return =================== ovde iseci ======================== =================== ovde iseci === PROBA.TXT ========== 111222333444555666777888999000 =================== ovde iseci ========================
clipper.42 ialeksic, -> #37, nbatocanin
>>> Za sve, u stvari. Bilo kakav pristup TB objektu rezultuje greskom. Fala bogu ima jedan izuzetak: CARGO !
clipper.43 ialeksic, -> #39, nbatocanin
>>> Nemoj otvarati istu datoteku u dve radne oblasti - to je veoma >>> rizican potez. Povezana lista se moze napraviti i na druge nacine. Dobro, i napravio sam je na drugi nacin. Medjutim mislim da je veoma elegantno i koncepcijski cisto koristiti jednu datoteku u (ne samo!) dve radne oblasti (sa cetiri bi bilo na primer sa pointerima na sledeci, prethodni, i vlasnika). Kada se jednom postave relacije, pokretanjem sloga u osnovnoj radnoj oblasti krece se automatski cela medjusobno korelirana struktura. I to, bez azuriranja radi dobro. Problem je izgleda u tome sto mehanizam povezivanja zavisi od datoteke indeksa koji se u kliperu ne azurira automatski za sve radne oblasti koje koriste isti indeks. Cak stavise, kao sto se vidi i u prilozenom primeru ne pomazu ni razne akrobacije sa SEEK 0, COMMIT, itd. Kad bi to i pomoglo, to vise nije ono za sta sam mislio da je dosta elegantno resenje. No, mozda i nije tako za sad nemogu da nadjem neko drugo objasnjenje.
clipper.44 ialeksic, -> #33, gari
>>>Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi... Na 5.01a radi! Mozda ti je problem u proba.txt. 5.2? Ne znam, nisam u posedu istog :( p.s. nisu valjda toliko upropastili clipper sa 5.2 ;)
clipper.45 gaston,
Narode, moram vam reci da su vase rasprave o editorima vrlo zanimljive. Ja inace pisem u IDE-u Turbo Pascal-a 6.0, sa WS komandama. Za krace tekstove koristim QEdit 2.15, pogadjate, zbog gotovo istovetnih komandi. Pokusavam da predjem na pisanje Clipper programa u Brief-u 3.01. Sve te stvari sto ima Brief su vrlo lepe, cak bih relativno brzo mogao da se preorijentisem i na njegove komande. To ne mora da bude toliko namoguce: ipak je kucanje programa isto u svakom editoru, do razlike se dodje kada treba upotrebiti blok komande ili find/replace ... Elem, lep je taj Brief, i taj QEdit, ali mene nerviraju pre svega dve stvari: 1) Zasto nemaju obelezavanje bloka teksta pomocu Shift+strelice ???!!! Lepo je to sto se u B ili Q blokovi mogu obelezavati i ovako i onako (sex...B), ali to mi ionako zatreba jedanput mesecno. Da li neko zna kako da se ovo resi =================================== u Brief-u? ========== 2) Turbo IDE je zgodan zato sto cuva redosled ucitavanja datoteka, polozaje kursora i ostalo, pa cak to mozes da sacuvas i u konf.fajl koji nazoves kako ti je zgodno. Konkre(ve)tno, aplikacija na kojoj radim je, dabome, modularna. Kada radim sa jednim delom paketa, ostali mi ne trebaju. Zato sve .PRG koji se koriste u tom delu sacuvam u po 1 konfiguracijski fajl, tako da ih njih imam 20-ak. Kada treba da radim na nekom delu paketa, lepo ucitam taj konf. fajl i automatski su mi ucitane sve .PRG koje mi trebaju... E, kako da ovo resim u Briefu ? Imam i ja ideju o tome ... Ocigledno treba posebnom komandom sacuvati imena svih fajlova (bafera, u term. Brief-a) u odredjenu datoteku, kojoj korisnik daje ime po zelji, a to treba kasnije ucitati. Stampao sam ja i spisak svih funkcija i komandi Brief-ovog komandnog jezika, ali mi to nije mnogo pomoglo... Verujte, to je ono sto mi zaista treba kod Brief-a, cak vise nego automatski pametni template i drugo. Pomagajte drugovi ! Nesa
clipper.46 v.nesic, -> #33, gari
> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi > bas kako treba ili ja uporno ne vidim gresku: fread(infile,@ctmp,3) <- Odve stavi ctmp:=fredstr(infile,3) > STA NIJE U REDU !?!?!?!?!?!?!?!?!?!?!?!?!?!? Samo nebo zna :)
clipper.47 d.petrovic, -> #45, gaston
Ă> Verujte, to je ono sto mi zaista treba kod Brief-a, cak vise nego Ă> automatski pametni template i drugo. Nisam se ni ja rodio sa njim, ali... Svaki program stoji u posebnom direktorijumu, što onda ne bi starovao brief sa: b *.prg šta fali da za markiranje lupiš Alt-M ? Shift+strelica verovatno može, ali treba napraviti makro, maltretiraj mjovu ;))
clipper.48 d.petrovic, -> #46, v.nesic
Ă> fread(infile,čctmp,3) <- Odve stavi ctmp:=fredstr(infile,3) a ? ;))) (infile,,3)
clipper.49 mickeyl, -> #31, nbatocanin
=> Imaš verziju Summer'87 sa kojom Blinker ne radi. Moraš naći noviju => ili preći na 5.01, što ti najtoplije savetujem. Zar je bilo novijih verzija Cl'87? Nisam to ni znao. Ima li neko tu verziju?
clipper.50 v.nesic, -> #48, d.petrovic
> Ć> fread(infile,čctmp,3) <- Odve stavi ctmp:=fredstr(infile,3) > a ? ;))) (infile,,3) Ne nego baš freadstr(infile,3) !
clipper.51 bulaja, -> #40, d.petrovic
│Ocigledno fread nije ono sto je bila ;(( │Ovo prevedeno sa CL 5.01 radi, 5.2 sam malo maltretirao, cisto da │proverim da nije do aadd() i nije. Pokazivac ocigledno ne stoji gde │je bio :(. Zanimljivo je da NIJEDNA promenljiva tu vise nije sigurna └─── Ako mislis na file pointer, to radi Ok. Do problema dolazi pri prenosu parametara tj. pri vracanju bafer promenljive (cTmp). Ocigledno je rec o bug-u u Clipper 5.2 i to vrlo neprijatnom. Zanimljivo je sta se iz pojave ovog bug-a moze zakljuciti. cTmp se prenosi po imenu (adresi) i trebalo bi da FRead() vrati u cTmp izmenjenu vrednost bafera (dakle string promenljivu). Medjutim FRead() ne vraca string vec pointer na taj string!!! Izgleda da neke Clipper funkcije interno koristi promenljive tipa pointer, a u FRead() su verovatno zaboravili da ubace konverziju pointera u string na izlazu iz funkcije. Iz ovoga bi se dalo zakljuciti da Clipper podrzava pointer type, pitanje je samo kako se on moze koristiti i zasto ga CA nije dokumentovao.
clipper.52 dejanr, -> #49, mickeyl
>> Zar je bilo novijih verzija Cl'87? Nisam to ni znao. Verzije su se numerisale prema *vremenu* na falovima (npr. CLIPPER.LIB). Najnovija koju sam video (i, mislim, poslednja postojeća) verzija ima CLIPPER.LIB datiran 21. decembra 1987 u 2:00 am.
clipper.53 bulaja, -> #49, mickeyl
│Zar je bilo novijih verzija Cl'87? Nisam to ni znao. └─── Postoje dve razlicite verzije. Obe nose isti datum, samo prva nosi file date od 12:00am, a druga 02:00am. Prva je puna bugova, druga je Ok.
clipper.54 nbulatovic,
da li je neko uspeo da startuje sve demo programe iz biblioteke sa objektno orijentisanim funkcijama za clipper?
clipper.55 d.petrovic, -> #51, bulaja
Ă> Zanimljivo je sta se iz pojave ovog bug-a moze zakljuciti. cTmp Ă> se prenosi po imenu (adresi) i trebalo bi da FRead() vrati u cTmp Ă> izmenjenu vrednost bafera (dakle string promenljivu). Medjutim Ă> FRead() ne vraca Ma jesi ti video drugi primer koji sam poslao? Tu je još zanimljivije :((. Predaš joj vrednost bafera, a ona izmeni i ostale promenljive. Da je do pointera valjda bi dala neku nebuloznu vrednost, ovako daje poslednju koja je bila u baferu. Opet mi ništa nije jasno :(((
clipper.56 gari, -> #46, v.nesic
▀█******************************************** ** EVO KONACNOG RESENJA: ******************************************** LOCAL Infile, ctmp, i, aname:={} Infile := fopen("proba.txt") for i:=1 to 10 ctmp:=freadstr(infile,3) aadd(aname,ctmp) next achoice(10,10,20,70,aname) return ******************************************** ** VEOMA sam zahvalan korisniku v.nesic-u ******************************************** Dakle: - Ne treba NIKAKO koristiti vise f-ciju FREAD nego FREADSTR, jer gadno dira promenljive oko sebe... ;> Pozdrav, Gari
clipper.57 cnenad, -> #38, nbatocanin
ŁŁŁ Daj malo blize gde krahira, ko ce na suvo analizirati ovoliki Imenjace, program izvrsi zamenu unesenih podataka preko get u prazna polja novog sloga a kad to zavrsi treba da se pojavi pitanje da li da se unosi novi artikl ili da se izadje iz modula i vrati u glavni program. Tu se zaglavljuje.
clipper.58 bulaja, -> #54, nbulatovic
│da li je neko uspeo da startuje sve demo programe iz biblioteke sa │objektno orijentisanim funkcijama za clipper? └─── Ne, mislim da je Ok radio sam treci demo.
clipper.59 bulaja, -> #55, d.petrovic
│Ma jesi ti video drugi primer koji sam poslao? Tu je jos zanimljivije │:((. Predas joj vrednost bafera, a ona izmeni i ostale promenljive. └─── Pa naravno da ce tako da radi, kada su i ostale promenljive postale pointeri na bafer tj. sve ukazuju samo na (istu) memorijsku lokaciju gde je smesten bafer.
clipper.60 d.petrovic, -> #59, bulaja
Ă> Pa naravno da ce tako da radi, kada su i ostale promenljive Ă> postale pointeri na bafer tj. sve ukazuju samo na (istu) Ă> memorijsku lokaciju gde je smesten bafer. Ali, ako stavimo pre svakog "fread(bbla,čbla,nbla)" jedno "bla:=space(3)" onda će svaka promenljiva zadržati svoju vrednost. Deder malo to pojasni, ako ti je sve toliko logično ;)
clipper.61 snemcev,
Konkursna komisija grupe BUSINESS na osnovu odluke Upravnog odbora raspisuje konkurs za popunu sledećih radnih mesta u grupi business2: - član grupe (10 izvršilaca) Pored zakonom propisanih, kandidati treba da ispunjavaju i sledeće uslove: 1. da su članovi Sezama; 2. da se bave programiranjem poslovnih aplikacija iz domena knjigovodstva, računovodstva i upravljanja; 3. da imaju izraženu dobru volju za saradnju u domenu pisanja pomenutih aplikacija; 4. da su volji potpisati izjavu da u grupu neće slati poruke tipa "moj program je dobar, a tvoj ništa ne valja", "Fox je car, Clipper je prosjak, a Clarion slepac" i slične; 5. uverenje o ispunjenosti zdravstvenih uslova nije neophodno. Prijave slati na adresu snemcev. PS U prevodu: popunjena je grupa Business, pa je zbog interesovanja osnovana grupa Business2; zainteresovani, javite se na mail.
clipper.62 bulaja, -> #60, d.petrovic
│Ali, ako stavimo pre svakog "fread(bbla,Zbla,nbla)" jedno │"bla:=space(3)" onda ce svaka promenljiva zadrzati svoju vrednost. │Deder malo to pojasni, ako ti je sve toliko logicno ;) └─── Ako bla:=" " stoji ispred petlje, onda ce se pre petlje promenljiva bla inicijalno biti tipa Char. Sa prvim pozivom FRead (nHandle, @bla) bla vise nije tipa C vec P (oznacimo tako pointer), zbog vec obhasnjenog bug-a u FRead(). Kasnijim pozivanjem FDRead() u petlji bla ostaje isti pointer na bafer, znaci svako cX:=bla, AAdd (aX, bla) ce ukazivati na istu adresu tj. podatak. Ukoliko bla:=" " stoji u petlji, onda ce cX:=bla, AAdd (aX, bla) i sl. dodeliti pointer na istu memorijsku lokaciju, ali ce u sledecoj iteraciji petlje pozivom bla:=" " Clipper dodeliti bla tip Char, a FDread() pointer na novu memorijsku lokaciju. Ovo ponasanje FDRead() je ekstermno cudno i ni sam nisam siguran da je moje objasnjenje sasvim Ok. Ipak, ako sam pogodio mehanizam zbog koga se manifestuje bug, moguce je da ima jos jednu ozbiljniju posledicu. Ako poziv bla:=" " u petlji ne oslobodi prostor koji je prethodno alociran za bafer (jer bla je bio pointer na bafer za koji je ipak alociran prostor prethodnim pozivom bla:=" ") moze se desiti da se u svakoj iteraciju alocira dodatnih sizeof(bla) bajtova. Taj prostor ce se mozda osloboditi ako Clipper uradi clean-up na povratku iz procedure, ali svejedno se moze desiti da doce do popunjenja komplene memorije. Pokusacu sutra da ispitam da li zaista moze doci do ovoga.
clipper.63 bulaja,
**** new file **** R:\IBMPC\CLIPPER\*.* ---------------------- fixlib2 zip 15674* Koriscenje Clipper 5.01 biblioteka u CA-Clipper 5.2
clipper.64 d.petrovic, -> #62, bulaja
Ă> Ovo ponasanje FDRead() je ekstermno cudno i ni sam nisam siguran Ă> da je moje objasnjenje sasvim Ok. Ipak, ako sam pogodio mehanizam Ă> zbog koga se Sa ovim objasnjenjem je moguce da je problem bas taj...
clipper.65 nbatocanin, -> #32, oldtimer
> Ljudi prosvetlite me malo. Clipper ne koristim > profesionalno, imam 5.01a, Blinker i gomilu biblioteka što > je za moje hobističko bavljenje istim više nego dovoljno, > ali ipak.. Da li 5.2 donosi nešto novo i vredno osim > raznih formata indeksnih datoteka. Da, ima veoma zgodna poboljšanja u radu sa indeksima koja ćeš veoma brzo primetiti. Poboljšan je mrežni rad, ako ti to treba. Uostalom, to je poboljšana verzija 5.0 (tj., nije nešto potpuno novo), pa nema nekog naročitog razloga da ne pređeš na njega. > Da, pročitao sam Računare 93, ali me zanima mišljenje nekog ko je ovo > probao u praksi. Opa, počeli smo da se vređamo ;)) Pa, bre, zar mislite da ja ne isprobam u praksi ono što napišem !! :)
clipper.66 nbatocanin, -> #33, gari
> Imam VELIKI PROBLEM, mozda clipper 5.2 ne radi > bas kako treba ili ja uporno ne vidim gresku: Na žalost, Clipper 5.2 ima grešku (ili je bolje reći da radi drugačije od 5.01). Naime, kada u Clipper-u kažeš x := "ABC" y := x u memoriji se ne kreiraju dve kopije stringa "ABC", već pokazivači X i Y pokazuju na isti string. Kada se uradi x := "123" Clipper provaljuje da se ne sme izmeniti string "ABC", jer ga koristi Y (vodi se evidencija o tome koliko pokazivača se referiše na jednu vrednost), pa se kreira nova lokacija u memoriji. E, problem je u operacijama gde se menja vrednost ne nekom od regularnih naredbi, nego direktno string. Na primer, FRead. > for i:=1 to 10 > fread(infile,@ctmp,3) > aadd(aname,ctmp) > next Clipper ne provaljuje da ja ne želim da svaki element niza aName pokazuje istu vrednost u memoriji, tj. da funkcija FRead menja tu vrednost. Rešenje je, na primer, da se ispred NEXT ubaci cTmp := Space(3) i problem je rešen. Ovo je moralo naći mesto u dokumentaciji :(( Ipak, ne smatram da je neka prevelika greška. Što se tiče programa za BACKUP, 5.2 je otkrio još jednu grešku u kucanju koju je 5.01 ladno prelazio. Poslaću uskoro ispravljen program.
clipper.67 gari, -> #61, snemcev
Evo dobrovoljca za sledecu turu, ako moze ukljucenje... ...pozdrav, Gari.
clipper.68 gari, -> #66, nbatocanin
Evo da se ne mucite, ovako treba da izgleda novi deo bez greske (ja sam malo zesce promenio pocetni source, pa saljem samo ovako): ************************************** DBCreate ("TMPXXX", ; { {"f_chk", "C", 3, 0}, ; {"f_name", "C", 12, 0}, ; {"f_size", "C", 12, 0}, ; {"f_zip", "C", 12, 0}, ; {"f_perc", "C", 5, 0} } ) ************************************** pozdrav, Gari
clipper.69 ndragan, -> #8, rpausic
/ Sve je tačno, čak i gore ;-<<<<. Sa biserima ne bih opterećivao / ovu conf. Imaš li lična iskustva ili si samo pretpostavljao? Bio sam u toj koži nekoliko godina, a i sad srećem kod naših korisnika kućne duhove. Što se bisera tiče, samo napred. Kad nakupim dovoljno za monografiju, štampam i prodajem dok se ne obogatim, a ovde kačim zip edabi kolege mogle džabe da čitaju :)
clipper.70 ndragan, -> #9, rpausic
/ u protivničkom taboru. Tamo su mi knjigovođe ;-> Jedan kliperaš u Zrenjaninu prebegao u knjigovođe.
clipper.71 bulaja, -> #66, nbatocanin
│Clipper provaljuje da se ne sme izmeniti string "ABC", jer ga koristi │Y (vodi se evidencija o tome koliko pokazivaca se referise na jednu │vrednost), pa se kreira nova lokacija u memoriji. └─── Jesi li siguran da Clipper ovako radi? Tom tehnikom optimizacije bi se dobijali vrlo sumnjivi rezultati (tj. nikakvi ukoliko je program dobro pisan, bez dupliranih promenljivih), uz usporenje i dodatno komplikovanje Clipper memoru managera.
clipper.72 gaston, -> #54, nbulatovic
>│da li je neko uspeo da startuje sve demo programe iz biblioteke sa >│objektno orijentisanim funkcijama za clipper? >└─── >Ne, mislim da je Ok radio sam treci demo. Ako mislis na Object Clipper lib, od onog slovaka iz Piestany, ja sam bez problema isprobao sva tri demo programa (Demo1..3.prg) i to prevodeci ih uz pomoc LIB ili sa PLL. Rade super, samo sto pre startovanja Demo3 treba obrisati sve DBF datoteke ili u njih dodati jos neka polja. Sto se tice o:Clip (M.Fresee, CyberSoft), ima dva trivijalna primera (odemo1 i odemo2). Iskreno receno, davno ne videh (jos od TurboVision) tako dobar user interface. Sada se spremam da probam da ga ubacim u neku moju aplikaciju. Ako si zainteresovan da nesto radis pomocu te biblioteke, ili vec radis, posalji poruku. Odstampao sam celokupnu dokumentaciju (uz pomoc 2col-a) i prilicno sam zagrejan za upotrebu. Ako se jos neko javi, mogli bi da osnujemo grupu,samo da neko drugi bude direktor, ja ti nisam za to, previse citko se potpisujem ... Pozdrav Nesa
clipper.74 gari,
Narode, evo mene opet!!! Obratite paznju na sledeci problem: Uradio sam preko klase browse jednu funkciju koja radi sve zivo sa podacima (pregledi, unosi, brisanja, izmene, izvrsavanje funkcija pre i posle izmene, za vreme kretanja kroz datoteku,...) i imam "malecki" problem: - Kada se slog brise ili se izvrsi neka funkcija, pa se kontrola prikaza vrati u tbrowse ne postoji nista sto ce izvrsiti osvezavanje objekta (BAR GA JA NISAM NASAO). Jednostavno prikaze sadrzaj browse:nTop, a ne browse:rowPos kao sto je i red. Ukoliko se odmah posle toga uradi npr. DEL (brisanje sloga), on ce na poziciji browse:rowPos obrisati slog browse:nTop !?!?! Medjutim ako izvrsim browse:left, right ili sl. on odjedanput prikaze stvarnu vrednost browse:rowPos i dalji rad je normalan. To sam resio sa funkcijom ISPRETURI (sledi source),ali to je na silu. Prvo sam mislio da sam bio umoran ili da mi je popustila koncentr., ali ni do dana danasnjeg nisam uspeo da to uradim drugacije. Zato pitam sezamovce da li su imali slican slucaj i da li su ga resili na neki (bilo kakav) elegantniji nacin (citaj BRZI) ? ********************************************************************* Deo programa u kom MORAM pozvati Glupu funkciju: ********************************************************************* if "D" $ Zastita && Brisanje uopste dozvoljeno? if "D" $ Pitanje(9,.f.) && Pitanje ("Da li ste sigurni?") if ! empty(MaleProc[3]) temp2 := &(MaleProc[3]) && Zadata funkcija PRE brisanja endif if rec_lock() && Zakljucaj slog ko sto i treba delete && ...a onda ga obrisi if ! empty(MaleProc[2]) temp2 := &(MaleProc[2]) && Funkcija POSLE brisanja endif if ! empty(MaleProc[7]) temp2 := &(MaleProc[7]) && Funk. POSLE bilo kakvih izmena endif endif Ispreturi(temp_browse) && E OVO SADA MORAM DA POZOVEM ! Osvezi := .T. ^^^ ^^^^^ temp_browse:RefreshAll() && Ovo mozda ne treba endif endif ********************************************************************* Glupa funkcija: ********************************************************************* FUNCTION Ispreturi(objektic) clear typeahead if objektic:rightVisible == objektic:colCount keyboard chr(K_RIGHT) else if objektic:leftVisible - objektic:freeze == 1 keyboard chr(K_LEFT) else keyboard chr(K_LEFT) + chr(K_RIGHT) endif endif RETURN NIL ********************************************************************* Nije radjeno sa browse:rowPos, jer ja imam inverzno osvetljen CEO slog, a ne samo tekucu kolonu, pa umesto browse:left() i browse:right() koristim browse:panLeft() i browse:panRight()... ********************************************************************* Ko mi ovo resi elegantnije ima pivo od mene! && ili sta vec pije O:] Pozdrav svima, Gari.
clipper.76 nbatocanin, -> #45, gaston
> Elem, lep je taj Brief, i taj QEdit, ali mene nerviraju > pre svega dve stvari: > > 1) Zasto nemaju obelezavanje bloka teksta pomocu > Shift+strelice ???!!! Morao bi se pisati makro. Ovako odoka, nije neki problem. > 2) Turbo IDE je zgodan zato sto cuva redosled ucitavanja > Verujte, to je ono sto mi zaista treba kod Brief-a, cak > vise nego automatski pametni template i drugo. Stavi SET BFILE=.\state.rst i onda će BRIEF u svakom katalogu ostavljati STATE.RST sa poslednjim stanjem (učitane datoteke, pozicija kursora, ...) i samo B će te uvek vraćati tamo gde si stao. H
clipper.77 rpausic, -> #62, bulaja
>## bla vise nije tipa C vec P (oznacimo tako pointer), zbog vec >## obhasnjenog bug-a u FRead(). Ja ne bih rekao da promenljiva postaje tipa pointer, jer takvog ne verujem da ima u C5.2 (iako ga nisam video), nego mislim da je suština u tumačenju koje ti je dao nbatocanin, tj. tumačenje dodele vrednosti stringa: x:="ABC"; y:=x se sada tumači kao u 5.01 dodela vrednosti kod array. Znači, sada bi trebalo ili napraviti STRCOPY() (kao ACOPY) ili koristiti rešenje v.nesica sa FREADSTR(), što u oba slučaja zahteva pročešljavanje kompletnog koda svakog programera koji je radio sa 5.01. Ne znam zašto je to trebalo CA-u, jer ću se ja lično dobro razmisliti i/ili pripremiti za prelazak 5.01=>5.2 i to samo ako nađem dovoljno (bar 1001 :) ) razloga.
clipper.78 v.nesic, -> #74, gari
> To sam resio sa funkcijom ISPRETURI (sledi source),ali to je na silu. Da li si pogledao sample koji stiže uz clipper (browse sample ili dbu source, nisam siguran). Tamo sam video nešto slično mada je i to bilo pisano na mišiće :(
clipper.79 snemcev, -> #72, gaston
>> Ako mislis na Object Clipper lib, od onog slovaka iz Piestany, ja sam >> bez problema isprobao sva tri demo programa (Demo1..3.prg) i to >> prevodeci ih uz pomoc LIB ili sa PLL. Rade super, samo sto pre >> startovanja Demo3 treba obrisati sve DBF datoteke ili u njih dodati >> jos neka polja. Jeste da rade super, al' sporooooooooo.
clipper.80 rpausic, -> #74, gari
>## if rec_lock() && Zakljucaj slog ko sto i treba >## delete && ...a onda ga obrisi >## if ! empty(MaleProcŠ2Ć) Prvo mi pada na pamet da ubaciš SKIP posle DELETE? Ostalo ostaje. Ako nemaš, možda još dodaj posle toga WHILE !temp_browse:stabilize() ENDDO ili nešto slično.
clipper.81 d.petrovic, -> #74, gari
Ă> Deo programa u kom MORAM pozvati Glupu funkciju: E, bas me mrzi da ti sad sve nacrtam O;)), ovde je deo iz moje funkcije za tbrowse... obrati paznju na: bro:stabilize() while .t. ch:=0 while !bro:stable .and. Ch==0 ch:=ninkey() bro:stabilize() enddo if bro:stable .and. ch==0 ch:=ninkey(0) endif redic:=row() kolonica:=col() do case case ch==27 return(.t.) case ch==bla... pera() case ch==blabla djura() otherwise MoveKey(bro,ch) endcase enddo return
clipper.82 d.petrovic, -> #76, nbatocanin
Ă> Stavi SET BFILE=.Đstate.rst i onda će BRIEF u svakom katalogu Ă> ostavljati STATE.RST sa poslednjim stanjem (učitane datoteke, Ă> pozicija ja stavio i ne radi. Imam jedan state.rst i kad sam ga prebacio u radni dir učitao je njega, ali ne i datoteku. Inače pri izlasku ne snima stanje taj state.rst
clipper.83 bulaja,
**** new file **** R:\IBMPC\CLIPPER\*.* ---------------------- 52abus exe 147952 CA-Clipper 5.2b update sa US verzije 5.2a 52bus exe 160619 CA-Clipper 5.2b update sa US verzije 5.2 clip_52b zip 4805 Sta je sve promenjeno u CA-Clipper verziji 5.2b The problems resolved by CA-Clipper 5.2B include: 1. Fixed a Virtual Memory Integrity Failure in FOPEN() when the file name is numeric instead of a character string. 2. Fixed a Virtual Memory Integrity Failure when calling AADD() to increase the size of an array. 3. Fixed a Virtual Memory Integerity Failure that occured when an ACHOICE() user function deleted elements from the menu selection array. ACHOICE() now allows the user function to add, delete, or modify existing elements without causing any problems in ACHOICE(). 4. Fixed a Virtual Memory Integrity Failure in the Internal Runtime Event System. This was causing the DBFCDX driver to hang as well as various "unexplainable" errors. 5. Fixed a Virtual Memory Integrity Failure in the debugger when viewing multiple nested arrays. Tbrowse was producing a parameter error when viewing multiple nested arrays. In some instances this produced a Virtual Memory Integrity Failure. 6. Fixed a Virtual Memory Integrity Failure in the debugger's memory allocator. (STAR Issue# 737689) 7. Fixed INDEXKEY() memory corruption problem. INDEXKEY() would occasionally return a garbage string when called repeatedly. This sometimes caused a Virtual Memory Integrity Failure. 8. Fixed MEMOEDIT() buffer memory corruption problem. This occurred when MEMOEDIT() was called with a user defined function. This would result in various memory related errors including a Virtual Memory Integrity Failure. 9. Fixed slow disk I/O on replaces on large DBF's with non-unique indexes. The performance has been improved to a speed which is comparable to CA-Clipper 5.01a. 10. Fixed the releasing of all relations (in all workareas) when any child dbf was closed. Now closing a child database releases only the relations that it is involved with. 11. Fixed the DBFNDX Replaceable Database Driver so that it now properly seeks on a date value with SET DELETED ON. 12. Fixed DBCREATE() to properly return a NIL value as documented. 13. Fixed INDEXORD() so that it now returns a zero when no database is open rather than generating a runtime error. 14. Fixed some occurances of internal error 1210 (database and index are out of sync). 15. Fixed many occurances of internal error 415 (can not open external overlay file). 16. Fixed the Runtime Memory Manager so that it now returns an EG_MEM (5300 "Memory Low Warning") before generating a memory exhausted error. 17. Fixed Runtime failures that occured when CA-Clipper mistakenly tried to use non-existent EMS memory. 18. Fixed FREAD() so that it does not modify variables that it shouldn't have access to. 19. Fixed BROWSE() so that it no longer causes the repositioning of a file to BOF() when editing takes place in a new record. 20. Fixed the debugger so that it is no longer necessary to specify the default file extension (.PRG or .PPO) when opening a file. 21. Fixed the debugger so that it correctly searches the path (indicated by the PATH environment variable) when searching for a file to open. 22. Fixed the debugger so that it does not produce "Argument error +" when the F6 key is pressed to view databases. 23. Fixed DBU so it now correctly parses a file name that contained a drive letter and colon (:) but no backslash (\) (such as C:TEMP). 24. Fixed numerous bugs in the R.L. utility. 25. Fixed the compiler screen to include the missing /t and /z options in order to match the documented options. 26. Fixed the spelling of OrdDestory to OrdDestroy in STD.CH for the DELETE TAG command. 27. Fixed the "Guide to CA-Clipper" .NG file so that the Norton Guide engine may now be unloaded from memory.
clipper.84 gari, -> #78, v.nesic
> Da li si pogledao sample koji stize uz clipper (browse sample ili > dbu source, nisam siguran). Jesam, nema :((((((((((((( I dalje mi je problem neresen...
clipper.85 gari, -> #80, rpausic
>> if rec_lock() && Zakljucaj slog ko sto i treba >> delete && ...a onda ga obrisi >> if ! empty(MaleProcS2C) > Prvo mi pada na pamet da ubacis SKIP posle DELETE? Ostalo ostaje. > Ako nemas, mozda jos dodaj posle toga > WHILE !temp_browse:stabilize() > ENDDO > ili nesto slicno. 1. Posle skip ti ispomera redove (prema "gore"), a uz to se desava isto sto i pre... 2. Umesto while...enddo koristim po preporuci CA temp_browse:forceStable() i to radi sasvim korektno I dalje mi ostao problem neresen...
clipper.86 gari, -> #81, d.petrovic
>> Deo programa u kom MORAM pozvati Glupu funkciju: > E, bas me mrzi da ti sad sve nacrtam O;)), ovde je deo iz moje > funkcije za tbrowse... > obrati paznju na: To dalje nema veze sa mojim problemom. Inace mi funkcija za rad sa datotekom ima cca 1000 linija. Uzgred sta je ninkey() ??? I dalje je nereseno... (sada vec mozda i neresivo :( )
clipper.87 rpausic, -> #85, gari
>## 1. Posle skip ti ispomera redove (prema "gore"), a uz to >## se desava isto sto i pre... Suština onog što sam hteo da ti kažem je da ako ti je SET DELETED ON moraš ta se pomeriš sa obrisanog sloga, tačnije da pronađeš prvi koji nije obrisan. Kada se na njega pozicioniraš, posle refreshall() bi trebalo da je sve OK, opet u zavisnosti od toga kako si realizovao ostatak dbrowse-a. >## 2. Umesto while...enddo koristim po preporuci CA >## temp_browse:forceStable() i to radi sasvim korektno To je iz C5.2? Nemam ga. Radim još u C5.01a. Da si mi poslao više sorsa, probao bih da li može da se reši sa njim. Probaj ti, ako te ne mrzi, pa ako je bag novog Clipper-a, da se ne patim :)
clipper.88 gari,
Prilikom prelaska na Clipper 5.2b desilo mi se sledece: *************************************************** 118 if rec_lock() 119 if &t_uslov 120 temp := "1" 121 else 122 temp := "0" 123 endif 124 replace DOBAR with temp 125 unlock OVDE JE GRESKA ?! 126 endif *************************************************** I ponudi ono njegovo CANCEL/DEFAULT, a zna se da je bolje da izaberes CANCEL jer po Marfijevom zakonu svaki put nesto jos gore uradi ako stavis DEFAULT i sretno iznenadjenje (nema u NG-u): Error DBFNTX/1210 Corruption detected Called from LOCKERRHAN(0) Called from (b)INITHANDL$(0) Called from DBUNLOCK(0) Called from E_ST_ZAK(125) Called ... E ja bih molio lepo one koji BILO STA znaju sa ovim sta mogu/ne mogu da uradim <spremam zolju za CA ;> p.s. maybe .or. !maybe: Izgleda (probao "samo" 30-tak puta) da se to desava kada se koristi blinker i/ili kada se ubacuju podaci za debuger (bez /b) ???
clipper.89 gari, -> #87, rpausic
Ne desava se to meni zbog delete, nego zbog bilo cega sto radim van TBROWSE-a npr. pritiskom na F5 da ti pokaze stanje na ziro racunu i sl., pa kada se vracam nazad E ONDA on pocne svoju bajkuŰOw<ďb sorry za djubre, ONůLINE odgovaram da bih bio azuran... pozdrav
clipper.91 d.petrovic, -> #88, gari
Ă> 125 unlock OVDE JE GRESKA ?! Ne mora da znači. Greška može da bude i posle te linije, a on na samonjmuznaninačin prijavi da je tu. Šta radi sa unlock all ?
clipper.90 d.petrovic, -> #86, gari
Ă> To dalje nema veze sa mojim problemom. Inace mi Ă> funkcija za rad sa datotekom ima cca 1000 linija. Duga neka funkcija ;)). Ova je kratka i poziva puuuuuuno drugih gde se štošta čačka i sređuje. Ă> Uzgred sta je ninkey() ??? isto šti i inkey(), funkcija nbatocanina za scan tastature uz par mojih dodataka.
clipper.92 nbatocanin, -> #57, cnenad
> Imenjace, program izvrsi zamenu unesenih podataka preko > get u prazna polja novog sloga a kad to zavrsi treba da se > pojavi pitanje da li da se unosi novi artikl ili da se > izadje iz modula i vrati u glavni program. Ne bih da cepidlačim, ali uđi u dibager i korak po korak nađi naredbu gde se zaglavljuje. Tako ćeš nam uštedeti ogromno vreme - ti ćeš se najlakše snaći u svom kodu.
clipper.93 nbatocanin, -> #71, bulaja
>│ Clipper provaljuje da se ne sme izmeniti string "ABC", >│ jer ga koristi Y (vodi se evidencija o tome koliko >│ pokazivaca se referise na jednu vrednost), pa se kreira > nova lokacija u memoriji. └─── > Jesi li siguran da Clipper ovako radi? Sasvim. Za svaku promenljivu Clipper čuva malu strukturu sa raznim podacima. Ako je promenljiva kratka (datum, broj, ...) onda se vrednost čuva u toj strukturi, a ako je nešto kršnija čuva se u SVOS memoriji, a struktura čuva samo pokazivač na pravu vrednost. A := B se izvodi tako što se kopira _struktura_ od B i dodeljuje A-u. Vrednost se ne kopira. Uostalom, kako bi onda radilo ovo: x := Space(60000) a := Array(4000) AFill (a, x) > Tom tehnikom optimizacije bi se dobijali vrlo sumnjivi rezultati (tj. > nikakvi ukoliko je program dobro pisan, bez dupliranih promenljivih), > uz usporenje i dodatno komplikovanje Clipper memoru managera. Pazi, ovde se ne radi o optimizaciji dupliranih stringova: Clipper će za sledeće: x := "ABC" y := "ABC" kreirati dve kopije "ABC". Ovde se radi o sistemu operisanja velikim objektima koji je po meni jako dobar. Naime, Clipper _automatski_ kreira duplikate stringova, a korisnik o tome ne treba da vodi računa (osim ako ne koristi FRead ili neku funkciju koja _direktno_ menja string).
clipper.94 bulaja, -> #93, nbatocanin
│Ako je promenljiva kratka (datum, broj, ...) onda se vrednost cuva u toj │strukturi, a ako je nesto krsnija cuva se u SVOS memoriji, a struktura │cuva samo pokazivac na pravu vrednost. A := B se izvodi tako sto se │kopira _struktura_ od B i dodeljuje A-u. └─── Otprilike se i moje objasnjenje svodi na isto :) - Clipper interno koristi pointerske tipove (potpuno normalno), ali neda ih za javnost :). Svejedno se opet svodi na metod optimizacije koji mi se uopste ne svidja jer zavisi iskljucivo od internog algoritma i ja tu ne mogu nista da izmenim. Ne znam sta Clipper smatra kratkom promenljivom, ali je u primeru sa FRead() izvodio kerefeke sa stringom duzine tri (3) bajta. Bilo bi bolje da Clipper bukvalno shvati A := B i iskopira celu strukturu, nego da mi se nesto pravi pametan :) i kopira samo pointer. Petljanje sa pointerima nek prepusti programeru da odluci da li mu treba ili ne, ali zato nek CA pusti operacije sa pointerima i adresama u public.
clipper.95 bestbp,
Evo je 'zakrpa' za probleme sa MDX-om u Clipper-u 5.2 fixmdx.exe
clipper.96 bulaja,
Info sa Blinker BBS-a: SWPRUNCMD changes in Blinker version 2.1 The recently shipped Blinker version 2.1 has introduced a change in the default settings for the application swapper, SWPRUNCMD(), which at times may result in network disconnections or mouse problems when swapping. To remain compatible with the swapper defaults in Blinker version 2.01, I recommend adding the undocumented function SWPSAVCOM(logical false) prior to calling SWPRUNCMD(). A later maintenance release of Blinker will correct this and other problems should any arise. So far this appears to be an exceptionally clean release with no other known bugs.
clipper.97 dejanr, -> #96, bulaja
>> The recently shipped Blinker version 2.1 Što je ujedno i vest da postoji Blinker 2.1. Kakvi li su mu noviteti?
clipper.98 mickeyl, -> #88, gari
=> 125 unlock OVDE JE GRESKA ?! => 126 endif Probaj staviti unlock iza endif-a. Možda mu smeta unlock unutar if-a za zaključavaje sloga.
clipper.99 gari, -> #98, mickeyl
> Probaj staviti unlock iza endif-a. To je radilo korektno PRE patch-ovanja na Clipper 5.2b
clipper.100 tvucko,
Da li je neko čuo za SemaWare Editor verzija 1.0 ili 1.1 (firma koja pravi QEdit). Editor bi trebao da može koristiti datoteke dužune i do 32 MB(!!!). Informacija sa QEdit BBS-a (osim ovoga postoje na tom BBS još neke tehničke informacije o editoru), ali ne postoji info. gde se moze naći i po kojoj ceni. Sve one koji nesto Hviše zanju molim da mi se jave. Predpostavljam da će svi korisnici QEdita biti zainteresovani zato što je editor nova verzija popularnog QEdita 2.15. TVucko --->>>
clipper.101 dcolak, -> #100, tvucko
│ koristiti datoteke dužune i do 32 MB(!!!). Informacija │ sa QEdit BBS-a (osim ovoga postoje na tom BBS još neke │ tehničke informacije o editoru), ali ne postoji info. │ gde se moze naći i po kojoj ceni. Sve one koji nesto Jel ima još nešto na tom BBS-u, kao npr. neka novija verzija QEdit od 2.15? Mi imamo taj SW program road runner Qedit.. No, fali nam QConfig fajl.. Sledge DAMMIR!
clipper.102 nbatocanin, -> #94, bulaja
> Ne znam sta Clipper smatra kratkom promenljivom, > ali je u primeru sa FRead() izvodio kerefeke sa stringom > duzine tri (3) bajta. Dužina promenljive se određuje isključivo na osnovu tipa, tj. svaki string ide u SVOS, bez obzira na dužinu. > Bilo bi bolje da Clipper bukvalno shvati A := B i iskopira > celu strukturu, nego da mi se nesto pravi pametan :) i > kopira samo pointer. Ne bih se složio ;) Uostalom, to tako radi još od ko zna koje verzije Clipper-a, pa se niko nije još bunio. Razmisli kako bi radile funkcije kojima se kao argumenti prosleđuju memo polja: FOR i := 1 TO MLCount (cBigBuffer) ? MemoLine (cBigBuffer,,i) NEXT A ako ovde ne prosleđuješ po vrednosti, gubiš principijelnost (koja je, doduše, kod nizova malo poljuljana). Po meni je ovakav sistem odličan za ovakve primene. > Petljanje sa pointerima nek prepusti programeru da odluci da li mu > treba ili ne, ali zato nek CA pusti operacije sa pointerima i > adresama u public. Pazi, ovo je isto i u starijim verzijama, tako da CA tu nema ništa. Jedino nisam stigao da pogledam zašto je onaj primer radio ;) u 5.01.