WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   pascal problem! array schreibn (http://www.wcm.at/forum/showthread.php?t=77381)

porli 17.11.2002 10:39

pascal problem! array schreibn
 
also:

i hab wieder mal ein problem für euch!!!;)

müssn für die schuile da so a schirches proggi schreiben und jetzt bring ma ned zam an array in die datei zum schreim!! er sagt immer:"ungültige qualifizierung". und jetzt brauchat ma bidde a paar lösungsvorschläge!


Quelltext:

procedure schreiben(var ptmoment:tgesamt);
var
dat,dat2:text;
letztzahl:integer;

begin
assign(dat2,'zahl.txt');
reset(dat2);
readln(dat2,letztzahl);
close(dat2);
assign(dat,'index.txt');
{$i-}
reset(dat);
{$i+}
If (ioResult<>0) then
begin
assign(dat,'index.txt');
rewrite(dat);
close(dat)
end;
assign(dat,'index.txt');
append(dat);
write(dat,ptmoment[letztzahl]); {ungültige qualifizierung}
close(dat)
end;

flinx 17.11.2002 17:41

TP-Hilfe sagt:
Code:

(ungültige Qualifizierung)

Diese Fehlermeldung erhalten Sie bei dem Versuch,

 a eine Variable zu indizieren, die kein Array
  ist,
 b auf Felder einer Variablen zuzugreifen, die
  kein Record ist, oder
 c eine Variable zu dereferenzieren (mit ^), die
  kein Zeiger ist.


porli 18.11.2002 15:39

so gscheit war ich auch schon! aba das hat ma nicht wirkli weiter gholfen! :rolleyes: leider! *schnief*

weil a: sie is ein array
b: sie is auch ein record
c: und das letzte versteh ich nicht was das heisst!

aba kann ma irgendwer in quelltext korriegieren oda so??

ich weiß nämli uur nicht mehr weiter!

flinx 18.11.2002 15:51

Zitat:

weil a: sie is ein array
b: sie is auch ein record
Ein array aus records?

Strukur/Definition von tgesamt wäre nett zu wissen?

porli 18.11.2002 21:05

oke ich hab dir/euch mal da das ganze proggi geadded!

danke schon mal jetzt! :)

flinx 19.11.2002 00:41

Code:

tdatum=record
      jahr:integer;
      monat:1..12;
      tag:1..31;
    end;
    tzeit=record
      stunde:0..23;
      minute:0..59;
      sekunde:0..59;
    end;
    tkennzahl=record
      raum:1..14;
      geraet:1..10;
      Zustand:0..1;
    end;
    tgesamt=record
      datum:tdatum;
      zeit:tzeit;
      kennzahl:tkennzahl;
    end;
    tmoment=array [1..maxaction] of tgesamt;
procedure schreiben(var ptmoment:tgesamt);
...
write(dat,ptmoment[letztzahl]); {ungültige qualifizierung}
...

IMHO trifft Fehler a) zu. Einen Record wirst nicht mit Indices ansprechen können.
je nach dem was schreiben willst:
Code:

write(dat, ptmoment.kennzahl.raum)
                            .gerät
                    .zeit.stunde

Sollte ptmoment vom Typ tmoment und letztzahl der Index sein:
Code:

ptmoment[letztzahl].zeit.stunde
hth

porli 19.11.2002 16:55

na schau ich will den gsamten array ptmoment im feld[letztzahl (is a zahl aus einer datei)] in eine neue datei mit den namen inex.txt schreiben!

in dem array-feld soll ein zahlendatensatz drinnstehn der sich aus

datum
zeit
kennzahlen

zusammensetztt!

oda hab ich das falsch verstanden?

meinst du das ich schreiben müsste:
write(dat, ptmoment.kennzahl.raum.gerät.zeit.stunde) aba das geht ja nciht! ich hab ma dacht ich schreib den ganzen record tgesamt in das array!

ich weiß ja nicht ich kenn mich mit dem noch nciht gut aus! ham das grad neu gmacht! und unser lehrer is a bissi a depp!
:)

Zitat:

Original geschrieben von flinx
Sollte ptmoment vom Typ tmoment und letztzahl der Index sein:

ja soll er/es!
Zitat:

Code:

ptmoment[letztzahl].zeit.stunde

:
was meinst damit? dann tät er ja nur zeit und stunde schreiben! oda?:confused:

flinx 19.11.2002 17:49

Zitat:

na schau ich will den gsamten array ptmoment im feld[letztzahl (is a zahl aus einer datei)] in eine neue datei mit den namen inex.txt schreiben!
:) des hab ich mir fast gedacht.
Zitat:

ich schreib den ganzen record tgesamt in das array!
hast ja auch getan :D , nur willst jetzt den 'Verweis' auf den Record (dessen Felder wieder Records sind) in eine Datei schreiben und des wird nicht ganz funktionieren. Du musst die Felder der Records schreiben: d.h. z.B. so
Code:

write(dat, ptmoment[letztzahl].datum.jahr)
write(dat, ptmoment[letztzahl].datum.monat)
write(dat, ptmoment[letztzahl].datum.tag)
write(dat, ptmoment[letztzahl].zeit.stunde)
write(dat, ptmoment[letztzahl].zeit.minute)
write(dat, ptmoment[letztzahl].zeit.sekunde)
write(dat, ptmoment[letztzahl].kennzahl.raum)
write(dat, ptmoment[letztzahl].kennzahl.geraet)
write(dat, ptmoment[letztzahl].kennzahl.Zustand)

hth

porli 19.11.2002 19:55

sorry hab grad min 30-40 zeilen gschrieben und dann is compi abgstürtzt jetzt weiiß ichs nimma genau aba ich versuchs nomal:

aha :eek: *check*

aba bleibt das dann trotzdem nur in einem index von dem array?

das soll dann eine riesige zeichenkette sein!

z.B.: 2002020915341801081

heisst so viel wie im Jahr 2002 am 09.02 um 15:34:18 Uhr wurde im Raum 1 das gerät 10 eingeschaltet!

so wenn ich das aus der datei dann wieder herausles kann ich dann auch wieder auf die einzelnen records zugreifen? nein oda?

weil wenn ich jetzt schreib:

Code:

readln(dat,ptmoment[letztzahl]);
dann les ich den ganzen datensatz in den array

aba wenn ich jetzt schreib:

Code:

readln(dat,ptmoment[letztzahl].datum.jahr
lest er dann nur es jahr?

porli 19.11.2002 20:10

he das funktioniert aba auch nciht! habs grad ausprobiert:

Code:

write(dat, ptmoment[letztzahl].datum.jahr)
write(dat, ptmoment[letztzahl].datum.monat)
write(dat, ptmoment[letztzahl].datum.tag)
write(dat, ptmoment[letztzahl].zeit.stunde)
write(dat, ptmoment[letztzahl].zeit.minute)
write(dat, ptmoment[letztzahl].zeit.sekunde)
write(dat, ptmoment[letztzahl].kennzahl.raum)
write(dat, ptmoment[letztzahl].kennzahl.geraet)
write(dat, ptmoment[letztzahl].kennzahl.Zustand)

und er schreibt wieder ungültige Qualifizeirung!

obwohl ich die strichpunkte noch hinzugefügt haben obwohl die damit ja nix zu tun haben! ich weiß nicht! an was kannst da liegen!?


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag