objfpc, delphi & override

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
ushakov
новенький
Сообщения: 51
Зарегистрирован: 18.05.2005 11:15:48
Откуда: Украина, Киев

Сообщение ushakov »

Наследую класс TSQLConnection

Код: Выделить всё

type
TOraConnection = class(TSQLConnection)
    protected
      procedure DoInternalConnect; override;
      procedure DoInternalDisconnect; override;
      function GetHandle: Pointer; override;

      function AllocateCursorHandle: TSQLCursor; override;
      function AllocateTransactionHandle:TSQLHandle; override;

      procedure CloseStatement(cursor : TSQLCursor); override;
      procedure PrepareStatement(cursor: TSQLCursor; ATransaction: TSQLTransaction; buf: string; AParams: TParams); override;
      procedure FreeFldBuffers(cursor : TSQLCursor); override;
      procedure Execute(cursor: TSQLCursor;atransaction:tSQLtransaction; AParams : TParams); override;
      procedure AddFieldDefs(cursor: TSQLCursor;FieldDefs : TfieldDefs); override;
      function Fetch(cursor : TSQLCursor) : boolean; override;
      function LoadField(cursor : TSQLCursor;FieldDef : TfieldDef;buffer : pointer) : boolean; override;
      function GetTransactionHandle(trans : TSQLHandle): pointer; override;
      function Commit(trans : TSQLHandle) : boolean; override;
      function RollBack(trans : TSQLHandle) : boolean; override;
      function StartdbTransaction(trans : TSQLHandle) : boolean; override;
      procedure CommitRetaining(trans : TSQLHandle); override;
      procedure RollBackRetaining(trans : TSQLHandle); override;
      procedure UpdateIndexDefs(var IndexDefs : TIndexDefs;TableName : string); override;
      function GetSchemaInfoSQL(SchemaType : TSchemaType; SchemaObjectName, SchemaPattern : string) : string; override;
      function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override;
    public
      constructor Create(AOwner : TComponent); override;
    published
      property DatabaseName;
      property KeepConnection;
      property LoginPrompt;
      property Params;
      property OnLogin;
  end;




При режиме совместимости delphi все компилируется без ошибок. В режиме objfpc компилятор выдает следующие сообщения:

oraconnection.pas(33,17) Error: There is no method in an ancestor class to be overridden: "TOraConnection.PrepareStatement(TSQLCursor, TSQLTransaction, ShortString, TParams)"
oraconnection.pas(45,17) Error: There is no method in an ancestor class to be overridden: "TOraConnection.UpdateIndexDefs(var TIndexDefs, ShortString)"
oraconnection.pas(46,16) Error: There is no method in an ancestor class to be overridden: "TOraConnection.GetSchemaInfoSQL(TSchemaType, ShortString, ShortString):ShortString"
oraconnection.pas(60,1) Fatal: There were 3 errors compiling module, stopping
oraconnection.pas(60,1) Error: Compilation aborted


В модуле ibconnection.pp используется режим совместимости objfpc, модуль компилируется без ошибок?!
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

Рискну предположить, что ему не нравится вот что:

Код: Выделить всё

PrepareStatement(cursor: TSQLCursor; ATransaction: TSQLTransaction; buf: string; AParams: TParams);


Код: Выделить всё

 (TSQLCursor, TSQLTransaction, ShortString, TParams) 


Ему нужен ShortString, а ты ему String... проверь стоит ли у тебя {$H+}
ushakov
новенький
Сообщения: 51
Зарегистрирован: 18.05.2005 11:15:48
Откуда: Украина, Киев

Сообщение ushakov »

Спасибо - помогла директива {$H+}
Ответить