Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Record-Problem - Ich machs doch wies überall steht :( (https://www.delphipraxis.net/14517-record-problem-ich-machs-doch-wies-ueberall-steht.html)

n0k 10. Jan 2004 19:31


Record-Problem - Ich machs doch wies überall steht :(
 
Hallo,
wir entwicklen grad in der Schule ein Programm das die Aufteilung der über 600 Schüler in ihre Projekte zum Ende des Schuljahres übernimmt. Ich dachte mir nun das ich ja zu hause ein bisschen rumpsielen könnte und stieß auf folgendes Problem.

Delphi-Quellcode:
implementation

{$R *.dfm}



{!!!!!!!!!!!!!!!!!! FORMCREATE !!!!!!!!!!!!!!!!!!}

procedure TForm1.FormCreate(Sender: TObject);
var
  i :integer;
  a :string;
schdata: Tschueler;

begin

AssignFile (schdata ,'schueler.pmx');
if FileExists ('schueler.pmx') then ReSet schdata
else Rewrite(schdata);


AssignFile (prodata,'projekte.pmx');
if FileExists ('projekte.pmx') then ReSet prodata
else Rewrite(prodata);

AssignFile (zuwdata,'zuweisung.pmx');
if FileExists ('zuweisung.pmx') then ReSet zuwdata
else Rewrite(zuwdata);


projektanzahl  :=3;
schueleranzahl :=3;



    for i:=1 to schueleranzahl do
     begin
      SG_Schueler.RowCount:=i+1;
      a:=IntToStr(i);
      SG_Schueler.Cells[0,i]:=a;
     end;

    for i:=1 to Projektanzahl do
     begin
      SG_Projekte.RowCount:=i+1;
      a:=IntToStr(i);
      SG_Projekte.Cells[0,i]:=a;
     end;

    for i:=1 to Projektanzahl do
     begin
      SG_Zuweisung.RowCount:=i+1;
      a:=IntToStr(i);
      SG_Zuweisung.Cells[0,i]:=a;
     end;

{Schülerliste}
SG_Schueler.Cells[1,0]:='Name';
SG_Schueler.Cells[2,0]:='Klasse';
SG_Schueler.Cells[3,0]:='Projektwunsch 1';
SG_Schueler.Cells[4,0]:='Projektwunsch 2';
SG_Schueler.Cells[5,0]:='Projektwunsch 3';

{Projektliste}
SG_Projekte.Cells[1,0]:='Nummer';
SG_Projekte.Cells[2,0]:='Name';
SG_Projekte.Cells[3,0]:='Budget';
SG_Projekte.Cells[4,0]:='Leiter';
SG_Projekte.Cells[5,0]:='Raum / Ort';
SG_Projekte.Cells[6,0]:='Kapazität';

{Projektzuweisung}
SG_Zuweisung.Cells[1,0]:='Schuelername';
SG_Zuweisung.Cells[2,0]:='Klasse';
SG_Zuweisung.Cells[3,0]:='Projekt';
end;
Die Typendefs. sind in einer Extraunit, dem Projekt aber hinzugefügt und unter uses ist die Unit eingetragen.
Wenn ich nun das Teil kompilieren will, erscheint folgende Meldunge:

Inkompatible Typen (genau in der Zeile wo das erste Mal AssignFile steht!

Ich hoffe ihr könnt mir helfen
Danke schonmal

Luckie 10. Jan 2004 19:34

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Zitat:

Zitat von n0k
Ich hoffe ihr könnt mir helfen

Kommt drauf an. Was ist Sschueler für ein Datewntyp?

Brüggendiek 10. Jan 2004 19:50

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Hallo!

Wenn Sschueler kein "File of datentyp" ist, habe ich die Ursache - die Fehlermeldung spricht dafür!

Assignfile erwartet eine File-Variable!

Ggf. sollte also folgendes geändert werden:
Delphi-Quellcode:
schdata : file of sschueler;
- das ganze sinngemäß auch für die anderen Dateien!

Ach ja - bevor das nächste Problem hier auftaucht - zum n + 517532. Male: Erwarte nicht, daß Dein Programm die Dateien auch findet! Ohne Pfadangabe sucht er immer im aktuellen Verzeichnis, und das ist nicht immer das Programmverzeichnis!

Ändere die Dateinamen noch ab in
Delphi-Quellcode:
ExtractFilePath(ParamStr(0))+'xxx'
bzw. lege im Formular eine Variable an, in der Du die Pfadangabe speicherst.

Gruß

Dietmar Brüggendiek

n0k 10. Jan 2004 20:26

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Zitat:

Zitat von Luckie
Kommt drauf an. Was ist Sschueler für ein Datewntyp?

Es ist ein Record.

Delphi-Quellcode:
type   TSchueler=record
        Vorname      :String[25];
        Name         :String[25];
        Klasse       :shortint;
        Klasse2       :char;
        Wahl1,Wahl2,Wahl3:String[255];
        end;
        schdata=file of TSchueler;
Man muss dazu sagen das mit dem SSchueler war ein Schreibfehler. Das sthet so nicht im Code;

n0k 11. Jan 2004 14:22

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Weiss denn keiner Rat? :cry: :cry: :cry:

Niko 11. Jan 2004 14:49

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Zitat:

Zitat von nOk
Man muss dazu sagen das mit dem SSchueler war ein Schreibfehler. Das sthet so nicht im Code;

Was steht denn stattdessen im Code?
Ich denke, du versuchst den Typ Schdata als Variable zu verwenden.
Entferne mal das
Delphi-Quellcode:
schdata=file of TSchueler;
aus deiner Typdeklaration und schreib stattdessen unter var
Delphi-Quellcode:
schdata: file of TSchueler;

n0k 11. Jan 2004 14:57

Re: Record-Problem - Ich machs doch wies überall steht :(
 
TSchueler steht stattdessen drin.

n0k 11. Jan 2004 15:03

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Entferne mal das
Delphi-Quellcode:
schdata=file of TSchueler;
aus deiner Typdeklaration und schreib stattdessen unter var
Delphi-Quellcode:
schdata: file of TSchueler;
[/quote]

Fast :) Man muss anscheinend das
Delphi-Quellcode:
schdata: file of TSchueler;
in die Vars schreiben, dann funzt es .
Sehr schön.

DANKE an alle :mrgreen: :mrgreen:

n0k 11. Jan 2004 15:04

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Dann hab ich gleich noch ne neue Frage:
Weiss jemand wie man neu PopUp Windows macht?
Zum Beispiel für ein Optionsmenü.

Luckie 11. Jan 2004 15:41

Re: Record-Problem - Ich machs doch wies überall steht :(
 
Neue Frage, neuer Thread. Und da hier alles geklärt ist: Geschlossen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz