Консольное приложение
От: AHgpeu Украина  
Дата: 09.07.07 07:02
Оценка:
Д6
Пишу консольное приложение...
Использую все стандартные функции...В общем все как обычно только без форм, диалогов, сообщений..
но в самом начале приложение почему-то вылетает на строке создания класса, типа

tmpName := TMyClass.Create;

Почему?*
Имеет ли значение какой класс я создаю?*
Re: Консольное приложение
От: OdesitVadim Украина  
Дата: 09.07.07 07:24
Оценка:
Здравствуйте, AHgpeu, Вы писали:

AH>Д6

AH>Пишу консольное приложение...
AH>Использую все стандартные функции...В общем все как обычно только без форм, диалогов, сообщений..
AH>но в самом начале приложение почему-то вылетает на строке создания класса, типа
А описание ошибки?
AH>
AH>tmpName := TMyClass.Create;
AH>

AH>Почему?*
А может класс абстрактный?
AH>Имеет ли значение какой класс я создаю?*
Конечно.
Если бы вы написали имя класса, наверно легче было бы. Не TStrings ли вы создаёте?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Консольное приложение
От: AHgpeu Украина  
Дата: 09.07.07 07:34
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, AHgpeu, Вы писали:


AH>>Д6

AH>>Пишу консольное приложение...
AH>>Использую все стандартные функции...В общем все как обычно только без форм, диалогов, сообщений..
AH>>но в самом начале приложение почему-то вылетает на строке создания класса, типа
OV>А описание ошибки?
AH>>
AH>>tmpName := TMyClass.Create;
AH>>

AH>>Почему?*
OV>А может класс абстрактный?
AH>>Имеет ли значение какой класс я создаю?*
OV>Конечно.
OV>Если бы вы написали имя класса, наверно легче было бы. Не TStrings ли вы создаёте?

Привожу область кода:
constructor TMSExpImpTest.Create;
begin
  inherited;

  DBTestList := TObjectList.Create;
end;

procedure TMSExportImportGen.AfterConstruction;
begin
  inherited;

  TempDirectory := IncludeTrailingPathDelimiter(CfgPCMS.FCfgExp_Imp.ExpImpPath);//ошибка здесь
end;


ОШИБКА выглядит так:
Exception EAccessViolation in module MyProject.exe at 00596EA3.
Access violation at adress 00996EA3 in module 'MyProject.exe'
Read of adress 0000001C
Re[3]: Консольное приложение
От: OdesitVadim Украина  
Дата: 09.07.07 07:40
Оценка:
Здравствуйте, AHgpeu, Вы писали:

AH>Привожу область кода:

AH>

AH>procedure TMSExportImportGen.AfterConstruction;
AH>begin
AH>  inherited;

AH>  TempDirectory := IncludeTrailingPathDelimiter(CfgPCMS.FCfgExp_Imp.ExpImpPath);//ошибка здесь
AH>end;
AH>


AH>ОШИБКА выглядит так:

AH>
AH>Exception EAccessViolation in module MyProject.exe at 00596EA3.
AH>Access violation at adress 00996EA3 in module 'MyProject.exe'
AH>Read of adress 0000001C
AH>

Делфи правильно вас обругала. CfgPCMS я так полагаю объект? А он на данный момент создан? Так как ошибка очень похожа на это.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Консольное приложение
От: AHgpeu Украина  
Дата: 09.07.07 08:57
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, AHgpeu, Вы писали:


AH>>Привожу область кода:

AH>>

AH>>procedure TMSExportImportGen.AfterConstruction;
AH>>begin
AH>>  inherited;

AH>>  TempDirectory := IncludeTrailingPathDelimiter(CfgPCMS.FCfgExp_Imp.ExpImpPath);//ошибка здесь
AH>>end;
AH>>


AH>>ОШИБКА выглядит так:

AH>>
AH>>Exception EAccessViolation in module MyProject.exe at 00596EA3.
AH>>Access violation at adress 00996EA3 in module 'MyProject.exe'
AH>>Read of adress 0000001C
AH>>

OV>Делфи правильно вас обругала. CfgPCMS я так полагаю объект? А он на данный момент создан? Так как ошибка очень похожа на это.

ПОпробую представить код несколько с другой стороны...Может так легче будет разобраться...

type 
  TMSExportImportGen = class(TObject)
  //..........
  end;

  TMSExpImpTest = class(TMSExportImportGen)
  //..........
  end;

  TTestImport = class(TMSExpImpTest)
  //..........
  end;

var
  tmpTestImp: TTestImport;
begin
  try
    tmpTestImp := TTestImport.Create;
                             //*********************Входим в TTestImport.Create (Debug F7)
                                constructor TMSExpImpTest.Create;
                                begin
                                  inherited;

                                  DBTestList := TObjectList.Create;
                                end;

                                procedure TMSExportImportGen.AfterConstruction;
                                begin
                                inherited;

                                TempDirectory := IncludeTrailingPathDelimiter(CfgPCMS.FCfgExp_Imp.ExpImpPath);//!!!!!!!!!!!!!!ОШИБКА!!!!!!!!!
                                end;  
  finally
    tmpTestImp.Free;
  end;
end.
Re[5]: Консольное приложение
От: OdesitVadim Украина  
Дата: 09.07.07 09:06
Оценка:
Здравствуйте, AHgpeu, Вы писали:


AH>ПОпробую представить код несколько с другой стороны...Может так легче будет разобраться...


[scip]
Ваше уточнение ничего не дало. я же спрашиваю, где берётся переменная CfgPCMS.FCfgExp_Imp.ExpImpPath???
Что такое CfgPCMS?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Консольное приложение
От: AHgpeu Украина  
Дата: 09.07.07 10:58
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, AHgpeu, Вы писали:



AH>>ПОпробую представить код несколько с другой стороны...Может так легче будет разобраться...


OV>[scip]

OV>Ваше уточнение ничего не дало. я же спрашиваю, где берётся переменная CfgPCMS.FCfgExp_Imp.ExpImpPath???
OV>Что такое CfgPCMS?

Я в своей программе использую модули не мной написаны, поэтому тоже не очень пока разбираюсь что к чему... (с разработчиком проконсультироваться пока нет возможности) Все представленое ниже-то, что я использую

type
  TCfgMSPC = class(TCfgPC)
...........
published
    property FCfgExp_Imp:       TCfgExp_Imp         read FFCfgExp_Imp       write FFCfgExp_Imp;
  .....
  end;

  TCfgExp_Imp = class(TAlStreamer)
  .....
published
    property ExpImpPath: String read FExpImpPath write FExpImpPath;
...........
  end;
  
  var
    CfgPCMS: TCfgMSPC;
Re[7]: Консольное приложение
От: OdesitVadim Украина  
Дата: 09.07.07 11:33
Оценка: 2 (1)
Здравствуйте, AHgpeu:
Перед вызовом вашего метода, который генерит ошибку должен вызываться код такого вида


    CfgPCMS:=TCfgMSPC.create;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Консольное приложение
От: AHgpeu Украина  
Дата: 09.07.07 11:55
Оценка:
Здравствуйте, OdesitVadim, Вы писали:

OV>Здравствуйте, AHgpeu:

OV>Перед вызовом вашего метода, который генерит ошибку должен вызываться код такого вида

OV>

OV>    CfgPCMS:=TCfgMSPC.create;
OV>


Верно!
Только
   CfgPCMS:=TCfgMSPC.create;
не работает.
Докопался глубже..нашел чего создать надо.
Спасибо за наводящий ответ))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.