2016-04-07 3 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つの異なる変数と、データベース全体の手順の操作を宣言する必要があることを、ここで問題を抱えています。
私は私はそれをどのように行うことができ、たとえば、私のコードを簡略化するために、動的変数を使用するように私は、すべてのデータベースに対して1つのデータベース操作を宣言することができ、このコードで
変更パスカル

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

[ブロックリード](http://www.freepascal.org/docs-html/rtl/system/blockread.htmlを使用することができます)、[BlockWrite](http://www.freepascal.org/docs-html/rtl/system/blockwrite.html)、[型付けされていないファイル](http://wiki.freepascal.org/File#Untyped_binary) – Abelisto

+0

あなたは私に例を与えたいですか?私は型なしのファイルや型付きのファイルがあるとは言いませんが、メモリ間の関係は何ですか? – Newbie123

+0

型なしのファイルをプロシージャまたは関数に渡すにはどうすればよいですか? @Abelisto – Newbie123

答えて

0

あなたは型なしファイルに書き込みたい場合は、 "TextFileの"

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;