Fonksiyon yada procedurlerin önde yada arkada oluşu

Başlatan bunalmis, 04 Ocak 2010, 12:49:44

z

Delphide işlenen satır kendinden sonra yazılmış fonksiyonu çağırıyorsa hata veriyor.

Fonksiyonların yerlerini değiştirmeden bu hatayı nasıl kaldırırım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Selamlar,

Bu şekilde olursa çalışmaz;
function ustteki : Boolean;
Begin
  .
  a := alttaki;
  .
  .
End;

function alttaki : integer;
Begin
  .
  .
End;



Ama böyle yaparsanız çalışır :
type
TForm1 = Class(TForm)
function ustteki : Boolean;
function alttaki : Integer;
private
public
end;

implementation

function TForm1.ustteki : Boolean;
Begin
  .
  a := alttaki;
  .
  .
End;

function TForm1.alttaki : integer;
Begin
  .
  .
End;

z

Fonk1, fonk2 ve fonk3 adinda fonksiyonlarimin siralamasi ile ugrasmayayim diye aynen dediginiz gibi tanimladim.

Ancak programi run etmeye kalktigimda

Field Form1. fonk1 does not have a corresponding component. Remove the declaration?

der.

Neden boyle oldu?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

fonsksiyonları unit'in başındaki Form class'ının altınada yazmanız gerekiyor.

type 
TForm1 = Class(TForm) 
function ustteki : Boolean; 
function alttaki : Integer; 
private 
public 
end;

z

Deneme amacli asagidaki kodu yazdim.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  function fonk1:boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function fonk1():boolean;
begin
   form1.caption:='sdsdsd';
end;

end.


Unit1.pas(11): Unsatisfied forward or external declaration: 'TForm1.fonk1'

Hatasi aliyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli

Tamam şimdi oldu. Fonsiyonun ilk satırını şu şekilde değiştirin, düzelecektir.
Bu şekilde o fonksiyonun TForm1 class'ına ait olduğunu belirtiyoruz.

function TForm1.fonk1():boolean; 
begin 
   form1.caption:='sdsdsd'; 
end;

z

Cok sagolasin.

Bu siralama sorunu yillardir cozmem gereken fakat hep erteledigim bir konuydu. Derleme esnasinda fonksiyonlari asagi yukari gezdirmekten  canim cikiyordu. Sayende kurtuldum artik.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sekoli