Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как правильно вставить декларацию процедуры? [D7, XP]


vegarulez ©   (2011-06-24 21:32:00) 

Привет всем мастерам.
Подскажите как правильно вставить кусок кода вот отсюда:
http://ruminatedrumblings.blogspot.com/2008/07/indy-and-https-post.html
для логирования idHttp

Я вставляю - компилятор ругается:

[Error] Main.pas(161): Declaration of 'LogReceivedData' differs from previous declaration
[Error] Main.pas(162): Declaration of 'LogSentData' differs from previous declaration
[Error] Main.pas(163): Declaration of 'LogStatus' differs from previous declaration
[Error] Main.pas(165): Declaration of 'LogWriteString' differs from previous declaration
[Error] Main.pas(171): Identifier redeclared: 'TlogFile.buildLogLine'


вставляю вот так:

Uses
...

type
 TForm1 = class(TForm)
   IdAntiFreeze1: TIdAntiFreeze;
   Panel1: TPanel;
   memoHTML: TMemo;
   HTTP: TIdHTTP;
...........
   procedure Button5Click(Sender: TObject);
 private
   bPostFile: Boolean;
   ss:string;
 public
 end;

const
CR = #13;
LF = #10;
EOL = CR+LF;
xmlEOL = EOL;

type
// this is a descendant of TidLogFile, it will create a plain text file with
// information about the transfer session
TlogFile = class(TidLogFile)
protected
procedure LogReceivedData(const AText, AData: string); override;
procedure LogSentData(const AText, AData: string); override;
procedure LogStatus(const AText: string); override;
public
procedure LogWriteString(const AText: string); override;
class function buildLogLine(data, prefix: string) : string;
end;

// this ensures the output of error and debug logs are in the same format, regardless of source
class function TlogFile.buildLogLine(data, prefix: string) : string;
begin

data := StringReplace(data, EOL, RSLogEOL, [rfReplaceAll]);
data := StringReplace(data, CR, RSLogCR, [rfReplaceAll]);
data := StringReplace(data, LF, RSLogLF, [rfReplaceAll]);

result := FormatDateTime('yy/mm/dd hh:nn:ss', now) + ' ';
if (prefix <> '') then
result := result + prefix + ' ';
result := result + data + EOL;
end;

var
 Form1: TForm1;

 implementation

{$R *.DFM}


Подскажите что делаю не так?

Вроде нигде выше декларации процедур с таким именем не встречаются.
Вообщем нид хелп.


icWasya   (2011-06-27 12:48:00) [1]

> там уже есть описание таких методови процедур
А как именно тамони описаны?


vegarulez   (2011-06-25 20:17:00) [2]

Я понял в чём дело.
Дело в том что если я в uses объявляю IdLogFile то компилятор ругается - т.к. там уже есть описание таких методови процедур.

Если же в юзес не объявлять IdLogFile то тогда компилятор ругается на вот эту строку
TlogFile = class(TidLogFile)
говоря что компилятор не знает что такое TidLogFile
Undeclared identifier: 'TidLogFile'


Плохиш   (2011-06-25 12:36:00) [3]

Перекрывающий метод должен иметь точно такое же описание, что и перекрываемый.


vegarulez   (2011-06-25 08:18:00) [4]

Поставил ниже имплементации - всё равно ошибка таже ( компилятор также ругается.


Германн   (2011-06-25 01:00:00) [5]


> Компилятор же на них ругается.

А на кого ему еще ругаться? На глупого программера, который запихнул в секцию interface помимо объявлений ещё и часть кода реализации?


Плохиш   (2011-06-25 00:54:00) [6]


> vegarulez   (24.06.11 23:40) [3]
> Почему они должны находится после implementation?

Потому что так написано в описании синтаксиса используемого языка программирования.


vegarulez   (2011-06-24 23:40:00) [7]

Так это же объявление процедур и класса. Компилятор же на них ругается. Почему они должны находится после implementation?


Loginov Dmitry   (2011-06-24 23:36:00) [8]

Часть реализации должна находиться ниже implementation.


vegarulez   (2011-06-24 21:33:00) [9]

а ну и ругается на этот код:

protected
procedure LogReceivedData(const AText, AData: string); override;
procedure LogSentData(const AText, AData: string); override;
procedure LogStatus(const AText: string); override;
public
procedure LogWriteString(const AText: string); override;
class function buildLogLine(data, prefix: string) : string;


Наверх

Титульная страница Поиск, карта сайта Написать письмо