안녕하세요~ 학교 과제로 미니파서 를 만들고 있는데..
클래스를 배열로 지정하여 값을 변수에 넣어줬는데
검색을 할려고 하면 마지막 값만 보여 집니다.
아래 소스처럼 배열처럼 클래스를 인덱스를 사용하여 값을 얻으려면
어떻해 해야 하는지 알려주세요~ 자료를 찾아봐도 잘 모르겠네요..ㅠㅠ
unit1
procedure TForm1.SetOPTable();
var
i : Integer;
begin
SetLength(opt,6);
for i:=0 to High(opt) do
begin
opt[i] := TOPTable.Create;
end;
opt[0].OPTable('program',1010101);
opt[1].OPTable('var',1010111);
opt[2].OPTable('integer',1100111);
opt[3].OPTable('float',11001011);
opt[4].OPTable('begin',1101111);
opt[5].OPTable('end',1110111);
end;
{ 키워드가 OPTABLE 에 존재하는지 체크 }
function TForm1.existWord(word : String) : String;
var
i:integer;
begin
for i:=0 to 6 do
begin
if (opt[i].getOPName = word) then
result := opt[i].getOPName;
end;
//result := null;
end;
{ 해당 키워드 OPCode 반환 }
function TForm1.getOPCode(word : String) : Integer;
var
i:integer;
begin
for i:=0 to 6 do
begin
if (opt[i].getOPName = word) then
result := opt[i].getOPCode;
end;
result := -1;
end;
unit UOPTable;
interface
uses
Classes;
type
TOPTable = class(TObject)
private
public
constructor Create;
destructor Destroy; override;
procedure OPTable(name : String; code : Integer) ;
function getOPName() : String;
function getOPCode() : Integer;
end;
var
opName : String;
opCode : Integer;
implementation
{ 클래스 생성 }
constructor TOPTable.Create;
begin
inherited Create;
end;
{ 글래스 소멸 }
destructor TOPTable.Destroy;
begin
inherited Destroy;
end;
procedure TOPTable.OPTable(name : String; code : Integer);
begin
opName := name;
opCode := code;
end;
{ OPNAME 반환 }
function TOPTable.getOPName() : String;
begin
result := opName;
end;
{ OPCODE 반환 }
function TOPTable.getOPCode() : Integer;
begin
result := opCode;
end;
end.