File Handling In Pascal
File handling
Something most programmers need to know how to do is work with files. Files can be used to save user settings, error logs, and more. Here i am going to teach you how to work with basic text files.
About files
When using files in pascal, you can use a TextFile type, which allows you to write string into the file or create your own file type.
<Delphi> ... Type
TIFile = File Of Integer;//Allows you to write Integers into the file TCFile = File Of PChar;//Write PChars into the file :\ TFile = File Of String;//Write Strings into the file
... </Delphi>
If we only did TFile = File, then it would be impossible to write anything into it! Also, you cannot write integers directly into TFile, because it is a file of strings. Better use the filetype TextFile for writing values of different types.
IO
IO is the file handling thingy for pascal. It is used for getting errors. Since it is a compiler directive, you have to do this: <Delphi> {$I-}//Turn off checking. This way all errors go into the IOResult variable {$I+}//Turn it back on </Delphi>
By disabling (Turning off) IO it all goes into the IOResult variable. This is an cardinal type(Numbers). So, if you want to write it, you have to use the InttoStr function. Different numbers mean different errors. So you may want to check here for the different errors: [1]
File procedures
There are three file procedures you really need to know about
Rewrite - Is used for creating files
Append - Opens an existing file for editing it
Reset - Opens a file for reading it
Example
A full example of handling a text file of type TextFile:
<Delphi> Program FileTest;
{$mode objfpc} //Do not forget this ever
Uses
Sysutils;
Var
FileVar:TextFile;
begin
Writeln('File Test'); AssignFile(FileVar,'Test.txt'); // you do not have to put .txt but this is just for now {$I-} Try Rewrite(FileVar); // creating the file Writeln(FileVar,'Hello'); Except Writeln('ERROR! IORESULT: '+inttostr(IOResult)); End; CloseFile(FileVar); Readln;
end. </Delphi>
Now open the file in any text editor and you will see Hello written to it!
Heres appending to a file(Editing it)
<Delphi> Program EditFile;
{$mode objfpc}
Uses
Sysutils;
Var
File1:TextFile;
begin
Writeln('Append file'); AssignFile(File1,'File.txt'); {$I-} Try Append(File1,'Some Text'); Except Writeln('ERROR IORESULT:'+inttostr(IOResult)); End; {$I+} CloseFile(File1); Readln;
end. </Delphi>
Reading a file:
<Delphi> Program ReadFile;
{$mode objfpc}
Uses
Sysutils;
Var
File1:TextFile; Str:String;
begin
Writeln('File Reading:'); AssignFile(File1,'File,txt'); {$I-} Try Reset(File1); Repeat Readln(File1,Str);//Reads the whole line from the file Writeln(Str);//Writes the line read Until(EOF(File1));EOF(End Of File) The the program will keep reading new lines until there is none. Except Writeln('ERROR IORESULT:', IOResult); end; {$I+} CloseFile(File1); Readln;
end. </Delphi>
It is possible to do some file handling using chars instead of strings. This makes it look cool :D.
Other file procedures
The SysUtils and some other units have procedures for making text files. [2]
OOP
Creating TextFiles in OOP (Object Orientated Pascal) is simple and fast. Mainly because most objects have a SaveToFile procedure.
The usage is similar to that of a TStringList:
<Delphi> Var
Str:TStringList;
begin
Str := TStringList.Create; Str.Add('Hello'); Str.SaveToFile(<File Path Here>);
end; </Delphi>
I hope this is helpful :D And if anything is wrong or I left something out. Edit At Will!