ich war gerade dabei, ein Error-Log für mein Programm zu schreiben:
Code: Alles auswählen
unit ErrorLog;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, ExtCtrls{, ZeitTools};
type
TErrorLog_Item = record
Art : Byte;
Email : Boolean;
Text : AnsiString;
// Zeit : TZeit;
end;
TErrorLog = class
private
P : TPanel;
procedure Paint(Sender : TObject);
public
constructor Create;
procedure Report(Art : Byte; Email : Boolean; const Text : AnsiString);
procedure SetPanel(Panel : TPanel);
end;
var
Err : TErrorLog;
implementation
constructor TErrorLog.Create;
begin
P := nil;
end;
procedure TErrorLog.SetPanel(Panel : TPanel);
begin
if (P <> nil) then P.OnPaint := nil;
P := Panel;
P.OnPaint := @Paint;
end;
procedure TErrorLog.Report(Art : Byte; Email : Boolean; const Text : AnsiString);
begin
Paint(nil);
end;
procedure TErrorLog.Paint(Sender : TObject);
begin
if (Sender = nil) then begin end; // sinnlose Verwendung, hilft aber gegen den Fehler
if (P = nil) then exit;
P.Canvas.Line(0,0,50,50);
end;
initialization
Err := TErrorLog.Create;
finalization
Err.Free;
end.
Ich weiß nicht, was ich gemacht habe, aber plötzlich lies sich diese Unit nicht mehr compilieren. Der einzige Fehler:
Code: Alles auswählen
ErrorLog.pas(24,21) Hint: Parameter "Art" not used
Wenn ich die Parameter irgendwo im Quelltext verwende, geht's (Ist in meinem Fall aber für z.B. Sender ziemlich unnötig). Wenn ich Lazarus schließe, wieder öffne und dann gleich compiliere, geht's auch. Erst wenn ich etwas an dieser Unit verändere, kommt der Fehler. Ich habe es schon in einem neuen, leeren Projekt versucht und die Unit Stück für Stück neu erstellt, aber der Fehler kommt immer noch
Könnt ihr mal ausprobieren, ob es bei euch auch hängt?