Je construis un compilateur et je reçois ce code d'erreur, quand je compilez le programme:Lazarus incompatibilité de type setLength
compiler_main.pas(55,4) Error: Type mismatch
le code est le suivant:
unit Compiler_main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, SynEdit, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Image1: TImage;
Image2: TImage;
Splitter1: TSplitter;
Splitter2: TSplitter;
SynEdit1: TSynEdit;
SynEdit2: TSynEdit;
SynEdit3: TSynEdit;
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure setForCompiling(var dataSect: array of String; var textSect: array of String; var bssSect: array of String);
procedure setDataSect (var dataSect: array of String);
//////////FUNCTIONS////////////////////
function compile() : boolean;
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
var INTarray: array of integer;
implementation
{$R *.lfm}
{ TForm1 }
{
procedure Tform1.setTextSect (var textSect: array of String);
begin
end; }
procedure Tform1.setDataSect(var dataSect: array of String);
begin
setLength (dataSect, 1);
dataSect[0]:= 'section .data';
end;
procedure Tform1.setForCompiling(var dataSect: array of String; var textSect: array of String; var bssSect: array of String);
begin
Synedit2.Lines.Clear;
Synedit3.Lines.Clear;
setDataSect (dataSect);
end;
function getMistake (mistake: boolean) : boolean;
begin
if mistake = false then
begin
getMistake:= true;
end else
begin
getMistake:= false;
end;
end;
function Tform1.compile() : boolean;
var momLine : integer = 0;
var totalLines : integer;
var posBracketOpen : Byte;
var posBracketClose : Byte;
var posTextBracketOpen : Byte;
var posTextBracketClose: Byte;
var mistake : boolean = false;
var dataASM : array of string;
var textASM : array of string;
var bssASM : array of String;
begin
setForCompiling(dataASM, textASM, bssASM);
totalLines:= synEdit1.lines.count;
while momline < totalLines do
begin
inc (momline);
end;
compile:= getMistake (mistake);
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
Showmessage ('Ein deutscher Compiler, programmiert von NONAME. NUR UNTER LINUX BENUTZBAR!');
end;
procedure TForm1.Image2Click(Sender: TObject);
begin
if Compile = true then
begin
Synedit3.Lines.add ('Fehlerfrei Compiliert!');
end else
begin
Synedit3.Lines.add ('Es wurde mindestens ein Fehler festgestellt! Bitte korrigiere diesen.');
end;
end;
end.
mon Programm est programmé dans Lazarus et bases sur NASM et est compilé dans la dernière version de Laz sous Linux.
J'espère que vous pouvez m'aider.
Ok, ça marche maintenant.
Merci! ça a aidé beaucoup! –