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.
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?