rasgele erişimli dosya??

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

rasgele erişimli dosya??

Mesaj gönderen unicorn64 »

merhaba arkadaşlar.
belirttiğim dosyaya rasgele erişim(yazma /okuma) yapmak istiyorum.

dosyada belirttiğim konuma mümkünse string yada integer yazıp istediğim anda konum belirterek bu değerleri okumam lazım.
bunun için Tfilestream türünden bi değişken tanımlayıp işlemleri bununla yapmaya çalşıştım. yazma da çok da bi sorun yok aslında f.write(buffer,count); için buffer a yazılacak değeri ve count içinde yazılacak değerin uzunluğunu aldım.

ama okumada okunacak değerin boyutunu bilmiyorum yani farklı uzunluktaki değerleri yazıp okuyacağım. nasıl bi yol izlemem gerek??
ikut

Re: rasgele erişimli dosya??

Mesaj gönderen ikut »

unicorn64 yazdı:merhaba arkadaşlar.
belirttiğim dosyaya rasgele erişim(yazma /okuma) yapmak istiyorum.

dosyada belirttiğim konuma mümkünse string yada integer yazıp istediğim anda konum belirterek bu değerleri okumam lazım.
bunun için Tfilestream türünden bi değişken tanımlayıp işlemleri bununla yapmaya çalşıştım. yazma da çok da bi sorun yok aslında f.write(buffer,count); için buffer a yazılacak değeri ve count içinde yazılacak değerin uzunluğunu aldım.

ama okumada okunacak değerin boyutunu bilmiyorum yani farklı uzunluktaki değerleri yazıp okuyacağım. nasıl bi yol izlemem gerek??
a: record
kno : integer;
kadi : string;

var
fileee : file of a;

sonrada seek ile istediğin yere git;

belki bunları zaten biliyorsundur ama eski pascalcı olduğumdan nostaljisi var bunlaın bende.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Malum, bu işler biraz karışıktır. FreeMem prosedürünün help üzerinden örnek koduna baklılırsa

Kod: Tümünü seç

var

  F: file;
  Size: Integer;
  Buffer: PChar;
begin
  AssignFile(F, 'test.txt');
  Reset(F, 1);
  try
    Size := FileSize(F);
    GetMem(Buffer, Size);
    try
      BlockRead(F, Buffer^, Size);
      ProcessFile(Buffer, Size);
    finally
      FreeMem(Buffer);
    end;
  finally
    CloseFile(F);
  end;
end;
kodları görülecektir. BlockRead olayından sonra Buffer ile her bir byte teker teker kontrol edilebilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

@ikut un verdiği örnekte olduğu gibi okuyacağın her kaydın boyutu belli; integer + string. yani sen yazdığın bir kayıt integer + string kadardır ve okuyacağın her kayıtta o kadardır
DeveloperToolKit

..::|YeşilMavi|::..
Cevapla