smakhavan
چهارشنبه 31 فروردین 1390, 17:34 عصر
سلام
من قبلا (تو دلفي 7) براي اضافه كردن يك متن به يك ابتداي فايل از كد زير استفاده ميكردم:
procedure AddTextToFile(Str, Source, Destination : String);
var
stream : TMemoryStream;
s : array[1..2] of String;
i, size : Integer;
begin
SetLength(s[1],length(str));
for i:=1 to length(Str) do s[1][i]:=str[i];
stream:=TMemoryStream.Create;
try
stream.LoadFromFile(Source);
SetLength(s[2],stream.size);
stream.Read(s[2][1],stream.Size);
finally
stream.Free;
end;
stream:=TMemoryStream.Create;
try
size:=length(s[1]);
stream.Write(size,sizeof(size));
stream.Write(s[1][1],size);
size:=length(s[2]);
stream.Write(size,sizeof(size));
stream.Write(s[2][1],size);
stream.SaveToFile(Destination);
finally
stream.Free;
end;
end;
براي حذف كردنش هم از اين كد استفاده ميكردم:
procedure RemoveTextFromFile(var Str:String; Source, Destination : String);
var
s : String;
InFileStream : TFileStream;
OutFileStream: TFileStream;
size : Integer;
begin
InFileStream := TFileStream.Create(Source, fmOpenRead or fmShareDenyNone);
try
InFileStream.Read(size, SizeOf(size));
SetLength(s, size);
InFileStream.Read(s[1], size);
Str:=s;
// Could decrypt the strings here if desired
InFileStream.Read(size, SizeOf(size));
SetLength(s, size);
InFileStream.Read(s[1], size);
if Destination <> '' then
begin
// Write new file
OutFileStream := TFileStream.Create(Destination,fmCreate or fmOpenWrite or fmShareExclusive);
try
OutFileStream.Write(s[1], size)
finally
OutFileStream.Free
end;
end;
finally
InFileStream.Free
end;
end;
ولي الان تو دلفي 2010 جواب نميده! يعني رشتهاي متفاوت با آن چيزي كه قبلا ابتداي فايل نوشته شده بود برميگردونه.
كسي ميتونه راهنمايي كنه كه اشكالش چيه؟
من قبلا (تو دلفي 7) براي اضافه كردن يك متن به يك ابتداي فايل از كد زير استفاده ميكردم:
procedure AddTextToFile(Str, Source, Destination : String);
var
stream : TMemoryStream;
s : array[1..2] of String;
i, size : Integer;
begin
SetLength(s[1],length(str));
for i:=1 to length(Str) do s[1][i]:=str[i];
stream:=TMemoryStream.Create;
try
stream.LoadFromFile(Source);
SetLength(s[2],stream.size);
stream.Read(s[2][1],stream.Size);
finally
stream.Free;
end;
stream:=TMemoryStream.Create;
try
size:=length(s[1]);
stream.Write(size,sizeof(size));
stream.Write(s[1][1],size);
size:=length(s[2]);
stream.Write(size,sizeof(size));
stream.Write(s[2][1],size);
stream.SaveToFile(Destination);
finally
stream.Free;
end;
end;
براي حذف كردنش هم از اين كد استفاده ميكردم:
procedure RemoveTextFromFile(var Str:String; Source, Destination : String);
var
s : String;
InFileStream : TFileStream;
OutFileStream: TFileStream;
size : Integer;
begin
InFileStream := TFileStream.Create(Source, fmOpenRead or fmShareDenyNone);
try
InFileStream.Read(size, SizeOf(size));
SetLength(s, size);
InFileStream.Read(s[1], size);
Str:=s;
// Could decrypt the strings here if desired
InFileStream.Read(size, SizeOf(size));
SetLength(s, size);
InFileStream.Read(s[1], size);
if Destination <> '' then
begin
// Write new file
OutFileStream := TFileStream.Create(Destination,fmCreate or fmOpenWrite or fmShareExclusive);
try
OutFileStream.Write(s[1], size)
finally
OutFileStream.Free
end;
end;
finally
InFileStream.Free
end;
end;
ولي الان تو دلفي 2010 جواب نميده! يعني رشتهاي متفاوت با آن چيزي كه قبلا ابتداي فايل نوشته شده بود برميگردونه.
كسي ميتونه راهنمايي كنه كه اشكالش چيه؟