Einzelnen Beitrag anzeigen

OlliWW

Registriert seit: 31. Aug 2011
153 Beiträge
 
#1

BeginThread mit 64bit compiler [gelößt]

  Alt 22. Jan 2015, 09:32
Hallo Zusammen,

Ich stelle gerade meine Anwendung auf 64bit um. Der Code funktioniert soweit, bloss beim Aufruf von einem Thread kriege ich immer wieder einen Absturz, ich verstehe allerdings nicht warum, den Thread hab ich eigentlich nach Delphi-Beispiel nachprogrammiert:

Delphi-Quellcode:
interface
type
  TMsgRecord = record
    sPath: String;
    sIdent: String;
  end;

implementation

uses [...];

ThreadVar
  msgPtr : ^TMsgRecord;



function TFrom1.fctCheckSystem:Boolean;
[....]
  procedure prcDirectoryExists(_pPfad: Pointer);
  var
    sPfad: String;
    sIdent: String;
    msgData: TWMMessageData;
  begin
    msgPtr := _pPfad;
    sPfad := msgPtr.sPath;
    sIdent := msgPtr.sIdent;
  [..]
  end;

  procedure prcCheckPaths;
  var
    rec_ThreadParams: TMsgRecord;
    aThreadID: array of DWord;
    hndThread: THandle;
    objINIPath: TINIPath;
  begin
  [..]
    SetLength(aThreadID, lstPaths.Count);
    for i1 := 0 to lstPaths.Count - 1 do
    begin
      rec_ThreadParams.sPath := lstPaths[i1].sPath;
      rec_ThreadParams.sIdent := lstPaths[i1].sIdent;
      hndThread := BeginThread(nil, 0, @prcDirectoryExists, Addr(rec_ThreadParams), 0, aThreadID[i1]);
      CloseHandle(hndThread);
    end;
  end;
end;

Sobald ich auf "msgPtr.sPath" zugreife stürzt mir meine Anwendung ab, weil Sie anscheinend nicht auf den Pointer zugreifen kann.
Hat jemand einen Tipp für mich?

Geändert von OlliWW (23. Jan 2015 um 08:00 Uhr)
  Mit Zitat antworten Zitat