1

Konu: proje içerisinde formlarda kullanılan programlar

örneğin olgunlaşmış bir projede bütün programlar içerisindeki bir komutu (bir dizini) değiştireceğim.
Halen her formu açıyor, Find/Replace metodu ile değiştirip kapıyoruz.

Daha pratik bir öneri var mı ?
sevgiler

VFP9 SP2

2

Re: proje içerisinde formlarda kullanılan programlar

VFP9'da menude tools\code references var.

Not: Dizini girip elle degistiriyorsan degisken kullanmamissin demektir. Degisken kullan tek bir yerde degistir (degisken derken bir dosyadaki #define da dahil). Ornegin:

* sabitler.h
#define REPORTPATH addbs(oApp.ApplicationPath)+'raporlar'

Ya da:
oApp.RaporDizini

oApp senin main.prg'de yaratilan custom bir class ve public (VFP'de kullanman gereken tek public):

* Main.prg
* ....
public oApp
oApp = createobject("MyApp")
* ...

define class myApp as Custom
RaporDizini = ''
* ...
enddefine

3

Re: proje içerisinde formlarda kullanılan programlar

Aslında ilk açılan forma PUBLIC bir değişken tanımlayıp tanımlanan değişkende klasör ismini tutabilirsin

PUBLIC YOL
YOL="C:\PRGKLS\DATA\"

kullanırken

TBL=YOL+"PERSONEL"
USE &TBL
ile kullanabilirsin.

Böylece değiştirmen gerektiğinde tek bir noktada değiştirmen yeterli olur.

Ayrıca bu yolu bir tabloda tutup proğramı tekrar Compile etmene gerek kalmadan çalışırkende değiştirebilirsin.

4

Re: proje içerisinde formlarda kullanılan programlar

Mikail,
Hosgeldin:) Benim public'e allerjim var. Bence VFP'de kullanilacak tek public oApp custom objesi.

tbl = yol+'personel'
Use &tbl

allerjim olan kodlardan bir digeri.

tbl = addbs(m.yol) + 'personel'
use (m.tbl)

Umarim gelir gelmez negatif bir mesaj aliyormus gibi hissetmezsin, oyle bir niyetim yok. Sadece diger kullanimlarla olabileck sorunlardan dersini almis birinin onerisi olarak bak.
Not: Ben de senin gibi foxbase,foxpro ... 'dan geldim:)
Her public ve & gordugumde mudahale etmeme forumdakiler alisti:) Onlarin hosgorusune siginiyorum.

Tekrar hosgeldin.

5 Son düzenleyen, mmmiko (31.01.2008 14:29:14)

Re: proje içerisinde formlarda kullanılan programlar

Hoş bulduk Çetin Bey
Alınacak bişey yok ancak alerjinin sebebini, bu kodların sakıncalarının ne olduğunu da belirtirseniz daha faydalı olur.

6 Son düzenleyen, cetinbasoz (31.01.2008 15:17:37)

Re: proje içerisinde formlarda kullanılan programlar

Defalarca yazdigimdan gene uzun uzun yazmayayim. Kisaca:

Public tehlikeli. VFP'de event driven bir ortam var. Yukaridan asagi akip giden prosedural kod olmadigindan public degiskeni kimin ne zaman degistirdigini bilemezsin.

Hic public kulanmamak en iyisi ama en azindan sadece oApp'i public yaparak alani sinirliyorsun. Ne yaptigini iyi bilen birisi pekala N tane publicle de calisabilir. Uyari yeni baslayanlar icin. Sonra ona bagli hatalari aranip durmasinlar diye.

use &tbl gibi kodlar cok basit kirilabilir. Ornegin:

yol = 'c:\Benim dosyalar\Data\'
tbl = m.yol + 'personel'
use &tbl

ile Foxpro:

use c:\Benim Dosyalar\Data\personel

seklinde kod algilar ve hataya neden olur. Bu daha dogru olurdu:

use "&tbl"

Hic olmazsa acildiginda:

use "c:\Benim Dosyalar\Data\personel"

olacagindan calisir.

m. Kullanmak foxpro'da zorlanmiyor ama kullanmayinca:
1) Field degiskenler oncelik aldigindan dusundugunden baska bir sey kullaniyor olabilirsin.
2) VFP7 ve sonrasinda eger bir tablo gecerli workarea'da aciksa ve loop varsa performans kotu etkileniyor.

2'yi farketmek zor. 1 ana neden ve oldugunda yeni baslayanlarin yakalamakta cok zorlanacagi bir hata (farkedilmesi bile dert).

7

Re: proje içerisinde formlarda kullanılan programlar

Çetin Bey aslında Public değişkeni ben dataların bulunduğu klasör için kullaanıyorum ancak tabloları hiçbir zaman use ile açmıyorum
SQL SELECT UPDATE VB. komutları kullandığım için Sql cümleciği oluşturmak için kullanıyorum bu durumda  & ' ta gerek kalmıyor.

SqlStr="select * from "+YOL+"personel"
gibi

8

Re: proje içerisinde formlarda kullanılan programlar

ben set filter komutunda & kullanmak taraftarıyım.
şöyle ki:

set filter to (xfilt)

xfilt değişkeninin bulunmadığı procedurelerde hata veriyor.
private data session bir formdaysanız onun yerine şu da olabilir:

set filt to (_screen.activeform.my_filt)

bilmiyorum vfp'de de hala öyle mi. foxpro dos ta & kullanılan satırları foxpro tamamen karakter olarak saklıyordu .EXE içinde.

mesela set talk &xtalk
diye bir satır olsun. o satırı tamamen saklıyordu.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

9

Re: proje içerisinde formlarda kullanılan programlar

cetinbasoz yazdı:

2) VFP7 ve sonrasinda eger bir tablo gecerli workarea'da aciksa ve loop varsa performans kotu etkileniyor.

2'yi farketmek zor. 1 ana neden ve oldugunda yeni baslayanlarin yakalamakta cok zorlanacagi bir hata (farkedilmesi bile dert).


hocam loop daki kasdiniz scan all,do while, for next mi?
performs kötüdeki kastiniz hız mı?

birde bir yazınızda okumuştum set filter karşıtıydınız, set filter hız perfonsını kötü yönde etkiler mi?

10

Re: proje içerisinde formlarda kullanılan programlar

scan...endscan, for ... endfor, do while ... enddo hangisi olursa olsun bir isin yapilacagi dongularin tumu. Evet hizi kastettim.  Genelde fark farkedilmiyor ama dakikalara ulastigini da gordum.

Set Filter'in hiz problemini VFP9'da halletmisler. Gene de kullanmiyorum. Kullanmak icin bir nedenim oldugunda dusunurum:)

11

Re: proje içerisinde formlarda kullanılan programlar

metin Bey ben VFP 7.0 Kullanıyorum
& kullanılan satır compile sonrası runtime esnasında değiştirilebiliyor.

Şöyleki;
Başlanğıçta ANAMAKINA değişkeni C:\PROJE iken clint makinalarda bir dbf dosyasından okuyacak ve mesala \\SUNUCU\C\PROJE şeklinde (dbf dosyasını update edecek kodlar mevcut) değiştirmek mümkün. Böylece projede ANAMAKINA değişkeni ile oluşturduğum path ler artık \\SUNUCU\C\PROJE  şeklinde çalışmaya başlıyor.