Dosyadan okuma işleminde Blockread() komutu kullanıyorum ve okuma işlemi yapılan dosyada her satır nokta işareti ile tamamlanıyor. BlockRead() ile bu nokta işaretine kadar olan veriyi nasıl alabilirim.
Tüm satırlar farklı veriler içerdiğinden sabit bir değer bulunmamakta.
Dosyadan okuma İşlemi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 19
- Kayıt: 02 Nis 2007 12:57
Dosyadan okuma İşlemi
"Bismillah Her Hayrın Başıdır"
---------------------------------------
"Computer Engineer since 2008"
"I'm looking for a good job since 2010"
---------------------------------------
"Computer Engineer since 2008"
"I'm looking for a good job since 2010"
Re: Dosyadan okuma İşlemi
blockread adı üstünde dosyadan satır satır değilde belirli sayıda bir karakter blogunu okur.osmanlı_06 yazdı:Dosyadan okuma işleminde Blockread() komutu kullanıyorum ve okuma işlemi yapılan dosyada her satır nokta işareti ile tamamlanıyor. BlockRead() ile bu nokta işaretine kadar olan veriyi nasıl alabilirim.
Tüm satırlar farklı veriler içerdiğinden sabit bir değer bulunmamakta.
sizin verileriniz
şeklinde ise zaten readln ile okumalısınız. yok bunlar yanyana ise ve nokta rastgele yerde ise POS ile noktaları bulup okumalısınız. blockread ın bu konuda işe yaramak üzere tasarlandığını düşünmüyorum. kısaca readln vs daha kullanışlı gibi duruyorgdglj dlgdflg jdlf gjdlkfjg dkfjg.
fjsldk jfsldkjf sldkjf lsdjfl sjdfl jfljsdlfjsld kj.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
-
- Üye
- Mesajlar: 19
- Kayıt: 02 Nis 2007 12:57
Cevabınızdan dolayı teşekkürler. Fakat sizin dediğiniz yöntem dosya textfile olması durumunda geçerlidir.Ben .txt olmayan dosyalar için sormuştum.sizin verileriniz Alıntı:
gdglj dlgdflg jdlf gjdlkfjg dkfjg.
fjsldk jfsldkjf sldkjf lsdjfl sjdfl jfljsdlfjsld kj.
şeklinde ise zaten readln ile okumalısınız. yok bunlar yanyana ise ve nokta rastgele yerde ise POS ile noktaları bulup okumalısınız. blockread ın bu konuda işe yaramak üzere tasarlandığını düşünmüyorum. kısaca readln vs daha kullanışlı gibi duruyor
"Bismillah Her Hayrın Başıdır"
---------------------------------------
"Computer Engineer since 2008"
"I'm looking for a good job since 2010"
---------------------------------------
"Computer Engineer since 2008"
"I'm looking for a good job since 2010"
- Bir fonksiyon yazarsın.. File'den BockRead ile okunan her byte kontrol edilir. Nokta bulana kadar aldığı karakteri bir stream'e atar.
- Eğer aldığın bir string ifade grubu ise şöyle bir kurgu işini görecektir.
- Bu uygulama c:\test.txt isimli bir dosya varsaydım. Noktalardan ayırarak satırlara böler. Tabi arada satır karakteri varsa bu sayı artar bu nedenle #13#10 içerenleri ayrıca kontrol etmen filtrelemen gerekir.
- Ayraç karakterini değişken yaptım ki ilerde nokta yerine başka karakter de kullanmak isteyebilirsin.
- Eğer aldığın bir string ifade grubu ise şöyle bir kurgu işini görecektir.
Kod: Tümünü seç
Function AyracaKadarOku( Var Dosya:File; Konum:dWord; Ayrac:Char ): String;
Var
Okunan : Char;
begin
ZeroMemory(@Result, SizeOf(Result));
If Konum > 0 then Seek(Dosya, Konum); // konumu 0 geçerseniz olduğu yerden başlar.
Okunan := #0;
While (NOT EOF(Dosya)) AND (Okunan <> Ayrac) do begin
BlockRead(Dosya, Okunan, SizeOf(Okunan));
If Okunan <> Ayrac then Result := result + Okunan;
end;
end;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var
Dosya : File;
Liste : TStringList;
begin
Liste := TStringList.Create;
AssignFile(Dosya, 'c:\test.txt');
Reset( Dosya, 1 );
FileMode := faReadOnly;
While NOT EOF(Dosya) do begin
Liste.Add( AyracaKadarOku(Dosya, 0, '.') );
end;
ShowMessage(Liste.Text);
Liste.Free;
CloseFile( Dosya );
end;
- Ayraç karakterini değişken yaptım ki ilerde nokta yerine başka karakter de kullanmak isteyebilirsin.