Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Очень нужна помощь. Создание компоненты.!!!   Найти похожие ветки 

 
siriusP   (2004-04-29 12:33) [0]

Есть базовый класс:

type
 TBase = class(TComponent)
 protected
   FDataSet: TClientDataSet;
 public
   constructor Create(AOwner:TComponent);virtual;
   destructor Destroy; override;
 public
   function GetValue(aName: Ansistring): Ansistring; virtual;abstract;
   procedure ClearDataSet(); virtual;
 public
   property DataSet: TClientDataSet read FDataSet write FDataSet;
 end;

implementation

 uses DB, SysUtils;

constructor TBase.Create(AOwner:TComponent);
begin
 inherited Create(AOwner);
 FDataSet:= TClientDataSet.Create;
 FDataSet.FieldDefs.Add("Name", ftString, 150, true);
 FDataSet.FieldDefs.Add("Value", ftString, 8000, false);
 FDataSet.Open;
 if assigned(FDataSet) then TEServerQuery(FDataSet).CreateDataSet;
end;

destructor TBase.Destroy;
begin
 if assigned(FDataSet) then FreeAndNil(FDataSet);
 inherited Destroy;
end;

procedure TBase.ClearCash();
begin
 while not FDataSet.Eof do begin
   FDataSet.Edit;
   FDataSet.Delete;
 end;
end;

И есть наследник:
type
 TClient = class(TBase)
 public
   constructor Create(AOwner:TComponent); override;
   destructor Destroy; override;
   function GetValгу(aName: Ansistring): Ansistring;override;
 end;

procedure Register;

constructor TClient.Create(AOwner:TComponent);
begin
 inherited Create(AOwner);
end;

destructor TEClientVariable.Destroy;
begin
 inherited Destroy;
end;

function TClient.GetValue(aName: Ansistring): Ansistring;
 var tmpSql: Ansistring;
     tmpVar: Variant;
begin
 tmpVar:= FDataSet.Lookup("Name", aName, "Value"); // Вот здесь Access violation, т.к. FDataSet:= nil не знаю почему
 if not VarIsNull(tmpVar) then begin
   result:= VarToStr(tmpVar);
   exit;
 end;
 ...
 
end;

procedure Register;
begin
...(..., [TClient]);
end;


 
Ega23 ©   (2004-04-29 12:44) [1]

Ну и????


 
Григорьев Антон   (2004-04-29 12:47) [2]

А компилятор что, никаких предупреждений не выдаёт? О том, что конструктор Create перекрывает созданный в базовом классе Create? Надо заменить в его объявлении virtual на override, а то получается, что компилятор не воспринимает ваш конструктор как замену имеющемуся и вызывает старый, в котором DataSet не создаётся.


 
Skier ©   (2004-04-29 12:54) [3]

type
TBase = class(TComponent)
protected
  FDataSet: TClientDataSet;
public
  constructor Create(AOwner:TComponent);override;
  destructor Destroy; override;
public
  function GetValue(aName: String): String; virtual;abstract;
  procedure ClearDataSet; virtual;
public
  property DataSet: TClientDataSet read FDataSet write FDataSet;
end;


 
siriusP   (2004-04-29 13:06) [4]

Благодарю. Спасибо.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.051 c
11-1068963605
Ciber SLasH
2003-11-16 09:20
2004.05.16
Какие есть компоненты для загрузки JPG из ресурсов


14-1082624535
Иногда они возвращаются
2004-04-22 13:02
2004.05.16
Любая тема ветки.


1-1083432904
Leon
2004-05-01 21:35
2004.05.16
PAGE_FAULT в NT


3-1082370904
Женя
2004-04-19 14:35
2004.05.16
однофайловая однопользовательская база данных


14-1082881178
Piter
2004-04-25 12:19
2004.05.16
Почему TCP/IP?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский