Servus!
Vor einigen Jahren erstellte ich für eine Kollegen ein Programm, das via MMF Daten von einem zweiten Programm empfing. Das wurde dann von ihm, wie geplant, weitergegeben und von mehreren Leuten in einem Hobbyprojekt nahezu weltweit erfolgreich eingesetzt.
Nun mehren sich die Meldungen, daß es unter Win7 und Win8 zu Problemen kommt. In den Abständen, in denen eigentlich die Daten abgefragt werden sollten, werden Zugriffsverletzungen angezeigt. Das Problem besteht jedoch nicht allgemein, ich kann den Fehler beispielsweise nicht nachvollziehen. Unter WinXP gab es anscheinend keine Schwierigkeiten.
Vielleicht könnte jemand der sich gut in der Materie auskennt, den nachfolgenden Programmausschnitt ansehen und auf mögliche Fehlerquellen hin abklopfen. Ich bin nämlich ratlos.
Danke!
Gruß,
Oiner
																	1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
  				 | 									unit DemoUnit;
  type   PSharedHypeData = ^TSharedHypeData;   TSharedHypeData = record     SlotStarted:    Array [0..39] of Integer;     RemoteShutdown: Array [0..39] of Integer;     SlotData:       Array [0..39] of Integer;     axis :          Array [0..5]  of Integer ;     PositionX :     Integer;     PositionY :     Integer;     SavePosition :  Array [0..39] of Integer;     MoveAll :       Integer;     Sync :          Array [0..39] of Integer; end;
  var   g_SharedHypeData: TSharedHypeData;   aFileHandle: THandle;   pViewData: PSharedHypeData;
  implementation
  procedure TForm1.MMF_Vorbereitung; begin   aFileHandle:= OpenFileMapping( FILE_MAP_READ,                                  False,                                  'Global\xsimgaugeslot');   if aFileHandle= INVALID_HANDLE_VALUE then     raise Exception.Create('Handle-Fehler');   try     GetMem(pViewData, SizeOf(LongInt));     pViewData:= MapViewOfFile( aFileHandle,                                FILE_MAP_READ,                                0,                                0,                                0);     if pViewData= nil then     begin       Timer1.Enabled:= False;       with TrackBarPanel do       begin         Visible:= True;         Top:= 0;         Left:= 0;       end;       raise Exception.Create('MapViewOfFile-Fehler'+#13+#10+                              'manuelle Steuerung aktiviert');     end;   finally   end; end;
  procedure TForm1.MMF_Lesen; begin   EAC1TrackBar.Position:=pViewData^.axis[0];   EAC2TrackBar.Position:=pViewData^.axis[1];   Application.ProcessMessages; end;					 				 | 			
		
	  Moderiert von 
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 22.05.2013 um 11:13