Dateizugriff: Fehler bei "Assign"

Für Fragen von Einsteigern und Programmieranfängern...
moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Hallo,
ich bin neu auf dem Gebiet. Jetzt wollte ich einen Dateizugriff programmieren. Das Problem ist, dass es eine Fehlermeldung gibt, die ich nicht verstehe:

Codezeile: Assign(Datei,'Liste.sco');
Fehlermeldung: Fatal: Syntax error, ":" expected but "(" found

Laut meinen Recherchen müsste dort aber eine Klammer stehen.
Was hab ich falsch gemacht?

Tom

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

Der meint wahrsch. das Assign von TPersistent.

Probier mal mit

AssignFile(...

bzw.

System.Assign(...

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Bei Assignfile kommt die gleiche Meldung, bei System.Assign meckert er außerdem noch über "System" und den Punkt.

Tom

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

Dann liegt der Fehler wahrsch. nicht in dieser Zeile.

Zeig mal mehr.

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Code: Alles auswählen

unit App_002;
 
{$mode objfpc}{$H+}
 
interface
Type Struktur = record;
     Spielername : string[100];
     Punktzahl : integer;
     end;
Var Datei : File of Sruktur;
Var Satz : Struktur;
 
Assign(Datei, 'Liste.sco');
Rewrite(Datei);
 
uses
  Classes, SysUtils;
 
implementation
 
end.
 

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

Du kannst nicht im interface Teil einer Unit irgendwelchen Code ausführen.

Lerne mal die Grundlagen der Pascal Programmierung.

Z.B.
http://www.delphi-treff.de/tutorials/

Oder Suche im Forum nach mehr Tutorials http://www.lazarusforum.de/viewtopic.php?f=21&t=79

volker
Beiträge: 25
Registriert: Mi 14. Nov 2012, 14:36
OS, Lazarus, FPC: Linux Kernel 6.6 (L 3.0 FPC 3.2.2)
CPU-Target: x86_64 Linux gtk2

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von volker »

Du kannst nicht im interface Teil einer Unit irgendwelchen Code ausführen.
Du kannst NACH implementation Teil in der Unit noch eine INITIALIZATION Sektion schreiben, da kann Code rein, der direkt ausgeführt wird.
Die Frage ist, wie sinnvoll ist das. Vielleicht besser so was in das Ereignis FormCreate rein, wäre mein Vorschlag

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Also muss ich den Teil ab dem Assign z.B. nach Druck auf einen Button ausführen?

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

moTTom hat geschrieben:Also muss ich den Teil ab dem Assign z.B. nach Druck auf einen Button ausführen?
Kann sein, aber das kann man so direkt nicht sagen.
Was willst du den eigentlich machen? Ein Konsolenprogramm oder ein "Windows-Programm"?
Was soll das werden?

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Im Prinzip ein Windows Programm mit GUI und so.
Ich müsste halt erstmal wissen, wie der ganze Code aussieht, nur um die Datei zu erstellen. Dann könnte ich damit was anfangen, hab halt noch keinen Vollständigen Code gesehen, und mit solchen Themen beschäftigen sich auch die Einsteiger Tutorials nicht.

Tom

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

Also ganz einfach gesagt:

Erstelle ein neues Projekt (Anwendung).
Platziere einen Button auf dem Formular.
Doppelklicke auf den Button, dann erhältst du ein Prozedurgerüst (TForm1.Button1Click) dort kannst du deinen Code unterbringen.
Der wird dann beim klicken auf den Button abgearbeitet.

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Das ist mir klar, ein paar Codes krieg ich auch hin, nur wie speicher ich das jetzt in einer Datei?
Die Variablen würde ich dann wie jede andere auch deklarieren, von dem type Struktur = record ... hab ich keine Ahnung. Das Assign sollte dann z.B. nach einem buttonclick ausgeführt werden.

Das Beispiel hab ich übrigens von: http://www.hadels.com/programmit/TP6.html

Tom

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

moTTom hat geschrieben:nur wie speicher ich das jetzt in einer Datei?
Wie gesagt, lerne Pascal! Ein paar Links habe ich dir oben gegeben.
Dieses Forum ist kein Einsteigerkurs.
Wenn du wirklich nicht weiterkommst, kannst du natürlich hier Fragen.

moTTom
Beiträge: 12
Registriert: So 18. Nov 2012, 21:46

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von moTTom »

Ich verzweifle:
Also als Konsolenanwendung funktioniert das:

Code: Alles auswählen

program schreibeIntegerDatei;
uses crt;
var datei:file of integer;
begin
  assign(datei,'text.dat');
  Rewrite(datei);
  Close(datei);
end.                       
Aber wenn ich versuche, das in eine Unit mit Fenster umzusetzten, funktioniert es nicht:

Code: Alles auswählen

unit Fenster_1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
var datei:file of integer;
 
implementation
 
{$R *.lfm}
 
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  assign(datei, 'text.dat');
end;
 
end.
 
gibt es folgende Fehlermeldungen:
fenster_1.pas(35,33) Error: Wrong number of parameters specified for call to "Assign"
fenster_1.pas(40) Fatal: There were 1 errors compiling module, stopping

Was mache ich denn nun falsch, wo muss die assign-Zeile hin? was sollte Assign denn sonst noch erwarten?

Tom

PS:Wenn ich die assign-Zeile weglasse, treten keine Fehler auf.

Benutzeravatar
theo
Beiträge: 10880
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateizugriff: Fehler bei "Assign"

Beitrag von theo »

Jetzt drehen wir uns im Kreis.
Die Antwort steht in meinem ersten Beitrag dieses Threads.

Antworten