*55>로 표시된 것은 55줄인데 거기서부터 계속 에러가 납니다.
그런데 아래의 에러메시지를 보고도 어디를 해야할지 난감합니다.
델파이 고수님들의 실력으로 저의 어려운 점을 도와주세요.
===================================================================
[Error] IdLogDebug.pas(55): Variable required
[Error] IdLogDebug.pas(56): Constant expression expected
[Error] IdLogDebug.pas(57): Constant expression expected
[Error] IdLogDebug.pas(59): ':=' expected but ':' found
[Error] IdLogDebug.pas(63): '.' expected but ';' found
[Fatal Error] mainf.pas(12): Could not compile used unit 'IdLogDebug.pas'
===================================================================
unit IdLogDebug;
interface
uses
Classes,
IdLogBase,
IdSocketHandle;
type
TIdLogDebugTarget = (ltFile, ltDebugOutput, ltEvent);
TLogItemEvent = procedure(ASender: TComponent; var AText: string) of object;
TIdLogDebug = class(TIdLogBase)
protected
FFilename: string;
FFileStream: TFileStream;
FOnLogItem: TLogItemEvent;
FTarget: TIdLogDebugTarget;
//
procedure Log(AText: string); override;
procedure SetActive(const AValue: Boolean); override;
procedure SetTarget(const AValue: TIdLogDebugTarget);
public
destructor Destroy; override;
published
property Filename: string read FFilename write FFilename;
property OnLogItem: TLogItemEvent read FOnLogItem write FOnLogItem;
property Target: TIdLogDebugTarget read FTarget write SetTarget;
end;
implementation
uses
IdGlobal,
IdResourceStrings,
SysUtils;
{ TIdLogDebug }
destructor TIdLogDebug.Destroy;
begin
Active := False;
inherited;
end;
procedure TIdLogDebug.Log(AText: string);
var
s: string;
begin
if assigned(OnLogItem) then begin
OnLogItem(Self, AText);
end;
case Target of ltFile: //begin
*55> FFileStream.WriteBuffer(PChar(AText), Length(AText));
s := EOL;
FFileStream.WriteBuffer(PChar(s), Length(s));
end;
ltDebugOutput: begin
DebugOutput(AText + EOL);
end;
end;
end;
procedure TIdLogDebug.SetActive(const AValue: Boolean);
begin
if AValue then begin
case Target of
ltFile:
if not (csLoading in ComponentState) then begin
if FileExists(Filename) then begin
FFileStream := TFileStream.Create(Filename, fmOpenReadWrite);
end else begin
FFileStream := TFileStream.Create(Filename, fmCreate);
end;
FFileStream.Position := FFileStream.Size;
end;
end;
end else begin
case Target of
ltFile: begin
FreeAndNil(FFileStream);
end;
end;
end;
inherited;
end;
procedure TIdLogDebug.SetTarget(const AValue: TIdLogDebugTarget);
begin
if ([csLoading, csDesigning] * ComponentState = []) and Active then
begin
raise Exception.Create(RSCannotChangeDebugTargetAtWhileActive);
end;
FTarget := AValue;
end;
end.
===================================================================
전 고수는 아니지만 에러내용을 알 것 같군요.
[Error] IdLogDebug.pas(55): Variable required
변수가 필요함다. 변수대신 상수를 사용하셨거나 변수 선언을 안하신 경우네요.
[Error] IdLogDebug.pas(56): Constant expression expected
상수값이 필요하군요. 델파이에서 제공하는 함수라면 이미 정의 되어 있는 값이 있을 테니까 찾아서 사용하세요.
[Error] IdLogDebug.pas(59): ':=' expected but ':' found
값을 대입할 때 = 만 쓰셨군요. :=로 고쳐주세요.
[Error] IdLogDebug.pas(63): '.' expected but ';' found
. 를 쓰셔야 할 자리에 ;를 사용하신 경우입니다.
[Fatal Error] mainf.pas(12): Could not compile used unit 'IdLogDebug.pas'
위와 같은 이유로 컴파일을 할 수 없다는 군요.
도움이 되시길