![]() |
OpemFileMapping & MapViewOfFile gehen nicht
Hi,
ich versuche hinzubekommen dass zwei Programme sich "unterhalten" dies versuche ich mit FileMapping. Leider will die datei, die das file map öffnet und lesen soll einfach net funktionieren. Datei1
Delphi-Quellcode:
Datei2
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; szFileMapping: string = 'Czybik'; CONST_SIEBEN: PCHAR = 'sieben'; hMap: Cardinal; hInfo: PCHAR; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin hmap := CreateFileMapping($FFFFFFFF, nil, PAGE_EXECUTE_READWRITE, 0, $1000, PChar(szFileMapping)); hInfo := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); showmessage(syserrormessage(getlasterror)); end; procedure TForm1.Button1Click(Sender: TObject); begin hInfo := PCHAR(INPUTBOX('WERT', 'LQL', 'Q')); end; procedure TForm1.Button2Click(Sender: TObject); begin showmessage(inttostr(integer(hInfo^))); //hInfo^ := CONST_ACHT; end; end.
Delphi-Quellcode:
Bitte dringend um Hilfe!!
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; szFileMapping: String = 'Czybik'; CONST_SIEBEN: PCHAR = 'sieben'; hMap: Cardinal; hInfo: Pchar; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin showmessage(hInfo^); end; procedure TForm1.FormCreate(Sender: TObject); begin hMap := OpenFileMapping(FILE_MAP_ALL_ACCESS, false, PChar(szFileMapping)); hInfo := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); showmessage(syserrormessage(getlasterror)); end; end. |
Re: OpemFileMapping & MapViewOfFile gehen nicht
Zitat:
![]() |
Re: OpemFileMapping & MapViewOfFile gehen nicht
du solltest das ganze ordentlich machen und unter anderem hmap prüfen bevor du damit weiter arbeitest.
|
Re: OpemFileMapping & MapViewOfFile gehen nicht
Der Fehler bei Datei2 ist "Das handle ist ungültig". Das kommt, wenn ich
die Datei vor der ersten starte. Wenn ich sie danach starte, also es schon erstellt ist kommt "Das Fenster hat keine Bildlaufleisten" Ich weiß einfach nicht was ich falsch mache, denn ich sehe nirgendswo einen Fehler! Edit: Wenn ich CreateFileMapping nur zum lesen benutzen will dann kommt der fehler dass er das file map nicht erstellen kann weil es ja schon existiert. komischer bug:
Delphi-Quellcode:
Wenn ich anstatt CreateFileMapping OpenFileMapping use dann kommt Zugriff verweigert
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; szFileMapping: String = 'Czybik'; CONST_SIEBEN: PCHAR = 'sieben'; hMap: Cardinal; hInfo: Pchar; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin showmessage(hInfo^); end; procedure TForm1.FormCreate(Sender: TObject); begin hMap := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READONLY, 0, sizeof(szFileMapping), PChar(szFileMapping)); if hMap <> 0 then begin hInfo := MapViewOfFile(hMap, FILE_MAP_READ, 0, 0, 0); end; showmessage(syserrormessage(getlasterror)); end; end.
Code:
hMap := OpenFileMapping(PAGE_READONLY, false, Pchar(szFileMapping));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz