2016-04-07 51 views
2
database : array [1..3] of string = ('QA.db','Level.db','Highscore.db'); 

type QA = record 
Question : string[255]; 
Options : array['A'..'D'] of string[255]; 
Answer : char; 
end; 

type level = record 
money: longint; 
safe: boolean; 
end; 

type score = record 
    name : string[255]; 
    reward : longint; 
end; 

var 
f1:file of QA; 
ftemp1: QA; 
f2 : file of level; 
ftemp2: level; 
f3 : file of score; 
ftemp3: score;   

//Database Operation 
    procedure print, change, etc. 
    begin reset(f1); ....; write(f,ftemp); close(f1); end; etc. 


我這裏有問題,我應該申報爲每一個數據庫2個不同的變量,整個數據庫的程序操作。
我想用動態的變量,以簡化我的代碼,例如
更改記錄類型的動態可變文件帕斯卡

var 
f:file of VAR; 
ftemp: VAR; 

procedure Add; 
begin 
reset(f); 
.... 
write(f,ftemp); 
close(f); 
end; 

begin 
VAR:QA; 
Add; 
VAR:level; 
Change; 
end; 


有了這個代碼,我只能宣佈對所有數據庫中的一個數據庫操作,我怎麼能這樣做呢?我正在使用lazarus IDE。

+1

[BlockRead](http://www.freepascal.org/docs-html/rtl/system/blockread.html ),[BlockWrite](http://www.freepascal.org/docs-html/rtl/system/blockwrite.html),[untyped files](http://wiki.freepascal.org/File#Untyped_binary) – Abelisto

+0

你想給我一個例子嗎?我不明白有無類型或類型的文件,內存之間的關係是什麼? – Newbie123

+0

如何將非類型化文件傳遞給過程或函數? @Abelisto – Newbie123

回答

0

如果你想要寫一個無類型文件,您可以使用 「文本文件」

procedure xyz.. 
var 
    myFile: TextFile; 
begin 
    AssignFile(myFile, 'C:\QA.db'); 
    try 
    rewrite(myFile); 
    writeln(myFile, 'New Sample text!'); 
    CloseFile(myFile); 
    except 
    // Important ERROR handling! 
    on E: EInOutError do 
     writeln('Some error in filewriting!: ', E.ClassName, ':', E.Message); 
    end; 
end;