AGB  ·  Datenschutz  ·  Impressum  







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

Thread Member size problem

Ein Thema von erichstuder · begonnen am 19. Jun 2019 · letzter Beitrag vom 19. Jun 2019
Antwort Antwort
erichstuder

Registriert seit: 19. Jun 2019
1 Beiträge
 
#1

Thread Member size problem

  Alt 19. Jun 2019, 08:29
Hallo

I habe ein Projekt bestehend aus den beiden folgenden simplen files:
Code:
unit MyThread;

interface

uses
  Classes;

type TMyThread = class(TThread)
  private
    a : array[0..432] of Byte; //431 works
end;

implementation

end.
Code:
unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Xml.XMLDoc, Xml.XMLIntf, MyThread;

type
  TForm1 = class(TForm)
  end;

var
  Form1: TForm1;
  xmlDoc : TXMLDocument;
  nodeList : IXMLNodeList;
  myThread : TMyThread;

implementation

{$R *.dfm}

begin
  myThread := TMyThread.Create(true);

  xmlDoc := TXMLDocument.Create(nil);
  xmlDoc.FileName := 'myXml.xml';
  xmlDoc.Active := true;

  nodeList := xmlDoc.DocumentElement.ChildNodes.FindNode('PersonalData').ChildNodes; //never returns if TMyThread member "a" has more than 432 entries
end.
Die letzte Code-Zeile nodeList := ... kehrt nie zurück wenn im thread der member "a" mehr als 432 einträge besitzt (so wie der code oben).
Wird ein Eintrag reduziert dann kehrt die letzte Code-Zeile sofort zurück: a : array[0..431] of Byte;

Ich verstehe nicht warum der Thread und die Verarbeitung vom XML irgendetwas mit einander zu tun haben sollten.
Irgendwie hab ich die Vermutung, dass hier Speicherbereiche überschrieben werden.
Aber warum erscheint keine Fehlermeldung?
Mach ich was falsch?

Für weitere Informationen hab ich das ganze Projekt auch gleich angehängt.
Ich erzeuge ein 32bit Applikation auf einen Windows 10 64bit System

Bin dankbar für jede Antwort
Erich
Angehängte Dateien
Dateityp: zip Project1.zip (3,15 MB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#2

AW: Thread Member size problem

  Alt 19. Jun 2019, 10:07
[dcc32 Warnung] Main.pas(25): W1020 Instanz von 'TMyThread' mit der abstrakten Methode 'TThread.Execute' wird angelegt

Bitte erst einmal dieses Problem korrigieren.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Thread Member size problem

  Alt 19. Jun 2019, 10:14
[dcc32 Warnung] Main.pas(25): W1020 Instanz von 'TMyThread' mit der abstrakten Methode 'TThread.Execute' wird angelegt

Bitte erst einmal dieses Problem korrigieren.
Wenn er den Thread nicht startet, ist das irrelevant.
TXMLDocument ist immer etwas seltsam. Bei mir klappts, wenn ich xmlDoc als IXMLDocument deklariere.

Edit: Entweder als IXMLDocument deklarieren, oder man muss beim Create einen Owner <> nil mitgeben.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (19. Jun 2019 um 10:22 Uhr)
  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 12:55 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