Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Inkompatible Typen bei Record


Dude566 - Do 17.09.09 16:58
Titel: Inkompatible Typen bei Record
ich bekomme in folgendem Code immer die Fehlermeldung es wären inkompatible Typen was eigentlich nicht sein, es sei denn ich habe mal wieder einen Denkfehler. ^^

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
TDaten = record
    vorname, nachname : string[30];
    geburtstag : string[15];
    telefon, mobil : string[20];
    email, icq, msn, homepage : string[64];
  end;

var
  Form1: TForm1;
  daten : array of TDaten;
  counter : integer;

procedure TForm1.AddDataClick(Sender: TObject);
begin
Inc(counter);
SetLength(daten, counter);
  daten[counter-1].vorname := edVornameAdd;
  daten[counter-1].nachname := edNachnameAdd;
  daten[counter-1].geburtstag := edBDayAdd;
  daten[counter-1].telefon := edTeleAdd;
  daten[counter-1].mobil := edMobilAdd;
  daten[counter-1].email := edEmailAdd;
  daten[counter-1].icq := edIcqAdd;
  daten[counter-1].msn := edMsnAdd;
  daten[counter-1].homepage := edWebAdd;
end;


Ich bekomme den Fehler bei allen Zuweisungen.

Gruß Dude566


Narses - Do 17.09.09 17:00

Moin!

Du willst doch bestimmt auch die Eigenschaft der VCL-Controls angeben, oder? :zwinker:

Delphi-Quelltext
1:
2:
daten[counter-1].vorname := edVornameAdd.Text;
//...
cu
Narses


Dude566 - Do 17.09.09 17:02

oh mein Gott!!!! Wie peinlich.... ich hab das doch net gesehn. ^^ :oops: :oops: :oops: :oops:

Edit: Hier seh ich aber nix was ich vergessen haben sollte und trotzdem kann ich die Daten aus der typisierten Datei nicht in mein dynamisches Array einlesen. Inkompatible Typen : TDaten und ShortString.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
var
  datei : file of TDaten;

while not EOF(datei) do
          begin
            SetLength(daten, counter+1);
            read(datei, daten[counter].vorname);
            read(datei, daten[counter].nachname);
            read(datei, daten[counter].geburtstag);
            read(datei, daten[counter].telefon);
            read(datei, daten[counter].mobil);
            read(datei, daten[counter].email);
            read(datei, daten[counter].icq);
            read(datei, daten[counter].msn);
            read(datei, daten[counter].homepage);
            Inc(counter);
          end;


Boldar - Do 17.09.09 18:05

Du musst dass alles auf einmal in eine variable vom Typ TDaten laden. Sagt er dir doch schon?


Yogu - Do 17.09.09 19:07


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  datei: file of TDaten;
begin
  while not EOF(datei) do
  begin
    SetLength(daten, Length(daten)+1);
    Read(datei, High[daten]);
  end;

Das reicht. Ich hab mir erlaubt, deine schöne Variable counter durch die sowieso schon gespeicherte Länge des Arrays daten zu ersetzen (vorausgesetzt natürlich, counter ist tatsächlich ein Array).

Edit: Danke, user profile iconFlamefire :oops:


Flamefire - Do 17.09.09 19:58


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  datei: file of TDaten;
begin
  while not EOF(datei) do
  begin
    SetLength(daten, Length(daten)+1);
    Read(datei, High[Daten]);
  end;


müsste es heißen ;-)


Dude566 - Do 17.09.09 21:38

Achso stimmt das habe ich garnicht beachtet.

user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:

Das reicht. Ich hab mir erlaubt, deine schöne Variable counter durch die sowieso schon gespeicherte Länge des Arrays daten zu ersetzen (vorausgesetzt natürlich, counter ist tatsächlich ein Array).


Du meinst wohl daten ein Array ist, denn counter ist ja der Zähler den ich zum Zählen der Einträge verwendet habe, so haben wir es in der Schule gelernt. :roll: