Avatar billede morten_s Nybegynder
16. august 2002 - 08:45 Der er 3 kommentarer og
1 løsning

Unit (Class) uden form

For at strukturer min kode lidt bedre ønsker jeg at flytte noget kode over i en unit uden form,

min grundkonstruktion ser ud som vist nedenfor

unit uCom;

interface

uses
  Dialogs;

type
  TCommunication = class (TObject)
  private

  public
    Procedure Hesten(hest : String);

  end;


implementation

{ TCommunication }


procedure TCommunication.Hesten(hest: String);
begin
  ShowMessage(hest);
end;

end.


Når jeg kalder hesten fra min hovedform på følgende måde:


procedure TfrmMain.Button1Click(Sender: TObject);
begin
  TCommunication.hesten('hej');
end;

Får jeg fejlen:

This form of methode call only allowed for class methods

HVAD GÅR GALT ?
Avatar billede doc404 Novice
16. august 2002 - 10:03 #1
du skal først definerer en variable af typen TCommunication og så skal du create dit object

procedure TfrmMain.Button1Click(Sender: TObject);
var
  MyCom : TCommunication;
begin
  MyCom := TCommunication.Create;
  MyCom.hesten('hej');
  MyCOm.Free;
end;

Husk på, at når du definiere en object type er det "bare" en skabelon
Avatar billede morten_s Nybegynder
16. august 2002 - 10:07 #2
Også når jeg har uniten med i min Uses liste på hovedformen ?
Avatar billede badass Nybegynder
16. august 2002 - 10:07 #3
Du kan også erklære funktionen som en 'class procedure', hvilket vil bevirke at du kan kalde funktionen som du gør nu

Eks.
TCommunication = class (TObject)
private
public
  Class Procedure Hesten(hest : String);
end;

Class procedure TCommunication.Hesten(hest: String);
begin
  ShowMessage(hest);
end;

// BadAss
Avatar billede morten_s Nybegynder
16. august 2002 - 10:10 #4
Den skal jo bare oprettes i under uniten, tak for hjælpen

unit uCom;

interface

uses
  Dialogs;

type
  TCommunication = class (TObject)
  private

  public
    Procedure Hesten(hest : String);

  end;

var
  Com: TCommunication; <---HER ;-)))))

implementation


kaldet bliver så

procedure TfrmFalcoData.Button6Click(Sender: TObject);
begin
  Com.hesten('hej');
end;

{ TCommunication }
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