delphi4arab منتديات دلفي للعرب
FileSeek & FileWrite - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : FileSeek & FileWrite (/showthread.php?tid=2319)



FileSeek & FileWrite - SOFT-DZ - 17-08-2010

سلام اخواني
اتمنى لو تشروحي لي هاتين الدالتين وجميع برامتر لهما ، لاني عندي مشكلة معهما
وشكرا


FileSeek & FileWrite - kachwahed - 17-08-2010

السلام عليكم
الشرح متوفر في الـ Help
اطرح مشكلتك بالضبط أين هي؟



FileSeek & FileWrite - hanipino - 17-08-2010

السلام عليكم

يوجد العدد من الطرق للقيام بنفس مهمة الدالتين FileSeek & FileWrite

راجع هذا


FileSeek & FileWrite - SOFT-DZ - 17-08-2010

مشكورين اخواني على التفاعل على كل راح اطرح المشكلة
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);

begin
 
if OpenDialog1.Execute then
 FileHandle 
:= FileOpen(OpenDialog1.FileName,fmOpenReadWrite);
 
Buffer := 0;
 for 
i:= 10 to 20 do
 
begin
 Count 
:= FileSeek(FileHandle, i, 0);
 
result := FileWrite(FileHandle,Buffer,Count);
 
end;
end; 
على كل المتغيرات معرفة من قبل وكلها من نوع integer
وكما ترون الغاية تصفير مناطق من الاوفيست 10 الى 20 - in dec -
لاكن النتيجة تظهر هكدا
PHP كود :
offset stare (0) 43 57 53 08 18 24 00 00 78 DA (offset10) 00 00 00 00 00 00 
00 00 00 00 00
(offset20) 00 00 00 FF FF FF FF 00 00 00 00
00 00 00 00 00 00 00 00 18 8A 88 10 7A 91 26 D2 
الكود تعدى المطلوب منه ، ما المشكلة


FileSeek & FileWrite - kachwahed - 17-08-2010

إقتباس :الكود تعدى المطلوب منه
الكود لم يتعد المطلوب، الخلل هنا:
إقتباس :على كل المتغيرات معرفة من قبل وكلها من نوع integer
Integer يزن 4 bytes
جرب تغيير نوع Buffer إلى Byte أو Char (إذا استخدمت Char اكتب 0#)
ملاحظة: المتغير result لا محل له من الإعراب.
أيضا حيز begin/end بعد OpenDialog1.Execute ولا تنسى FileClose في النهاية.
أيضا يفضل استخدام TStreamFile
بالتوفيق.



FileSeek & FileWrite - hanipino - 18-08-2010

نعم كما قال اخى kachwahed الكود الذى طرحته ملىء بالاخطاء ...

المهم هده طريقة لتغير اول 10 بايت لملف ما . عن طريق استعمال الكلاس TMemoryStream

PHP كود :
const
  
My10Byte: array[1..10] of Byte = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
var
  
MS: TMemoryStream;
begin
  MS 
:= TMemoryStream.Create;
  try
    if 
dlgOpen1.Execute then
    begin
      MS
.LoadFromFile(dlgOpen1.FileName);
      
MS.Seek(0, 0);
      
MS.Write(My10Byte, SizeOf(My10Byte));
      
MS.SaveToFile(dlgOpen1.FileName + '.Changed');
    
end;
  finally
    
MS.Free;
  
end;
end; 

اطلع على الهالب لكى تفهم اكثر .


FileSeek & FileWrite - SOFT-DZ - 19-08-2010

امممم ساجرب ، مشكورين اخواني ما قصرتوا اما على الاخطاء فهدا اول كود لي هههههه