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 DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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