Einzelnen Beitrag anzeigen

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