Autor Beitrag
lambruco
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100

Win 2000/2000 Server/XP
D6 Prof.
BeitragVerfasst: Do 07.08.03 10:58 
Moin Forum,
ich bin mehr oder wenig verzweifelt. Ich habe ein MDI-Anwendung programmiert, die ähnlich wie die Tail-Funktion in Unix Logfiles
überwacht. Das Programm läuft eigentlich auch, leider kann ich aber nur eine Datei überwachen. Jedesmal, wenn ich eine zweite oder weitere
Logfile überwachen will, bleiben die vorangegangenen Fenster stehen.
Da ich von Thread-Programmierung keine Ahnung habe, liegt der Fehler
wohl hier:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
unit TrigoTail2;

interface

uses classes,sysutils,windows,forms,StrUtils,StdCtrls;

type
  TTrigoTail2 = class(TThread)
  private
      .
      .
      .
  procedure ChangeNotificator();
  public
    m_bCancel  : boolean;
    constructor create(fileDir,fileName : string; lines : TMemo;
                       maxLines : integer = 1000);

end;

implementation

uses TailForm;

constructor TTrigoTail2.create(filedir, fileName : string;
                               lines : TMemo; maxLines: integer);
begin
    m_lines := lines;
    m_maxLines := maxLines;
    m_fileDir :=  fileDir;
    m_fileName :=  fileName;
    m_cnt := true;
    m_HelpStr := '';
    m_bCancel:=True;
    inherited create(false);
    ChangeNotificator();  //Prog aufrufen
end;

_________________
Wer Rechtschreibfehler findet, kann Sie behalten


Zuletzt bearbeitet von lambruco am Do 07.08.03 12:45, insgesamt 1-mal bearbeitet
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 07.08.03 12:14 
Der Compiler sagt dir sicher, dass du eine Abstrakte Klasse instanzierst. Der Code, der im neuen Thread ausgeführt werden soll, muss in Execute stehen bzw. von Execute aufgerufen werden.

Zitat:
inherited create(false);
ChangeNotificator();

Hiermit startest du den Thread [create(false)], der gleich eine EAbstract Exception auslöst, da du Execute nicht überschrieben hast.
In der darauf folgenden Zeile, die immernoch im aufrufenden Thread ausgeführt wird, machst du dann deine Aktionen.
Entweder du benennst ChangeNotificator in Execute um, verschiebst die deklaration nach protected und hängst dieser ein override an, oder du fügst eine neue Execute Methode hinzu, die dann ChangeNotificator aufruft.
Aber so wie du es im Moment hast, kann das nicht funktionieren.

_________________
Ist Zeit wirklich Geld?
lambruco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100

Win 2000/2000 Server/XP
D6 Prof.
BeitragVerfasst: Do 07.08.03 12:47 
:D Hat geklappt :D

Danke für den Tipp

_________________
Wer Rechtschreibfehler findet, kann Sie behalten