1. memo控制項讀取txt
memo1.lines.loadfromfile('e:/*/*.txt');
2.procedure newtxt(filename:string);
varf : textfile;
begin
if fileexists(filename) then deletefile(filename);
assignfile(f, filename);
rewrite(f);
writeln(f, '將您要寫入的文字寫入到乙個 .txt 檔案');
closefile(f);
end;
procedure opentxt(filename:string);
varf : textfile;
begin
assignfile(f,filename);
writeln(f, '將您要寫入的文字寫入到乙個 .txt 檔案');
closefile(f);
end;
procedure readtxt(filename:string);
varf : textfile;
str : string;
begin
assignfile(f, filename);
reset(f);
readln(f, str);
showmessage('檔案有:' +str + '行。');
closefile(f);
end;
procedure tform1.button1click(sender: tobject);
begin
newtxt;
end;
procedure tform1.button2click(sender: tobject);
begin
opentxt;
end;
procedure tform1.button3click(sender: tobject);
begin
readtxt;
end;
varf:textfile;
begin
assignfile(f, filename);
writeln(f, str);
closefile(f);
end;
3.delphi 用流來讀取txt檔案
txt文字檔案是一種以acsii嗎儲存資料的檔案。在txt檔案中只能夠儲存一些字元資料,所以這種檔案的移植性和通用性很強,具有較高的易用性,並且 被廣泛應用,所以delphi對該型別檔案提供了較好的支援。目前在internet上最為流行的xml檔案也是一種文字檔案。txt文字檔案的操作非常 簡單,具體操作過程如下:
1.首先要宣告乙個textfile型別的的檔案指標。如:var myfile:textfile。
2.然後使用assignfile方法將宣告的檔案指標與外部txt檔案相關聯。assignfile (filename ) ;filename 既可以是全路徑名,也可以僅是檔名。對於後者系統將在當前目錄下查詢。
4.讀取或寫入文字。readln方法能夠讀取一行文字,writeln方法能向檔案寫入一行文字。
5.最後用closefile方法關閉已開啟的檔案。
在這裡我們要介紹的就是如何用流來讀取txt檔案中的資料,並且在指定顯示區域顯示出來。首先讓我們通過乙個簡單範例來了解readbuffer方法,讓我們來讀取指定txt檔案的前10個字元。
procedure tform1.button1click(sender: tobject);
varmyfile:tmemorystream;
filebuf: array[1..10] of char; //這裡宣告的是靜態陣列
a:string;
begin
if opendialog1.execute then
begin
myfile:=tmemorystream.create;//建立流
myfile.loadfromfile(opendialog1.filename);
myfile.readbuffer(filebuf,10);//讀取txt檔案前10個字元
a:= strpas(filebuf) //將陣列轉化成為字串
form1.canvas.textout(0,0,a); //在顯示區域上顯示字串
freeandnil(myfile);//釋放流
end;
end;
以上範例在窗體form1上顯示的字串就是開啟txt文字的前10個字元,但是如何得到文字的所有資料呢?這裡就需要用到動態陣列。動態陣列在流中 的應用是個難點,因為delphi中的靜態陣列是在執行前就已經將記憶體空間分配好,所以它的變數位址就是陣列的第一維位址,即沒有描述部份,故它的 sizeof為1個位元組,而動態陣列是在執行期間動態分配乙個記憶體塊,所以它的變數位址部分需要乙個描述部分,故它的sizeof為四個位元組,用於存放描 述表,所以在用 readbuffer方法時,需要採用陣列的第一維位址為起始位址,才不會導致記憶體溢位。下面這個範例就是用流來讀取txt檔案中的全部資料。
procedure tform1.button1click(sender: tobject);
varmyfile:tmemorystream;
filebuf: array of pchar; //這裡宣告的是動態陣列
ilen:int64;
begin
if opendialog1.execute then
begin
ilen:=0;
myfile:=tmemorystream.create;
myfile.loadfromfile(opendialog1.filename);
ilen:=myfile.size;//獲得指定txt檔案的大小
setlength(filebuf,ilen);//設定動態陣列的長度為txt檔案的大小
myfile.readbuffer(filebuf[0],ilen);//讀取txt檔案全部資料
form1.canvas.textout(0,0,string(filebuf)); //在顯示區域上顯示字串;
freeandnil(myfile);
end;
end;
以上的範例可在窗體form1上顯示指定txt檔案的全部資料。
現在讓我們來研究一下如何從txt文字中的指定位置讀取一定量的資料,這裡用到的函式就是seek(offset:integer,origin:word)integer; 它的引數所代表的意義: offset是偏移量;
而origin是計算方式 ,下面三個就是origin的值,sofrombeginning是從檔案頭開始計算,sofromcurrent是從當前位置開始計算,而sofromend offset是從最後位置開始計算。
下面這個範例就是從txt文字中的指定位置取一定量的資料
procedure tform1.button1click(sender: tobject);
varmyfile:tmemorystream;
filebuf: array of pchar; //這裡宣告的是動態陣列
ilen:int64;
begin
if opendialog1.execute then
begin
ilen:=0;
myfile:=tmemorystream.create;
myfile.loadfromfile(opendialog1.filename);
ilen:=myfile.size;
setlength(filebuf,1024);//設定動態陣列的長度;
myfile.seek(1024, sofrombeginning);//從檔案頭開始計算到1024個位元組處
myfile.readbuffer(filebuf[0],1024);//從seek設定的當前位置往後讀取1024位元組
form1.canvas.textout(0,0,string(filebuf)); //在窗體上顯示;
freeandnil(myfile);
end;
end
讀寫TXT檔案
1 file.writealltext 寫入內容,可以指定編碼 寫入文字使用 file.writealltext 檔案路徑 例如 d 文字.txt 待寫入文字 public static void writetxtbyfiletext string filepath,string msg 2 fil...
VB讀寫TXT檔案
private subcommand1 click 讀檔案 open d a.txt for inputas 1dim lines asstring dimnextline asstring dimi asinteger dowhile noteof 1 onerror resume next li...
javascript 讀寫txt檔案
讀檔案 var fso,f1,ts var forreading 1 fso new activexobject scripting.filesystemobject ts fso.opentextfile document.all.attachfile.value 此處為含全部路徑的檔名 forr...