Ich verwende Lazarus 0.9.30 unter Win.
Ich versuche mich an einem weiteren Delphi Tutorial:
http://www.delphi-treff.de/tutorials/da ... tionieren/
Es dreht sich um Records, in Dateien schreiben etc.
In folgendem Programschnipsel bekomme ich (in der if Zeile) diese Fehlermeldung:
unit0019.pas(90,49)Error: Incompatible type of arg no. 1: Got "File of Adresse", expected "AnsiString"
Code: Alles auswählen
procedure TForm1.positionieren(datensatz: integer);
var aktdatensatz: Adresse;
begin
if (datensatz<0) or (datensatz>=FileSize(datei)) then exit
else begin
Den wesentlichen Programmcode habe ich angefügt.
Code: Alles auswählen
unit Unit0019;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender : TObject);
procedure FormDestroy(Sender : TObject);
procedure positionieren(datensatz: integer);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1 : TForm1;
type Adresse = record
name: string[50];
vorname: string[50];
strasse: string[100];
hausnummer: integer;
plz: integer;
ort: string[100];
end;
var datei: file of Adresse;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender : TObject);
var path: String;
begin
path := ExtractFilePath(ParamStr(0));
AssignFile(datei, path+'adressen.dat');
if FileExists(path+'adressen.dat') then ReSet(datei)
else ReWrite(datei);
end;
procedure TForm1.FormDestroy(Sender : TObject);
begin
CloseFile(datei);
end;
procedure TForm1.positionieren(datensatz: integer);
var aktdatensatz: Adresse;
begin
if (datensatz<0) or (datensatz>=FileSize(datei)) then exit
else begin
seek(datei, datensatz);
read(datei, aktdatensatz);
edit1.text:=aktdatensatz.name;
edit2.text:=aktdatensatz.vorname;
edit3.text:=aktdatensatz.strasse;
edit4.text:=IntToStr(aktdatensatz.hausnummer);
edit5.text:=IntToStr(aktdatensatz.plz);
edit6.text:=aktdatensatz.ort;
end;
end;
end.
Vielen Dank!
Gruß!
idefix