EClassNotFound Hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

EClassNotFound Hatası

Mesaj gönderen mahsuni »

Kod: Tümünü seç

unit UTest;

interface
uses  classes, windows,kbmMemTable,Data.DB, sysutils;

Type
  TMcKordinat=class(TkbmMemTable)
  public
    constructor Create(AOwner: TComponent); override;
  published
end;

implementation

constructor TMcKordinat.Create(AOwner: TComponent);
var i:integer;
begin
  inherited Create(AOwner);
  FieldDefs.Add('KADI',ftLargeInt,0,True);
  FieldDefs.Add('X',ftFloat,0,True);
  FieldDefs.Add('Y',ftFloat,0,True);
  for I := 0 to FieldDefs.Count - 1 do  FieldDefs[i].CreateField(aowner);
end;

end.
Yukarıda örneğini verdiğim basit bir bileşen hazırladım.
Hiçbir hata vermeden derleniyor.
Fakat bu bileşeni bir form üzerine koyup çalıştırdığım zaman

Kod: Tümünü seç

Exception EClassNotFound in module Project1.exe at 000AC43E.
Class TLargeintField not found.
şeklinde hata veriyor.
Ben nerde hata yapıyorum?
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: EClassNotFound Hatası

Mesaj gönderen freeman35 »

FieldDefs.CreateField(aowner);
AOwner ın form burada, olması hereken senin memtable ın.
memtable la uğraşmak yerine ki başkasının classı, gereksiz bir sürü code da yükleniyor. Bir integer, iki float sayın var. bunları record tipine çevir ve dinamik bir array de tut. ekleme silme sık olacaksa bu record ları TList te tut. Stringlist dahi olabilir.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: EClassNotFound Hatası

Mesaj gönderen mahsuni »

Sayın Freman35 cevabınız için tşk ederim.

Kod: Tümünü seç

constructor TMcKordinat.Create(AOwner: TComponent);
var i:integer;
begin
  inherited Create(AOwner);
  FieldDefs.Add('KADI',ftLargeInt,0,True);
  FieldDefs.Add('X',ftFloat,0,True);
  FieldDefs.Add('Y',ftFloat,0,True);
  for I := 0 to FieldDefs.Count - 1 do  FieldDefs[i].CreateField(aowner);
end;
eğer

Kod: Tümünü seç

CreateField(aowner)
olursa tüm field lar Field Editore ekleniyor ama çalışma anında hata veriyor.
eğer

Kod: Tümünü seç

CreateField(self)
olursa hiç bir field editöre eklenmiyor.

İstediğim tanımlamış olduğum tüm fieldlar Fields Editore eklensin
mahsuni
Üye
Mesajlar: 99
Kayıt: 21 Haz 2003 01:09
Konum: Ankara-Mamak

Re: EClassNotFound Hatası

Mesaj gönderen mahsuni »

Eğer bileşen adı olmazsa bu tür hatalar veriyormuş

Örneğin
Forma 1 adet label koyup adını silerseniz.

Kod: Tümünü seç

raised exception class EClassNotFound with message 'Class TLabel not found'.
hatası alırsınız.

Kod: Tümünü seç

  FieldDefs.Add('KADI',ftInteger,0,True);
  FieldDefs.Add('X',ftFloat,0,False);
  FieldDefs.Add('Y',ftFloat,0,False);
  for I := 0 to FieldDefs.Count - 1 do FieldDefs[I].CreateField(self.owner);//Field Create ediliyor
  for I := 0 to FieldDefs.Count - 1 do Fields[I].Name:=FieldDefs[I].Name;//Isim veriliyor
Şeklindeki kodlar çalısıyor.
Ancak (her bir field için)

Kod: Tümünü seç

 Dubicate Field Name
hatası veriyor.
Oysaki hiçbir field çift değil.
Bu sorunu aşarım?
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: EClassNotFound Hatası

Mesaj gönderen freeman35 »

Fikir versin diye ekledim, kaynak http://delphiexamples.com/databases/addfield.html
bu linkte yani delphi nin help inde göründüğü üzere
https://docwiki.embarcadero.com/Librari ... reateField
CreateField bir function ve result olarak oluşturduğu field ı döndürüyor. yani arka arkaya döngülere gerek yok

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  Field: TField;
  i: Integer;
begin
  Table1.Active:=False;
  for i:=0 to Table1.FieldDefs.Count-1 do
    Field:=Table1.FieldDefs[i].CreateField(Table1);

  Field:=TStringField.Create(Table1);
  with Field do
  begin
    FieldName:='New Field';
    Calculated:=True;
    DataSet:=Table1;
  end;
  Table1.Active:=True;
end;
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla