Toon posts:

kom niet verder in pascal :(

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben net begonnen met delphi vanwege school, ik kom niet verder met een opdracht, delphi geeft een foutmelding op deze regel :
IF AdresRec.Postcode >= BeginPostc AND AdresRec.Postcode <= EindPostc THEN

met de foutmelding
Operator not applicable to this operand type

En wanneer ik er dit van maak:
IF AdresRec.Postcode >= BeginPostc THEN

krijg ik deze foutmelding:
Incompatible types

dit is de code, heb het nog niet af, en dit is pas mn 2e programmaatje dus...
PROGRAM EtiketPrg;

TYPE
TAdresRec = RECORD
Nummer :Integer;
Voorletters :String[4];
Naam :String[20];
Straat :String[25];
Postcode :Integer;
Woonplaats :String[17];
Geboortedatum :String[8];
Telefoon :LongInt;
RekeningNr :LongInt;
END;


VAR
BeginPostc,
EindPostc : Integer;
AdresGeg : FILE OF TAdresRec;
UitvoerBestand : Text;
AdresRec : TAdresRec;

PROCEDURE Init;
BEGIN
BeginPostc := 0;
EindPostc := 0;

END;


PROCEDURE PCInvoer;
BEGIN
WriteLn('Voer 2 postcodes in gescheiden door een spatie en druk daarna op ENTER');
WriteLn('Voer alleen de eerste 4 getallen in van de postcode');
ReadLn(BeginPostc, EindPostc);
WriteLn('postcodes gelezen: ',BeginPostc,' en ',EindPostc);
END;

PROCEDURE Adressen;

PROCEDURE PerAdres;


PROCEDURE LeesGeg;
BEGIN
Assign(AdresGeg, 'Adres.dta');
Reset(AdresGeg);
Assign(UitvoerBestand, 'uitvoer.dta');
Reset(UitvoerBestand);
END;

PROCEDURE PCVragen;
BEGIN

END;

PROCEDURE Etiket;
BEGIN
IF AdresRec.Postcode >= BeginPostc AND AdresRec.Postcode <= EindPostc THEN
Rewrite(UitvoerBestand);
WriteLn(Uitvoerbestand,'Gegevens:');
WriteLn(UitvoerBestand,AdresRec.Voorletters);
WriteLn(UitvoerBestand,AdresRec.Naam);
WriteLn(UitvoerBestand,AdresRec.Straat);
WriteLn(UitvoerBestand,AdresRec.Postcode);
WriteLn(UitvoerBestand,AdresRec.Woonplaats);
END;



BEGIN (* PerAdres * )
LeesGeg;
PCVragen
END; (* PerAdres * )

BEGIN (* Adressen * )
WHILE NOT EoF (AdresGeg) DO
PerAdres;
END; (* Adressen * )

(* volgorde van de uit te voeren procedures * )
BEGIN
Init;
PCInvoer;
Adressen;
END.
Kan iemand me verder helpen?

Verwijderd

deze ken ik en is een HUISWERKOPDRACHT uit de 2e klas informatica :P

En ik neem aan dat je weet dat dit hier dus niet mag :)

Verwijderd

nie mauwe schaaplemur

Verwijderd

Topicstarter
nee, 1e klas, 2e opdracht.
Maar niet voor een cijfer...
Ook BI op de HEN ?

Verwijderd

Staat idd in de FAQ dat het niet mag, maar goed..

Maak er eens dit van:

IF (AdresRec.Postcode >= BeginPostc) AND (AdresRec.Postcode <= EindPostc) THEN

//edit
staat er in de opdracht dat je perse een record moet gebruiken? Ik zou dit nl eerder mbv. een object doen..

Verwijderd

Topicstarter
ook met haakjes werkt het niet, over dat record, ja ik moet een record gebruiken. Ik gebruik nml een bestand. Een object? Ik ben net begonnen met delphi dus dat snap ik nog niet, ik ken wel Object in de zin van Java, dat heb ik nml een jaar gehad.

Verwijderd

TAdresRec = RECORD

Tja... als je dan het record AdresRec gaat zoeken dan kan ie um niet vinden denk ik zo...

En wat ik geleerd heb is dat je altijd variabelen mee moet geven aan een procedure.. dus bijv
code:
1
2
procedure adressen (vaiabele1 : type;
              vaiabele2 : type);

misschien dat dat helpt... :?

Verwijderd

PROCEDURE Adressen;

PROCEDURE PerAdres;
BEGIN (* PerAdres * )
LeesGeg;
PCVragen
END; (* PerAdres * )

BEGIN (* Adressen * )
WHILE NOT EoF (AdresGeg) DO
PerAdres;
END; (* Adressen * )
Maak daar eens van:
code:
1
2
3
4
5
6
7
8
9
10
11
PROCEDURE Adressen;
BEGIN (* Adressen * )
  WHILE NOT EoF (AdresGeg) DO
  PerAdres;
END; (* Adressen * )

PROCEDURE PerAdres;
BEGIN (* PerAdres * )
  LeesGeg;
  PCVragen
END; (* PerAdres * )
Tja... als je dan het record AdresRec gaat zoeken
in de VAR sectie:
AdresRec : TAdresRec;
Hij maakt gebruik van globale variabelen dus maakt het niet zoveel uit of hij die procedures wat meegeeft of niet. Netjes is anders maar zal wel buiten de scope vd opdracht liggen.

Delphi heeft overigens uitstekende helpfiles, het kan soms even zoeken zijn maar eigenlijk staat alles er wel in.

Goed, de code:
PROCEDURE Etiket;
BEGIN
IF AdresRec.Postcode >= BeginPostc AND AdresRec.Postcode <= EindPostc THEN
begin
Rewrite(UitvoerBestand);
WriteLn(Uitvoerbestand,'Gegevens:');
WriteLn(UitvoerBestand,AdresRec.Voorletters);
[..knip ..]
WriteLn(UitvoerBestand,AdresRec.Woonplaats);
end
END;
Bekijk ook eens hoe dit uitgevoerd wordt. Let op de plaatsing vd. puntkomma's en de begin/end.

En wat doet deze procedure precies?
PROCEDURE PCVragen;
BEGIN

END;
Waar is de procedure Etiket goed voor? wordt nergens aangeroepen..

Waarom noem je de procedure leesreg leesgeg? Er wordt in die procedure niets gelezen, er worden alleen bestanden geopend.

Het is een beetje warrig allemaal. Loop de stappen nog eens door, stap eens door het programma en je ziet dat het niet klopt.

Verwijderd

Topicstarter
ik zei ook dat ik het nog niet af had, maar dat ik niet verder kwam met dat IF THEN gedoe, daar ging het eigenlijk om. Bedankt voor de uitgebreide uitleg. Verder heb ik geen hulp meer nodig.
Pagina: 1