Announcement

Collapse
No announcement yet.

TTimer und Free-Thread unter Delphi 6

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TTimer und Free-Thread unter Delphi 6

    Hallo,<p>
    ich habe eine Frage bzgl. <b>TTimer</b> in Delphi6. Ist da was verändert worden?<br>
    Mein Problem besteht darin, daß die Routine unter Delphi5 einwandfrei läuft<br> aber unter Delphi6 wird die Methode, die unter .OnTimer ange-<br>
    geben wird nicht angesprungen.<br>
    Muß man evtl. die Direktive 'platform' verwenden?<br>
    Bin über jede Hilfe dankbar.<p>

    Grüße<br>
    Tomo

  • #2
    Ich hab das vor kurzem so gelöst:<br>
    <br>
    PROTECTED <br>
    PROCEDURE Selftimer_OnTime(Sender : TObject);<br>
    <br>
    Selftimer := TTimer.Create(self);<br>
    Selftimer.Interval := 5000; <br>
    Selftimer.Enabled := TRUE;<br>
    Selftimer.OnTimer := SelfTimer_Ontime;<br>
    <br>
    Und das funktionier

    Comment


    • #3
      Hallo,<p>
      erstmal Danke für die Antwort! Hierzu habe ich aber Fragen:<br>
      Erstmal gehe davon aus, daß dies nur ein Auszug des Codes ist, <br>
      wenn nicht, heißt das, daß Du jedesmal den Timer neu kreierst, wenn<br>
      der Timer fällt, da Du ja die Routine quasi sich selbst aufrufen<br>
      läßt, oder ist da eine if-Abfrage davor:<br>
      if Selftimer <> nil then begin<br>
      Selftimer := TTimer.Create(self);<br>
      ...<br>
      end<br>
      Oder erzeugst Du wirklich jedesmal eine neue TimerInstanz und gibst<br>alte nicht frei, zumindest während des Programmlaufs?<br>
      Mein Problem ist auch, wenn ich den Timer mittels (self) erzeugen<br>
      möchte, mir dann der Compiler meldet<br>
      "Inkompatible Typen: 'TComponent' und 'myUnit'"<br>
      Dazu muß man wissen, daß ich in einem Free-Thread-Teil:<p>
      type<br>
      TMyFree = class(TTypedComObject, IMyFree)<br>
      protected<br>
      function abc; safecall;<p>
      private<br>
      <b>myUnit : TCMyUnit;</b><br>
      end;<p>
      eine Unit deklariere und in dieser Unit ich den Timer erzeuge und<br>
      innerhalb der Unit dieser Timer fallen und die Methode aufgerufen<br>
      werden soll, die sich auch in der Unit befindet. Und genau das<br>
      funktioniert jetzt unter Delphi6 nicht, was aber unter Delphi5 ein-<br>
      wandfrei funktionierte.<br>
      Irgendwelche Ahnung, warum daß jetzt nicht mehr funktionert?<br>
      (Der Sourcecode wurde während des Umstiegs nicht verändert)<p>
      Vielen Dank jedenfalls für alle Antworten!<br>
      Grüße<br>
      Tom

      Comment


      • #4
        Hi,<p>

        okay, ich habe das Problem gelöst, zumindest vorerst.<br>
        Man muß in den Projektoptionen unter Bedingungen 'MSWINDOWS'<br>
        eintragen, ansonsten werden nicht alle nötigen Komponenten mit-<br>
        erzeugt. Ein Blick auf die Unit 'Classes' verrät so einiges.<br>
        Aber ist denn dieses Vorgehen so korrekt? Muß man denn jedesmal dann<br>
        Compile-Flags setzen, damit man die alten Routinen weiterhin ver-<br>
        wenden kann oder mache ich da was falsch?<p>
        Grüße<br>
        Tom

        Comment

        Working...
        X