delphi4arab منتديات دلفي للعرب
Write EOF, Read EOF مع مثال بسيط - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14)
+--- الموضوع : Write EOF, Read EOF مع مثال بسيط (/showthread.php?tid=4482)



Write EOF, Read EOF مع مثال بسيط - onexite - 25-08-2012

السلام عليكم
هذه طريقة للكتابة في نهاية الملف eof = end of file
باللون الاصفر الفواصل والاحمر النص ( معلوماتنا )
[صورة: 20120825103443.png]
للكتابة
PHP كود :
program Project1;

{
$APPTYPE CONSOLE}

uses
  uEof
;

var 
txt:string;
begin
Writeln
('your text here : ');
 
Read(txt);
 
WriteEof('Project2.exe', txt, 'BEGIN', 'END');
end. 

للقرائة
PHP كود :
program stub;

uses
  Dialogs
,
  
uEof;

begin
ShowMessage
(ReadEof('BEGIN', 'END'));
end. 
الوحدة المستخدمة

PHP كود :
{ uEOF

  Author
: Xash
  Description
: Read/Write in EOF

}


unit uEof;

interface

uses
  Windows
;

function 
ReadFile(FileName: String): AnsiString;
function 
ReadEof( Delimit1, Delimit2 :String) :String;
function 
WriteEof(FileName, Res, Delimit1, Delimit2 :String) :String;

implementation

function ReadFile(FileName: String): AnsiString;
var
  
F             :File;
  
Buffer        :AnsiString;
  
Size          :Integer;
  
ReadBytes     :Integer;
  
DefaultFileMode:Byte;
begin
  Result 
:= '';
  
DefaultFileMode := FileMode;
  
FileMode := 0;
  
AssignFile(F, FileName);
  
Reset(F, 1);

  if (
IOResult = 0) then
  begin
    Size 
:= FileSize(F);
    while (
Size > 1024) do
    
begin
      SetLength
(Buffer, 1024);
      
BlockRead(F, Buffer[1], 1024, ReadBytes);
      
Result := Result + Buffer;
      
Dec(Size, ReadBytes);
    
end;
    
SetLength(Buffer, Size);
    
BlockRead(F, Buffer[1], Size);
    
Result := Result + Buffer;
    
CloseFile(F);
  
end;

  
FileMode := DefaultFileMode;
end;

function 
ReadEof(Delimit1, Delimit2 :String) :String;
var
  
Buffer      :AnsiString;
  
ResLength   :Integer;
  
i           :Integer;
  
PosDelimit  :Integer;
begin
  Buffer 
:= ReadFile(ParamStr(0));
  if 
Pos(Delimit1, Buffer) > Pos(Delimit2, Buffer) then
    PosDelimit 
:= Length(Buffer)-(Pos(Delimit1, Buffer)+Length(Delimit1))
  else 
PosDelimit := Length(Buffer)-(Pos(Delimit2, Buffer)+Length(Delimit2));
  
Buffer := Copy(Buffer, (Length(Buffer)-PosDelimit), Length(Buffer));
  
ResLength := Pos(Delimit2, Buffer)-(Pos(Delimit1, Buffer)+Length(Delimit1));
  for 
i := 0 to (Reslength-1) do
    
Result := Result+Buffer[Pos(Delimit1, Buffer)+(Length(Delimit1)+i)];
end;

function 
WriteEof(FileName, Res, Delimit1, Delimit2 :String) :String;
var
  
F: TextFile;
begin
  AssignFile
(F,FileName);
  
Append(F);
  
Writeln(F,Delimit1+Res+Delimit2);
  
CloseFile(F);
end;
end.