09. december 2003 - 21:53
Der er
7 kommentarer og 2 løsninger
Ny i Class
Hvorfor virker det her ikke? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type adressebog = class navn,tlf : string; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; adressebog1: array[1..10000] of adressebog; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin adressebog1[0].navn := 'jens'; adressebog1[0].tlf := '47 33 88 99'; end; end.
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
Slettet bruger
09. december 2003 - 22:03
#1
Enten skal du bruge record: type adressebog = record navn,tlf : string; end; eller skal du "oprette" klassen før: procedure TForm1.FormCreate(Sender: TObject); begin adressebog1 := adressebog.Create; adressebog1[0].navn := 'jens'; adressebog1[0].tlf := '47 33 88 99'; end;
09. december 2003 - 22:05
#2
Det virker ikke, fordi du ikke har skabt nogle objekter af typen adressebog- og fordi du får indexfejl da arrayet er deklareret fra 1 og ikke 0. I dit eksempel vil det virke, hvis du f.eks. skriver: if adressebog[0]=NIL then adressebog[0] := adressebog.create; før du tildeler felterne værdi.
09. december 2003 - 22:10
#3
Det virker ikke... unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type adressebog = class navn,tlf : string; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; adressebog1: array[1..10000] of adressebog; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin adressebog1 := adressebog.Create; adressebog1[0].navn := 'jens'; adressebog1[0].tlf := '47 33 88 99'; end; end.
09. december 2003 - 22:13
#4
[Error] Unit1.pas(34): Array type required unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type adressebog = class navn,tlf : string; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; adressebog1: array[1..10000] of adressebog; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin if adressebog[0]=NIL then adressebog[0] := adressebog.create; adressebog1[0].navn := 'jens'; adressebog1[0].tlf := '47 33 88 99'; end; end.
Slettet bruger
09. december 2003 - 22:15
#5
Det er fordi du starter din array ved 1, altså det skal se sådan ud: if adressebog1[1] =NIL then adressebog1[1] := adressebog.create; adressebog1[1].navn := 'jens'; adressebog1[1].tlf := '47 33 88 99';
Slettet bruger
09. december 2003 - 22:16
#6
Ellers kan du også gøre det med record, hvis det kun er navn og tlf der skal være i klassen, så slipper du for at "oprette" klassen.
09. december 2003 - 22:32
#7
Stadigvæk [Error] Unit1.pas(34): Array type required unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type adressebog = class navn,tlf : string; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; adressebog1: array[1..10000] of adressebog; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin if adressebog[1]=NIL then adressebog[1] := adressebog.create; adressebog1[1].navn := 'jens'; adressebog1[1].tlf := '47 33 88 99'; end; end. Prøver lige den anden løsning
Slettet bruger
09. december 2003 - 22:35
#8
Du har skrevet adressebog istedet for adressebog1 nogle steder... Det her virker ved mig :): if adressebog1[1]=NIL then adressebog1[1] := adressebog.create; adressebog1[1].navn := 'jens'; adressebog1[1].tlf := '47 33 88 99';
09. december 2003 - 22:49
#9
30 til hver... tak for kampen... *smiler*
Kurser inden for grundlæggende programmering