Avatar billede mbsnet Nybegynder
27. juni 2007 - 18:56 Der er 2 kommentarer og
1 løsning

Flyt eks. stringlist til ny unit med create og destroy events

Hej

Jeg prøver på at flytte udvalgt kode ind i nye separate .pas filer (units). Det virker egentlig meget godt, men jeg møder tit det samme problem med for eksempel stringlists- hvis jeg gerne vil .create dem i starten, samt freeAndNil dem i slutningen, og således have dem "åbne" mens programmet kører. Er vant til at lave formCreate + formDestroy events til dette, samt at sætte stringlist variablerne under private eller public på formen. (dette fungerer fint)

Kan det lade sig gøre at oprette disse events i den nye unit, så man ikke behøver at deklarere noget, udover at tilføje uses denNyeUnit.pas på formen. ??    /  eller skal jeg måske lære en ny måde at gøre det på ?

Samtidig vil jeg gerne spørge om man kan gøre det samme i projektets pas (hvis man ikke bruger forms)

//mvh mbs
Avatar billede hrc Mester
27. juni 2007 - 23:27 #1
Du kan bruge initialization og finalization i en unit til at oprette og frigive globale objekter.

unit MyUnit;

interface

type
  TMyClass = class
  private
  public
  end;

var
  MyGlobalClass : TMyClass;

implementation

// Kode her

initialization
  MyGlobalClass := TMyClass.Create;

finalization
  MyGlobalClass.Free;

end.
Avatar billede hrc Mester
27. juni 2007 - 23:35 #2
Med "projektets pas" antager jeg du tænker på dpr-filen som er "mother of all files". Det burde være muligt at bruge initialization og finalization i "projektets pas", men det giver ingen mening.

Generelt skal initialization og finalization bruges med varsomhed da objekters "liv" skal være så kort som muligt.

Det er generelt forkert programmering hvis man har flere objekter levende fra programmets start til slut. Eneste steder jeg bruger dem er mine TSettings- og TFormCache-klasser. Førstnævnte indeholder programmernes indstillinger mens den sidste er den cache der gemmer formenes dimensioner og positioner (og komponenternes ditto). Indstillinger er altid gode at kunne tilgå og en cache kører naturligt i hele programmets levetid.
Avatar billede mbsnet Nybegynder
28. juni 2007 - 01:34 #3
Nice! Det er bare et rigtig godt svar.
God måde det virker på.
Takker.

Mht. til det med .dpr filen, så er det jo klart nok det du siger, når programmet alligevel ikke fortsætter med at køre :-)

//mbs
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester