25. juli 2006 - 19:46Der er
4 kommentarer og 1 løsning
startprocedure initialisering
Hej
Hvordan gør man sådan, at når mit program åbnes, udføres en bestemt procedure. jeg har prøvet med initialization, men det virker ikke. hvordan bør initialization-delen bruges?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Hvis du har forme (altså en almindelig windows applikation) kan du bruge OnCreate på din mainform.
Alternativt kan du fortsætte med at bruge "initialization" og "finalization". Det der går galt ved dig er måske at de er placeret i en form/datamodule der oprettes efter din mainform. Med <shift-ctrl-f11> kan du gå ind og se/ændre rækkefølgen på hvordan de forskellige filer i projektet udføres. Rækkefølgen ændres vha. drag-n-drop.
Udfra koden du vedhæftede ser det ud til at "initialization" sidder i din form1-unit og det er ikke korrekt fremgangsmåde. Her skal du bruge formens OnCreate.
hvor skal man så placere initialization? nu har jeg selvfølgelig aldrig lavet et program med flere filer end dem, som automatisk laves ved et projekt, men jeg vil da gerne vide det, hvis du gider svare
Et sted hvor jeg synes jeg har nytte af "initialization" og "finalization" er ved mine registreringsdatabaseobjekter (de objekter der indeholder mine programmers indstillinger). Den plejer jeg at hente ind når programmet åbnes og nogle gange skriver jeg dem igen via "finalization":
interface
type RegData = class private fDit, fDat : string; public procedure LoadFromRegistry; procedure SaveToRegistry; property dit : string read fDit write fDit; property dat : string read fDat write fDat; end;
var RegData : TRegData; // En global variabel (jo, jeg laver dem også!)
implementation
uses Registry;
const RegKey = '\Software\MyFirm\MyApp';
procedure TRegData.LoadFromRegistry; begin with TRegistry.Create do try fDit := ''; fDat := ''; if ReadKeyReadOnly(RegKey) then begin fDit := ReadString('dit'); fDat := ReadString('dat'); end; finally Free; end; end;
procedure TRegData.SaveToRegistry; begin with TRegistry.Create do try if ReadKey(RegKey,true) then begin WriteString('dit',fDit); WriteString('dat',fDat); end; finally Free; end; end;
// Lidt omstændig forklaring og det blev mere et eksempel på hvordan jeg bruger registreringsdatabasen - men det er altså stort set hvad jeg bruger "initialization" og "finalization" til. Folk der laver komponenter bruger dem sikkert noget mere.
Jeg bruger dem aldrig sammen med forme/datamoduler da de har OnCreate OnDestroy til det. I en unit kan jeg finde på det, såsom i eksemplet ovenfor. Jeg lader det blive et unit der har al nødvendig logik indkapslet i filen så det ikke er afhængig af udfrakommende data såsom, at andre forme er blevet oprettet eller lignende.
Hermed et svar.
Synes godt om
Ny brugerNybegynder
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.