Error: Got "File of Adresse" expected "AnsiString"

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Error: Got "File of Adresse" expected "AnsiString"

Beitrag von idefix »

Hallo!

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
Ich denke, der Code würde unter Delphi laufen. Daher hier die Frage, wie ich unter Lazarus weiter komme.

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.
Help needed!

Vielen Dank!
Gruß!
idefix

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2813
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Error: Got "File of Adresse" expected "AnsiString"

Beitrag von m.fuchs »

Mal ungetestet aus der Hüfte: Mach mal aus deinem FileSize ein System.FileSize.

Hintergrund: in der Unit FileUtil ist ein zweites FileSize definiert, welches einen String erwartet. Mit dem System. davor sagst du dem Compiler aber, welche FileSize-Funktion du verwenden möchtest.

mf
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

idefix
Beiträge: 61
Registriert: So 21. Aug 2011, 20:37
OS, Lazarus, FPC: WIN7 /Laz 1,0,8 / FPC 2.6.2/ SVN 40573
CPU-Target: xxBit

Re: Error: Got "File of Adresse" expected "AnsiString"

Beitrag von idefix »

Hallo!

Vielen Dank!

Hat geklappt.

Gruß!
idefix

Antworten