Hi,
hmm irgenwie kriege ich es nicht hin... der zugriff wird immer verweigert da ein process darauf zugreift..
habe ich einen denkfehler drin ?
Danke
Ralf
hier mal mein testcode:
Prog1: der die streams dynamisch erstellt und anschließend die streams mit testdaten befüllt
Delphi-Quellcode:
var
Form1: TForm1;
mystream: array[1..100] of Tfilestream;
implementation
{$R *.dfm}
// Streams dynamisch createn
procedure TForm1.Button1Click(Sender: TObject);
var
i, i2: integer;
len: byte;
filename: string;
begin
for i:=1 to 100 do begin
filename:='D:\__test\'+inttostr(i)+'.dat';
// stream createn oder öffnen und lesezugriffe zulassen
if not fileexists(filename) then mystream[i]:=Tfilestream.create(filename, fmCreate or fmsharedenynone)
else mystream[i]:=Tfilestream.create(filename, fmOpenreadwrite or fmsharedenynone);
mystream[i].Position:=mystream[i].Size;
end;
// testdaten in alle streams schreiben
len:=123;
// Testschleife die abwechselnd '123' in jeden stream[1..100] schreibt
for i2:=1 to 100000 do begin
for i:=1 to 100 do begin
with mystream[i] do begin
write(len, sizeof(byte));
end;
end;
end;
// streams freigeben
for i:=1 to 100 do mystream[i].free;
end;
Prog2: und hier der versuch mit einem 2ten prog auf den ersten offenen stream während des schreibens zuzugreifen
Delphi-Quellcode:
var
Form1: TForm1;
mystream: tfilestream;
implementation
{$R *.dfm}
procedure TForm1.cxButton1Click(Sender: TObject);
var
len : byte;
begin
mystream:=tfilestream.create('d:\__test\1.dat', fmopenread or fmsharedenynone);
mystream.Position:=0;
mystream.Read(len, sizeof(len));
// ergebnis im memo anzeigen
cxmemo1.Lines.add(inttostr(len));
mystream.free;
end;