Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Großes Problem mit Thread (https://www.delphipraxis.net/155496-grosses-problem-mit-thread.html)

EWeiss 26. Okt 2010 12:31

Großes Problem mit Thread
 
sag mir mal bitte jemand wo der unterschied liegt..

Ich erstelle eine Class
Delphi-Quellcode:
TMyclass = class(TComponent)
und
Delphi-Quellcode:
inherited Create(AOwner);
bei create..

Wenn ich diese nun mit einer NET Anwendung debugge funktioniert es beim ersten start ohne probleme.
Wird create abermals aufgerufen nach dem alle Threads Ordnungsgemäß beendet wurden
stürzt meine Anwendung ab.
Was ich festgestellt habe ich kann dann in create nicht jede einzelne zeile beim debuggen ansteuern.
springt nur in die Zeile wo ich einen Breakpoint gesetzt habe.

Definiere ich jetzt die class einfach
Delphi-Quellcode:
myclass = class
funktioniert alles soweit ich kann auch wieder jede einzelne zeile anspringen.

Allerdings bekomme ich jetzt diese Warnung!
[DCC Warnung] mypass.pas(111): W1055 PUBLISHED verursachte, dass RTTI ($M+) zu Typ 'TMyClass' hinzugefügt wurde

Kann mir jemand helfen und sagen warum das passiert und wo der Unterschied liegt.
Wie kann ich das problem beseitigen.?

Es scheint das hier ein Multithread problem vorliegt.

gruss

DeddyH 26. Okt 2010 12:41

AW: Großes Problem mit Thread
 
Die Meldung
Zitat:

[DCC Warnung] mypass.pas(111): W1055 PUBLISHED verursachte, dass RTTI ($M+) zu Typ 'TMyClass' hinzugefügt wurde
rührt daher, dass Du vermutlich die Klassenvervollständigung (STRG-SHIFT-C) verwendet hast. Diese legt automatisch einen published-Abschnitt in Deiner Klasse an. Dann musst Du nur das Schlüsselwort published wieder aus der Klassendeklaration löschen. Aber das eigentliche Problem habe ich nicht verstanden, kannst Du mal etwas mehr Code posten?

EWeiss 26. Okt 2010 12:48

AW: Großes Problem mit Thread
 
Zitat:

Zitat von DeddyH (Beitrag 1057837)
Die Meldung
Zitat:

[DCC Warnung] mypass.pas(111): W1055 PUBLISHED verursachte, dass RTTI ($M+) zu Typ 'TMyClass' hinzugefügt wurde
rührt daher, dass Du vermutlich die Klassenvervollständigung (STRG-SHIFT-C) verwendet hast. Diese legt automatisch einen published-Abschnitt in Deiner Klasse an. Dann musst Du nur das Schlüsselwort published wieder aus der Klassendeklaration löschen. Aber das eigentliche Problem habe ich nicht verstanden, kannst Du mal etwas mehr Code posten?

Der Code ist eigentlich belanglos..
Aber gut hier ist das create!

Delphi-Quellcode:
constructor TBASSVis.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

end;
spätestens bei LBStyle := TStringList.Create;

Kracht es dann .
Eigentlich sollte ich wenn man mit F7 debuggen tut in jede zeile springen können das tut er aber beim
zweiten mal dann nicht.
Stürzt aber in dieser dann ab "LBStyle"

Das passiert mir aber nur unter NET mit Delphi, VB, C++ habe ich keine probleme.

Ändere ich die Classe um einfach auf class dann funktioniert es bis auf die Warnung.

Was ist jetzt anderes bzw .. der unterschied zwichen Class und Class(TComponent)
das der Thread quasi geblockt wird und ich nicht mehr in den zeilen debuggen kann?

gruss

DeddyH 26. Okt 2010 12:56

AW: Großes Problem mit Thread
 
Reden wir hier von Prism, oder kann Delphi 2010 für .NET kompilieren? Mir fällt auf den ersten Blick jedenfalls nichts besonderes auf, sofern die ganzen Valiablen(WinampMenu, WStyleList etc.) private Felder Deiner Klasse sind.

EWeiss 26. Okt 2010 13:00

AW: Großes Problem mit Thread
 
Zitat:

Zitat von DeddyH (Beitrag 1057842)
Reden wir hier von Prism, oder kann Delphi 2010 für .NET kompilieren? Mir fällt auf den ersten Blick jedenfalls nichts besonderes auf, sofern die ganzen Valiablen(WinampMenu, WStyleList etc.) private Felder Deiner Klasse sind.

Ich kompiliere nicht für NET sondern debugge eine NET Anwendung welche mit meiner DLL arbeitet
Diese Anwendung ist Multithread und BassVis von Delphi ja auch deshalb hat mich gewundert das ich plötzlich nicht mehr in jede zeile
springen und diese auswerten kann.

gruss Emil

DeddyH 26. Okt 2010 13:02

AW: Großes Problem mit Thread
 
Zitat:

Ich kompiliere nicht für NET sondern debugge eine NET Anwendung welche mit meiner DLL arbeitet
*Puh* dann muss ich leider passen, da überhaupt keine Erfahrungen damit, sry :pale:

EWeiss 26. Okt 2010 13:06

AW: Großes Problem mit Thread
 
Zitat:

Zitat von DeddyH (Beitrag 1057845)
Zitat:

Ich kompiliere nicht für NET sondern debugge eine NET Anwendung welche mit meiner DLL arbeitet
*Puh* dann muss ich leider passen, da überhaupt keine Erfahrungen damit, sry :pale:

Aber eins kannst mir noch sagen was ist denn der Unterschied zwichen class und class(TComponent) ?
Das iritiert mich etwas da es mit der class funktioniert und class(TComponent) nicht.

gruss

DeddyH 26. Okt 2010 13:15

AW: Großes Problem mit Thread
 
Eine Klasse ohne Angabe des Vorfahren erbt direkt von TObject. Und zu TComponent ist die Referenz recht ausführlich.

EWeiss 26. Okt 2010 13:50

AW: Großes Problem mit Thread
 
Zitat:

Zitat von DeddyH (Beitrag 1057851)
Eine Klasse ohne Angabe des Vorfahren erbt direkt von TObject. Und zu TComponent ist die Referenz recht ausführlich.

Danke dir ;)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 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