Avatar billede jgthb Nybegynder
25. juli 2006 - 19:46 Der 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?

sætningen lyder:
FindAll('data\hej*.txt',faAnyFile,form1.memo4.lines);
Avatar billede hrc Mester
25. juli 2006 - 20:23 #1
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.
Avatar billede hrc Mester
25. juli 2006 - 20:24 #2
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.
Avatar billede jgthb Nybegynder
25. juli 2006 - 20:31 #3
tak. du lægger bare et svar.

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
Avatar billede hrc Mester
25. juli 2006 - 20:37 #4
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;

initialization
  RegData := TRegData.Create;
  RegData.LoadFromRegistry;

finalization
  RegData.SaveToRegistry;
  RegData.Free;

// 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.
Avatar billede hrc Mester
25. juli 2006 - 20:43 #5
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.
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