Librarry Oluşturmam Lazım?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Librarry Oluşturmam Lazım?

Mesaj gönderen ssteeltr »

Arkadaşlar bir proge için ortak bir kütüpane oluşturmaya çalışıyoruz.

Amaç Herkesin ayni değişken ve procedurleri kullanması ve anlaşılır bir kod sistematiğinin oluşturulması

İşe Başladık Ama başlar başlamaz bir sorun oluştu bunu aşamaz isek devam edemeyeceğiz Librarry unit i aşağıda Herhangi bir Formda

Kod: Tümünü seç

Var
 B:TBukum

.
.
.
B.Makina:='B403';

Dediğimde şu meşhur hata
Resim[/img]

oluşuyor kodlar aşagıda belkide tanımlar eksik tam bilemiyom bir componentin kodlarına bakarak oluşturdum.




Kod: Tümünü seç

unit Librarry;


interface

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

//**************** TMAKİNA******************************************************
  TMakina = class(TComponent)
  private

  protected

  public
    Adi:String;
    BesikSayisi:integer;
    Boyu :integer;
    MakaraAdi:String;
    MakaraKapasitesi:Real;
    MinUretimCapi:Real;
    MaxUretimCapi:Real;
    MinAdim:Real;
    MaxAdim:Real;
    MaxDevir:integer;
    DevirCapKatsayisi:Real;
    NetYuklemeSuresi:Real;
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
  published

  End;
//**************** TBUKUM*******************************************************
  TBukum = class(TComponent)
  private

  protected

  public
    BukumPaylari : Array of Real;
    CapKatsayilari : Array of Real;
    AdimKatsayilari : Array of Real;
    Makina:String;
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;

  published


  end;
//**************** TTEL*********************************************************





implementation


{ TBukum }

constructor TBukum.Create(AOwner: TComponent);
begin
  inherited;

end;

destructor TBukum.Destroy;
begin

  inherited;
end;

{ TMakina }

constructor TMakina.Create(AOwner: TComponent);
begin
  inherited;

end;

destructor TMakina.Destroy;
begin

  inherited;
end;

end.
Süleyman Çelik
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
sanırım büküm ü create etmemişsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Mesaj gönderen ssteeltr »

Evet derhal crete ettim

Kod: Tümünü seç

B.Create;
B.Makina:='B403'; 

ve malesef yine aynı hata?

acaba librarry unitinde eksik olan bi tanım varmı? ilk kez böyle bir unit yazıyorum.
Süleyman Çelik
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Kullanım hatası

Mesaj gönderen sabanakman »

Merhabalar;
Malesef yine aynı hata

Kod: Tümünü seç

B.Create;
B.Makina:='B403';
şeklinde kullanmaya çalışmak hatadır.

Kod: Tümünü seç

B:=TBukum.Create;
B.Makina:='B403';
olmalı. Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Mesaj gönderen ssteeltr »

Teşekürler arkadaşlar çoook basitmiş ama bilmeyene çoook zor oluyor.

sorunu hallettim
Süleyman Çelik
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Mesaj gönderen ssteeltr »

Arkadaşlar malesef YENİ BİR SORUN daha çıktı.

Kod: Tümünü seç

B:=TBukum.Create;
B.Makina:='B403';
kısmında TBukum sınıfında değişiklik yaptım

Kod: Tümünü seç

  TBukum = class(TComponent)
  private

  protected

  public
    BukumPaylari : Array of Real;
    CapKatsayilari : Array of Real;
    AdimKatsayilari : Array of Real;
    //Makina:String;
   
    MAKINA : TMAKINA

    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;

  published


  end;

Tbukum de makina değişkenini Tmakina sınıfından türettim

ve şu kodu yazdım

Kod: Tümünü seç

B:=TBukum.Create;
B.Makina.Adi:='B403';

ve yine önceki hatayı verdi sanırım Tmakina Create olmuyor. Ben bir sınıfın içindeki bir değişkeni tanımladığım diğer sınıfı otomatik nasıl create edecem.

TBukum create olunca TMakina otomatik create olmazmı çünkü Tmakina TBukum içinde tanımlandı?



[/quote]
Süleyman Çelik
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Otomatik create olma gibi bişey söz konusu olamaz. TBukum'un içinde makina sadece bir referans değişkenidir. Sen object create ederek bu değişkeni objecte refere etmen gerekir.

TBukum'un Create metoduna, fonksiyonun kapsadığı objectleri create et. Ve gerekiyorsa değişkenlerin ilk değerlerini ver. Ve destroy dada objectleri free et.

Ayrıca mesajlarınızı büyük harfle ve büyük fontlarla yazmanıza gerek yok.

Kolay gelsin
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
arkadaşım sanırım senin library unitinde köklü bir değişiklik yapman lazım.
Tbukum ve Tmakina ları component değilde tip olarak tanımla.
ozaman create etmenede gerek kalmaz.
yok ilerde bunlar için bir bileşen çıkaracağım diyorsan ayrı sen bilirsin ozaman.....

Kod: Tümünü seç

Type
Tmakine=record
  Adi:String;
    BesikSayisi:integer;
    Boyu :integer;
    MakaraAdi:String; 
......
end;
TBukum=Record
    BukumPaylari : Array of Real;
    CapKatsayilari : Array of Real;
    AdimKatsayilari : Array of Real; 
    .......
    Makine=TMakine;
    .....
end;
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Merhaba; @undefined bahsetmiş zaten bunu kod olarak yazarsak:
Önce

Kod: Tümünü seç

constructor TBukum.Create(AOwner: TComponent);
begin
  inherited;
  MAKINA := TMAKINA.Create;
end;

destructor TBukum.Destroy;
begin
  MAKINA.Free;
  inherited;
end;
şeklinde tanımlaman gerekirdi. Bir nesneyi kullanmak için onu muhakkak oluşturman gerekir ve silmeyi de ihmal etmemelisin, aklında bulunsun. Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ssteeltr
Üye
Mesajlar: 135
Kayıt: 08 Nis 2005 03:41
Konum: Kayseri

Mesaj gönderen ssteeltr »

İlginize teşekkürler arkadaşlar.

Sorun sayenizde Çözüldü...................
Süleyman Çelik
Cevapla