[Delphi] Zelf procedures maken

Pagina: 1
Acties:

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Jaja, ik weet het, ik ben een beginner :)

Mijn probleem is dit. Via event-handler worden procedures automatisch aangemaakt, en kun je zelf code er in zetten. Maar nu wil ik een aantal functies en procedures maken, die ik dan wil aanroepen IN die code, dus niet via een event-handler. Maar als ik een procedure aanmaak, en bijvoorbeeld Edit1.Text wil veranderen, zegt 'ie dat ie die niet kan vinden. Wat doe ik fout ?

Mother, will they like this song?


  • mjax
  • Registratie: September 2000
  • Laatst online: 02-09 04:48
Je moet dan je functies als members van het bijbehorende TForm object aanmaken, dus bijvoorbeeld:
code:
1
2
3
4
procedure TForm1.TestProc;
begin
  Edit1.Text := 'hallo';
end;

i.p.v.
code:
1
2
3
4
procedure TestProc;
begin
  Edit1.Text := 'hallo';
end;

Vergeet je niet de functie ook te declareren in de private/public section van het form?

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:07
Post eens wat code.

Koop misschien ook een boek over Delphi?

https://fgheysels.github.io/


Verwijderd

Je moet je procedures ook declareren bij je interface volgens mij. Dan kan je 'procedure *Naam*;' bij je private of public declarations zetten. Volgens mij vind die hem dan wel als je hem probeert aan te roepen.

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit DivxAppUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
    procedure Form1.ViewDivx(i:Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses DivxAppUnit;

const GenreArray : Array[1..13] of String=('//Unknown','//','Action','Comedy','Horror','Adventure','Drama',
'Thriller','Fantasy','Animation','Sci-Fi','Mystery','Crime');
    TypeArray  : Array[1..4] of String=('DVDivX','MPEG','VCD','Screener/Cam');
type  DivxRecord = Record
               Title:String[255];
               Width:LongInt;
               Height:LongInt;
               Year:LongInt;
               IMDBCode:LongInt;
               Genre:Array [1..5] of Integer;
               DivxType:Integer;
               Duration:LongInt;
               FileSize:LongInt;
               Comments:String[50];
             end;
    TDivxArray = Array[1..500] of DivxRecord;

var DivxArray: TDivxArray;

{$R *.DFM}

procedure Form1.ViewDivx(i:Integer);
var Temp:String;
begin
  Temp:=DivxArray[i].Title;
  While Temp[Length(Temp)]=' ' do Delete(Temp,Length(Temp),1);
  Edit1.Text:=Temp;
  Edit2.Text:=IntToStr(DivxArray[i].Width)+'x'+IntToStr(DivxArray[1].Height);
  Edit3.Text:=IntToStr(DivxArray[i].IMDBCode);
  Edit4.Text:=IntToStr(DivxArray[i].FileSize);
end;

procedure TForm1.FormCreate(Sender: TObject);
var DivxBinary:File of TDivxArray;
    Temp:String;
begin
AssignFile(DivxBinary,'e:\divx.dat');
Reset(DivxBinary);
Read(DivxBinary,DivxArray);


end;

end.

Undeclared identifier 'Form1'

Het form heet wel Form1.

De procedure ViewDivx is het probleem, die wil niet werken.

Mother, will they like this song?


  • mjax
  • Registratie: September 2000
  • Laatst online: 02-09 04:48
code:
1
2
3
4
5
6
...
private
    { Private declarations }
    procedure Form1.ViewDivx(i:Integer);
  public
...
Hier moet die Form1. dus ff weggehaald worden en dat doet ie het!

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:07
Op vrijdag 22 maart 2002 17:29 schreef TheLunatic het volgende:
code:
1
2
3
4
5
6
unit DivxAppUnit;


  private
    { Private declarations }
    procedure Form1.ViewDivx(i:Integer);
moet worden
code:
1
2
private
  ViewDivx(i : Integer);

Post in het vervolg misschien enkel de relevante code?

Edit : te laat.

https://fgheysels.github.io/


Verwijderd

Probeer es zonder 'Form1.' of probeer 'DivxAppUnit.'*.

Zo heet je unit namelijk.

[Edit]Iets te laat :)

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Dit werkt ! Alleen moest er bij de procedure zelf TForm1 staan ipv Form1, en dan is het opgelost ! TNX !

Mother, will they like this song?


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
damn, wel erg te laat zie ik :P
code:
1
    procedure Form1.ViewDivx(i:Integer);

veranderen in
code:
1
    procedure ViewDivx(i:Integer);


code:
1
uses DivxAppUnit;

weghalen, je verwijst dan in je unit naar je eigen unit, kan niet goed gaan lijkt me.

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Topicstarter
Op vrijdag 22 maart 2002 17:35 schreef ArieProductions het volgende:
damn, wel erg te laat zie ik :P
code:
1
    procedure Form1.ViewDivx(i:Integer);

veranderen in
code:
1
    procedure ViewDivx(i:Integer);


code:
1
uses DivxAppUnit;

weghalen, je verwijst dan in je unit naar je eigen unit, kan niet goed gaan lijkt me.
Grappig dat delphi die stukje code er zelf bij heeft gezet :)

Mother, will they like this song?

Pagina: 1