AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi scheitere bei TThread schon am Anfang
Thema durchsuchen
Ansicht
Themen-Optionen

scheitere bei TThread schon am Anfang

Ein Thema von iaby · begonnen am 25. Aug 2003 · letzter Beitrag vom 26. Aug 2003
Antwort Antwort
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#1

scheitere bei TThread schon am Anfang

  Alt 25. Aug 2003, 19:24
hallo zusammen!

ich wollte nun das erste mal in meinem delphi-leben Threads benutzen, das scheitert aber schon am anfang!
hier mein code:
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  MyThread = class(TThread)
    protected
       procedure execute; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
und hier die fehlermeldung:
Zitat:
[Error] Unit1.pas(19): Unsatisfied forward or external declaration: 'MyThread.execute'
ich habe das direkt aus einem buch abgeschrieben und auch schon so im forum gesehen!
bitte schlagt mich nicht weil es bestimmt super-einfach ist

gruss,
iaby
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: scheitere bei TThread schon am Anfang

  Alt 25. Aug 2003, 19:29
Drück mal Strg+Shift+C

Lies dir außerdem mal den Hilfeeintrag zu der Compilermeldung durch.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: scheitere bei TThread schon am Anfang

  Alt 25. Aug 2003, 19:32
Zwei Dinge: Normalerweise packt man die Thread Classe in eine extra Unit. Und zweitens: Existiert die Prozedur Execute über haupt schon unter implementation?

Ansonsten kuck mal auf meiner HP, da habe ich gerade ein Thread-Demo mit der TThread-Object-Klasse veröffentlicht. Und da findest du noch ein kleines Tutorial zu Threads ohne die VCL Klasse TThread zu benutzen, also reine WinAPI. BTW. das kleine WinAPI-Thread Tutorial ist abgesegnet von Assarabad, grobe Schnitzer sollten also nicht mehr drin sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#4

Re: scheitere bei TThread schon am Anfang

  Alt 26. Aug 2003, 11:00
ahhhhhhhh,
jetzt sieht das ganze schon besser aus

ich dachte allerdings, dass die execute prozedur schon beim erstellen des objekts per create ausgeführt wird. nach langem probieren habe ich dann herausgefunden, dass es mit Thread.resume geht! woran liegt das?

Thread.free brauche ich ja nicht zu machen( wie ich das bei luckie's tutorial gelesen hab)!?!

gruss,
iaby
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#5

Re: scheitere bei TThread schon am Anfang

  Alt 26. Aug 2003, 11:30
Zitat von iaby:
ich dachte allerdings, dass die execute prozedur schon beim erstellen des objekts per create ausgeführt wird. nach langem probieren habe ich dann herausgefunden, dass es mit Thread.resume geht! woran liegt das?
Der Paremeter "CreateSuspended" des Constructors gibt an, ob der Thread sofort mit seiner Ausführung beginnen soll, oder ob er gleich am Anfang "suspendiert" (also angehalten) werden soll. Ist CreateSuspended True, so wird der Thread angehalten und du musst ihn manuell per Resume wieder fortsetzen. Das ist dann sinnvoll, wenn du nach dem Erzeugen des Threads noch ein paar Initialisierungen o.ä. durchführen musst.

Zitat:
Thread.free brauche ich ja nicht zu machen( wie ich das bei luckie's tutorial gelesen hab)!?!
Sofern du FreeOnTerminate auf True setzt nicht...

Edit: @Luckie: hab mir dein Demo auch mal angeschaut.. was mir aufgefallen ist:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    // Demio-Zähler
    FCount: Integer;
    // globale Variablen zum Synchronisieren
    XIndex: Integer;
    XCount: Integer;


{...}
UpdateValues(Loop, FCount);
{...}


procedure TMyThreads.UpDateValues(Index, Count: Integer);
begin
  // globale Variable zuweise, da der Synchronize Methode keine Variablen
  // übetgeben werden können.
  XIndex := FIndex;
  XCount := FCount - 1;
  // Synchronize Methode aufrufen
  Synchronize(UpDateLVCaption);
end;

procedure TMyThreads.UpDateLVCaption;
begin
  // Synchronize Methode mit globalen Variablen
  Form1.UpdateLVCaption(XIndex, XCount);
end;
1) Wozu übergibst du der Methode UpdateValues zwei Parameter wenn diese innerhalb der Methode überhaupt nicht verwendet werden?
2) Wozu führst du die beiden privaten Felder XIndex und XCount ein wenn du stattdessen genausogut FIndex und FCount für UpdateLVCaption verwenden könntest?
Edit2: 3) Wozu rufst du die Methode UpdateValues per Synchronize auf?
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: scheitere bei TThread schon am Anfang

  Alt 26. Aug 2003, 15:23
1.) Mist. Ist noch von irgend was anderem übriggeblieben.
2.) Öhm, ja nun, also, ich meine, ich wollte sagen, also...
3.) Gute Frage.

Alles ausgebessert. ich hatte mich an einem meiner projekte orientiert, wo es irgendwie nicht anders ging. keine Ahnung warum.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz