Dat Dosyada record'lar üzerinde Gezinmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Dat Dosyada record'lar üzerinde Gezinmek
Arkadaşlar bu konuda bana yardımcı olursanız cok sevinirim...
Yapmak istediğim bir dat dosyasına kaydedilen 'Memurun Adı Soyadı', 'ilaç Tutarı', 'Muafiyet' gibi girilen bilgiler var bu bilgilerde 'Ad Soyad' kısmı 30 karakter, 'ilaç Tutarı' 15 karakter, 'Muafiyet' 15 karakter girilmeli ve bu bilgiler bir satırda yan yana bir Dat dosyasına kaydedilmeli ve kayıtlar arasında gezinilerek istenilen kayıt üzerinde değişiklik yapılabilmeli....
Sorunum dat dosyasına nasıl bir algoritma ile kaydetmeliyimki kayıtlar üzerinde gezinerek istenilen kayıt üzerinde değişiklik yapabileyim...
Not : Dat dosyasına bu şekilde kaydedilmesinin nedeni başka bir program tarafında bu dataların kullanılabilmesi içindir...
Yardımcı olmanız dileği ile...
Saygılar....
Yapmak istediğim bir dat dosyasına kaydedilen 'Memurun Adı Soyadı', 'ilaç Tutarı', 'Muafiyet' gibi girilen bilgiler var bu bilgilerde 'Ad Soyad' kısmı 30 karakter, 'ilaç Tutarı' 15 karakter, 'Muafiyet' 15 karakter girilmeli ve bu bilgiler bir satırda yan yana bir Dat dosyasına kaydedilmeli ve kayıtlar arasında gezinilerek istenilen kayıt üzerinde değişiklik yapılabilmeli....
Sorunum dat dosyasına nasıl bir algoritma ile kaydetmeliyimki kayıtlar üzerinde gezinerek istenilen kayıt üzerinde değişiklik yapabileyim...
Not : Dat dosyasına bu şekilde kaydedilmesinin nedeni başka bir program tarafında bu dataların kullanılabilmesi içindir...
Yardımcı olmanız dileği ile...
Saygılar....
Bizler birer atoma benziyoruz ve gün geldiğinde bir ülkeyi dahi yok edebilecek güce sahibiz. Ama gücümüz aklımızın esiri! Bu yüzden Sıyırdınız gene 
http://www.MindoMs.com

http://www.MindoMs.com
Kardeş güzel soluyosun hoş soluyosunda daha once ben hiç uğraşmadığım için biraz daha açıklayıcı olursan sevinirim....
Bide Hüsnücüm örnek kod varsa elinde gonderirisen daha iyi olur bi inceleyelim...
Saygılar...
Bide Hüsnücüm örnek kod varsa elinde gonderirisen daha iyi olur bi inceleyelim...
Saygılar...
Bizler birer atoma benziyoruz ve gün geldiğinde bir ülkeyi dahi yok edebilecek güce sahibiz. Ama gücümüz aklımızın esiri! Bu yüzden Sıyırdınız gene 
http://www.MindoMs.com

http://www.MindoMs.com
kardeş :
Kod luk bişi yok. Delphi 7 yi kurdugunda beraberinde Datapump adında bir program geliyor.
bu programı çalıştır. dat dosyalarının oldugu yeri göster convert edeceğin tipi belirle nereye convert edeceğini belirle.
bu şekilde dönüştürürsün..
bu işlemleri yaptıkdan sonra geç delphiye ve yeni verilerinle çalışmaya başla...
işlem sırası yalnış olabilir. ama daha önce bir ziraat odası programı vardı dos tabanlı ve içerisindeki verileri almak gerekiyordu. o verileri bu şekilde delphinin içerisine aktarmıştım...
Kolay Gelsinnn
Kod luk bişi yok. Delphi 7 yi kurdugunda beraberinde Datapump adında bir program geliyor.
bu programı çalıştır. dat dosyalarının oldugu yeri göster convert edeceğin tipi belirle nereye convert edeceğini belirle.
bu şekilde dönüştürürsün..
bu işlemleri yaptıkdan sonra geç delphiye ve yeni verilerinle çalışmaya başla...
işlem sırası yalnış olabilir. ama daha önce bir ziraat odası programı vardı dos tabanlı ve içerisindeki verileri almak gerekiyordu. o verileri bu şekilde delphinin içerisine aktarmıştım...
Kolay Gelsinnn
Abi yine güzel söleişin hoş solemişin ama,
bu programcık eczanelere verilecek ve eczaneler memurların bilgilerini girdikten sonra bu dat dosyasını bize getirecekler bizim burda başka bir programla o datalar kullanılacak ve memurun ilaç kesintileri yapılacak %20 sini kendisi ödeyecek %80 'inide devlet ödeyecek kısacası bunu ben kullanmıycam son kullanıcı için .....
Umarım anlatabildim...
bu programcık eczanelere verilecek ve eczaneler memurların bilgilerini girdikten sonra bu dat dosyasını bize getirecekler bizim burda başka bir programla o datalar kullanılacak ve memurun ilaç kesintileri yapılacak %20 sini kendisi ödeyecek %80 'inide devlet ödeyecek kısacası bunu ben kullanmıycam son kullanıcı için .....
Umarım anlatabildim...

Bizler birer atoma benziyoruz ve gün geldiğinde bir ülkeyi dahi yok edebilecek güce sahibiz. Ama gücümüz aklımızın esiri! Bu yüzden Sıyırdınız gene 
http://www.MindoMs.com

http://www.MindoMs.com
abi tamam işte sana getirdikleri dat dosyasını ; kendi programına aktarcan..
sanırım o aktarma işlemi içinde bir programcık yazılabilir fakat benim aklıma şuanda bişi gelmiyor.
direk dat dosyasını delphiden okuman lazım onu okudukdan sonra programın içinde sen başka bir table a mesela paradox veya interbase e aktarabilirsin ama nasıl yapacağın konusunda herhangi bir fikrim yok. elinde dat dosyalarından var ise yolla bakiyim...
Kolay Gelsin
sanırım o aktarma işlemi içinde bir programcık yazılabilir fakat benim aklıma şuanda bişi gelmiyor.
direk dat dosyasını delphiden okuman lazım onu okudukdan sonra programın içinde sen başka bir table a mesela paradox veya interbase e aktarabilirsin ama nasıl yapacağın konusunda herhangi bir fikrim yok. elinde dat dosyalarından var ise yolla bakiyim...
Kolay Gelsin
S.A.
Anladığım Kadarıyla eski dos mantığıyla bir veri dosyasına ulaşmaya çalışıyorsun
bunun için Record ları kullanabilirsin. şeklinde bir yapı oluştur.
daha sonra var kısmında dosya değişkenlerini oluşturmalısın
Programda dosya değişkeni ile veri dosyan arasında bağlantı kuracaksın.
dosyadan okumak için
dosyaya yazmak için
kayıtlar arasında gezinmek için
kolay gelsin.
--------------------------------
geri gitmek için
Anladığım Kadarıyla eski dos mantığıyla bir veri dosyasına ulaşmaya çalışıyorsun
bunun için Record ları kullanabilirsin.
Kod: Tümünü seç
Type
Memur_Type=record
Ad Soyad:string[30];
Tutar:string[15];
Muafiyet:string[15];
end;
daha sonra var kısmında dosya değişkenlerini oluşturmalısın
Kod: Tümünü seç
var
FMemur:file of Memur_Type;
Memur:Memur_type;
Kod: Tümünü seç
Assignfile(Fmemur,'C:\memurlar.dat');
//reset açar rewrite yeniden oluşturur
{$i-}
reset(f);
if ioresult<>0 then rewrite(f);
{$i+}
//$i- ve $i+ try except gibi düşünebilirsin
Kod: Tümünü seç
readln(fmemur,memur);
//readln kaydı okuyup bir sonraki kaydı seçer
//read sadece kaydı okur
Kod: Tümünü seç
writeln(fmemur,memur);
//writeln yazar ve yeni kayıt ekler
//write sadece yazar
//yanlış hatırlamıyorsam birde append olması lazım. Append dosyanın sonuna kayıt ekler
Kod: Tümünü seç
seek(fmemur,5);
//5 kayıt ileri gider
//aradığın kaydı bulmak için teker teker kayıtları okuman read ile eğer aradığın kayıt o değilse seek ile bir ileri gitmen böyle bir döngü kurman gerekiyor. döngü için
while fmemur.eof do
//kullanabilirsin.
--------------------------------
geri gitmek için
Kod: Tümünü seç
seek(fmemur,-5)
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Aslangeri yardımın için teşekkürler ama daha önce Record'ları kullanmıştım Record türkçe karrakter sorunu çıkartıyo.
Ben TextFile kullandığımda türkçe karakter sorunu ortadan kalktı ama bu sefer istediğim olayı yapamadım... Sorunumu anlatabilmişim ama daha farklı bir çözüm TextFile ile nasıl yapabilirim bununla ilgili olarak yardımcı olursan cok sevinirim... hatta örnek olarak aşağıya dat dosyasının oluşturulması gereken şeklini veriyorum....
Gibi bi örnek verebilriz... İsim soyisim toplam 30 karakter ve diğer tutarlar 15 er karakter... Yardımcı olursanız cok sevinirim...
İlginize teşekkürler..
Saygılar...
Ben TextFile kullandığımda türkçe karakter sorunu ortadan kalktı ama bu sefer istediğim olayı yapamadım... Sorunumu anlatabilmişim ama daha farklı bir çözüm TextFile ile nasıl yapabilirim bununla ilgili olarak yardımcı olursan cok sevinirim... hatta örnek olarak aşağıya dat dosyasının oluşturulması gereken şeklini veriyorum....
Kod: Tümünü seç
Erhan Yaşar 35000000 45000000 Hüsnü Sepetçi 25000000 15000000
İlginize teşekkürler..
Saygılar...
Bizler birer atoma benziyoruz ve gün geldiğinde bir ülkeyi dahi yok edebilecek güce sahibiz. Ama gücümüz aklımızın esiri! Bu yüzden Sıyırdınız gene 
http://www.MindoMs.com

http://www.MindoMs.com
S.A.
Şu makaleyi bi incele
viewtopic.php?t=105&highlight=clientdataset
benim aklıma gelen dosyadan tün kayıtları okuman kendi tablona yazman işin bitince dat dosyasını yeniden oluşturman.
Kolay Gelsin
Şu makaleyi bi incele
viewtopic.php?t=105&highlight=clientdataset
benim aklıma gelen dosyadan tün kayıtları okuman kendi tablona yazman işin bitince dat dosyasını yeniden oluşturman.
Kolay Gelsin
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Senin record tipi ile o dosyaları inceleyememen tablo aralıklarının kaç harflik tanımlandığını bilmemenden kaynaklanıyor. Böylece ulaşmaya çalıştığında karışık kodlarla vs.. ekrana geliyor.
Şimdi sen yukarıdaki gibi bir dat oluşturduğunda tekrar ona erişebilmen için bu tablo aralığı olan 25 ve 20'yi bilmen gerekir. Hatta tel kısmı da word ile mi integer ile mi tanımlandığını da yoksa
gibi kafana göre tanımlayıp aynı dosyaya erişirsen bozuk olarak o dosyaları ekrana getirebilirsin. Sadece string dersen dahi, delphi 255 karakter katarı şeklinde algılar.
Sonuç olarak, bunu kaydeden programın kaynakları varsa bu tablo aralıklarını öğren.Yoksa da zor, uğraşman gerekir.
Kullandığın modern veritabanı değil ki bu aralıklar dosya içinde kayıtlı tutulsun.
Kod: Tümünü seç
Type
Kayit=Record
ad:string[25];
soyad:string[20];
tel:integer;
end;
Kod: Tümünü seç
Type
Kayit:record
ad:string[255];
soyad:string[30];
tel:byte;
end;
Sonuç olarak, bunu kaydeden programın kaynakları varsa bu tablo aralıklarını öğren.Yoksa da zor, uğraşman gerekir.
Kullandığın modern veritabanı değil ki bu aralıklar dosya içinde kayıtlı tutulsun.
Tekrar slm arkadaşlar ilginize gerçekten teşekkürler...
Yanlız ben sorunumu hala acık olarak aktaramadım galiba...
Ben dat dosyasını alıp işlemicem sadece yukarıda da verdiim örnek gibi bi dat dosyası oluşturmam gerekiyor. Ama bunu RECORD'larla yaptığım zaman dosyada saçma sapan karakterler çıkıyo. Boyle birşeyin olmaması gerekli bunuda TextFile'lar ile o sorunu aşmış oluyoruz sadece sorunumuz yan yana kaydedilen bilgilerin ne mantıkla kaydedilmesi ve nasıl bir mantıkla okunması...Umarım sorunumu açıklayabilmişimdir. Bu arada aslageri arkadaşımın önerdiği makaleyi okudum orda anlatılan ClienDataset componentide *.cds uzantılı bir dosya yaratıyor istediğin bi yerde. Ama buda bneim sorunumu cozucek bişey diil...Aslangeri arkadaşıma ilgisinden dolayı teşekkür ederim...
Bana TextFile'lar ile tecrübesi olan arkadaşlar yardımcı olursa cok sevinirim..Eski dos mantığında kayıt ve düzenleme oluşturmam gerekiyor..
Kolay Gelsin...
Saygılar.
Yanlız ben sorunumu hala acık olarak aktaramadım galiba...

Ben dat dosyasını alıp işlemicem sadece yukarıda da verdiim örnek gibi bi dat dosyası oluşturmam gerekiyor. Ama bunu RECORD'larla yaptığım zaman dosyada saçma sapan karakterler çıkıyo. Boyle birşeyin olmaması gerekli bunuda TextFile'lar ile o sorunu aşmış oluyoruz sadece sorunumuz yan yana kaydedilen bilgilerin ne mantıkla kaydedilmesi ve nasıl bir mantıkla okunması...Umarım sorunumu açıklayabilmişimdir. Bu arada aslageri arkadaşımın önerdiği makaleyi okudum orda anlatılan ClienDataset componentide *.cds uzantılı bir dosya yaratıyor istediğin bi yerde. Ama buda bneim sorunumu cozucek bişey diil...Aslangeri arkadaşıma ilgisinden dolayı teşekkür ederim...
Bana TextFile'lar ile tecrübesi olan arkadaşlar yardımcı olursa cok sevinirim..Eski dos mantığında kayıt ve düzenleme oluşturmam gerekiyor..
Kolay Gelsin...

Saygılar.
Bizler birer atoma benziyoruz ve gün geldiğinde bir ülkeyi dahi yok edebilecek güce sahibiz. Ama gücümüz aklımızın esiri! Bu yüzden Sıyırdınız gene 
http://www.MindoMs.com

http://www.MindoMs.com
bi değikni create ettikten sonra tamamını boşluk veya null ile doldurman lazım. yoksahafızadaki alandaki byteler değişkenine kalır..
Kod: Tümünü seç
FillChar(myKayit.ad, SizeOf(myKayit.ad), ' ');
merhaba, istediğin karakter uzunluğunda değişkenlerini tanımla.
verileri gir, mesela ise ve girilen isim 10 karakterlik ise geri kalan 5 karakteri bişeyle doldur. öreğin * ile. alnı işlemleri diğer değişkenler içinde uygula ve hepsini tek satıra yaz.
yani
dosyadan okurkende aynı şekilde readln ile okuyosun ancak
readln(dosyadegiskeni, gelentxt);
dediğinde gelentxt değişkeninin içinde
lazio**********laz************123456789****** gibi bir bilgi olur.
sen burda
gibi ayıklayacaksın. daha bitmedi. birde ad degiskenindeki lazio********** stringinden * karakterlerini ayıklayacaksın
kolaygelsin
verileri gir, mesela
Kod: Tümünü seç
ad : string[15]
yani
Kod: Tümünü seç
ad : string[15];
soy : string[15];
tel : string[20];
begin
ad := 'lazio**********';
soy := 'laz************';
tel := '123456789******';
// assign.... dosyayı aç falan
//yazarken de
writeln(dosyadegiskeni, ad, soy, tel); // gibi
readln(dosyadegiskeni, gelentxt);
dediğinde gelentxt değişkeninin içinde
lazio**********laz************123456789****** gibi bir bilgi olur.
sen burda
Kod: Tümünü seç
ad := copy(gelentxt,1,15);
soy := copy(gelentxt,16,15);
tel := copy(gelentxt,30,20);
kolaygelsin
- mustafaozdemir
- Üye
- Mesajlar: 137
- Kayıt: 19 Haz 2004 01:56
soruyu anladığım kadarıyla cevaplayayım. text dosyalarda değişikliğin yapacağın zaman yedek bir tane daha text dosya oluşturman gerekiyor. değişiklik yapacağın kaydı bulup bu kayıttan önceki kayıtları ve değişiklik yaptığın kayıtı ve bundan sonraki kayıtları yedek dosyasına atıp daha sonra ana dosyayı silip yedek dosyasının adını ana dosyanın ismi ile değiştirmen gerekiyor. ama record dosyasında kayıtlar düzgün gözükmüyor demişsin. record tipinde kayıtlar bildiğim kadarıyla binary tipinde kayıt edildiği için düzgün gözükmez. record tiplerle okuma,düzeltme falan yaacaksan aslangeri nin verdiği örnekler üzerinde inceleme yap. record tipli dosyalar text dosyalardan daha hızlı çalışır.