AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TSemaphore

Ein Thema von youuu · begonnen am 19. Aug 2010 · letzter Beitrag vom 19. Aug 2010
Antwort Antwort
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

AW: TSemaphore

  Alt 19. Aug 2010, 11:51
Ach stimmt, oh man ich Pfeiffe
Steven
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#2

AW: TSemaphore

  Alt 19. Aug 2010, 13:04
Ach stimmt, oh man ich Pfeiffe

Edit: Hm irgendwie klappt das nicht.

Ich bekomm dann immer als Fehler: E2008 Inkompatible Typen Hier:
Delphi-Quellcode:
Constructor TSampleJob.Create(kat: integer; sl2: THashedStringList; slOld2: THashedStringList);
Begin
  Inherited; // <<<----- E2008 Inkompatible Typen
  Synchronized := False;
  o := kat;
  sl.AddStrings(sl2);
  slOld.AddStrings(slOld2);
End;
HauptThread sieht dann so aus
Delphi-Quellcode:
  TWorkerThreadJob = Class
  private
    fSynchronized: Boolean;
    fUsesCOMObjects: Boolean;
    fo: integer;
    fsl, fslOld: THashedStringList;
  protected
    Procedure Execute(aThread: TWorkerThread); virtual; abstract;
    Property UsesCOMObjects: Boolean read fUsesCOMObjects write fUsesCOMObjects default False;
    Property Synchronized: Boolean read fSynchronized write fSynchronized default True;
    Property o: Integer read fo write fo;
    Property sl: THashedStringList read fsl write fsl;
    Property slOld: THashedStringList read fslOld write fslOld;
  End;
Damit wollte ich es testen, aber wie gesagt bekam ich diese Fehlermeldung.
Steven
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: TSemaphore

  Alt 19. Aug 2010, 13:13
Dein Konstruktor hat andere Parameter als der Konstruktor Create der Vorfahrklasse, da kannst Du nicht einfach inherited schreiben. Versuch es mit:

inherited create (Parameter für geerbte Createroutine)
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#4

AW: TSemaphore

  Alt 19. Aug 2010, 13:19
E2034 Zu viele Parameter

kommt dabei raus.
Steven
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: TSemaphore

  Alt 19. Aug 2010, 13:33
Was ist der Vorfahr von TSampleJob? Wie schaut die Deklaration der entsprechenden (geerbten) Create Routine aus? Und welche Parameter hast Du jetzt an inherited create übergeben?
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#6

AW: TSemaphore

  Alt 19. Aug 2010, 13:51
Delphi-Quellcode:
Type
// Beispiel, das die Verwendung der synchronize-Methode demonstriert,
// um Ausgaben unter Verwendung der VCL threadsicher vorzunehmen.
  TSampleJob = Class(TWorkerThreadJob)
    fMessage: String;
    Procedure DoShow;
  public
    Constructor Create(kat: integer; sl2: THashedStringList; slOld2: THashedStringList);
    Procedure Execute(aThread: TWorkerThread); override;
  End;
Delphi-Quellcode:
  TWorkerThreadJob = Class
  private
    fSynchronized: Boolean;
    fUsesCOMObjects: Boolean;
    fo: integer;
    fsl, fslOld: THashedStringList;
  protected
    Procedure Execute(aThread: TWorkerThread); virtual; abstract;
    Property UsesCOMObjects: Boolean read fUsesCOMObjects write fUsesCOMObjects default False;
    Property Synchronized: Boolean read fSynchronized write fSynchronized default True;
    Property o: Integer read fo write fo;
    Property sl: THashedStringList read fsl write fsl;
    Property slOld: THashedStringList read fslOld write fslOld;
  End;
sollte der vorfahre sein.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

AW: TSemaphore

  Alt 19. Aug 2010, 17:40
Dein Konstruktor hat andere Parameter als der Konstruktor Create der Vorfahrklasse, da kannst Du nicht einfach inherited schreiben. Versuch es mit:

inherited create (Parameter für geerbte Createroutine)
E2034 Zu viele Parameter

kommt dabei raus.
Genial. Dabei bietet Delphi eine Programmierhilfe, die anzeigt, was in die verschiedenen Felder rein muss. Du schreibst also "inherited Create(". Dann sollte sich Delphi melden und die eine Parameterliste liefern. Dies sieht je nach Delphiversion anders aus. D7 bringt ein Band, welches nach einem Hint aussieht und zeigt darin an, bei welchem Parameter man ist und welchen Typ der haben muss.

Jetzt in deinem Versuch hat .Create überhaupt keine Parameter. Du musst also hinter das "inherited" ein "Create();" schreiben und gut ist.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: TSemaphore

  Alt 19. Aug 2010, 19:36
Wobei in der Klasse TWorkerThreadJob das Create von TObject anscheinend nicht überschrieben wird und folglich gar nichts tut - inheritesd create ist also in dem Fall sogar überflüssig.
  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 20:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz