Just as I expected, Lasse M <postmandper@postman.dk> came up with
this:
>Jeg sidder og roder med et program, hvor jeg har omkring 10 procedure
>der stort set gør det samme. Den eneste forskel er det objekt der bliver
>created/free'd. Ojektet nedstammer, i alle procedurene, fra den samme
>klasse, som hedder TlmReport. Da koden er identisk ville jeg flytte den
>over i sin egen procedure, for at spare lidt plads, som jeg erklærede
>sådan her:
>
>procedure AddReports(var Report: TlmReport; var Lst: TList);
Der skal stå *præcis* det samme i både interface og implementation
delen af din unit. Altså: Sørg for at alle parametre er af de samme
typer og at alle "var", "out", "const" osv. ting foran parametrene er
der både i interface og implementation.
>Den kalder jeg ved at sige AddReports(Report, Lst); hvor Report er af
>typen TlmReportXXX, men det giver den her fejl [Error]
>MainForm.pas(2057): Types of actual and formal var parameters must be
>identical. Hvorfor kan man ikke gøre det på den måde? Og hvordan kan jeg
>gøre det uden at skulle lave en procedure for hver enkelt klasse?
Måske ville det være smartere at deklarere proceduren som en metode i
(T)TimeReport objektet (husk nu, objekt-typer skal altid starte med
T!), så er Report parametren automatisk kommet med (Self), og hvis du
ikke ligefrem skal create/destroy'e den liste som Lst parametren peger
på (en variabel der indeholder et objekt er faktisk bare en pointer),
så er der ingen grund til at sende Lst parametren som en "var"
parameter, den kunne lige så godt være en "const" parameter.
Niels (aka. niLLer)
--
e-mail: nmartin at iname dot com ICQ UIN: 50187323
http://www.niller.f2s.com/ - niLLer's pages (My programs, in English)
http://whitehat.dk/g4s/ - The G4S Page (Personlig side, på dansk)
-- No longer Windozed!