Форум: "Начинающим";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];
ВнизДополнительные потоки NTFS Найти похожие ветки
← →
LDV (2008-11-26 16:44) [0]Хочу написать функции которые считывали и записывали различные значения в Exe при помощи дополнительных файловых потоков Ntsf.
Пока что написал сохранение и чтение целочисленных значений. Для нужных мне типов писать отдельно процедуры как-то не хочется и мне кажется не совсем правильно.
procedure SetOptionalStreamVar(n: Integer;
Name: string);
var
M: TMemoryStream;
begin
M := TMemoryStream.Create;
with M do
try
WriteBuffer(n, SizeOf(n));
SaveToFile(ParamStr(0) + Name);
finally
FreeAndNil(M);
end;
end;
procedure GetOptionalStreamVar(var n: Integer;
Name: string);
var
M: TMemoryStream;
begin
M := TMemoryStream.Create;
with M do
try
LoadFromFile(
ParamStr(0) + Name);
n := PInteger(Memory)^;
finally
FreeAndNil(M);
end;
end;
end;
Вот попытка написать 2 универсальные для разных типов функции: Но так как я новичок мне кажется что они будут выполняться неверно в некоторых ситуация. Дайте совет... относительно алгоритмов.
procedure _SetOptionalStreamVar(const Buf;
Name: string);
var
M: TMemoryStream;
begin
M := TMemoryStream.Create;
with M do
try
WriteBuffer(Buf, SizeOf(Buf));
if IsPresent(Name) then
DeleteFile(ParamStr(0) + Name);
SaveToFile(ParamStr(0) + Name);
finally
FreeAndNil(M);
end;
end;
procedure _GetOptionalStreamVar(var Buf;
Name: string);
var
M: TMemoryStream;
begin
if IsPresent(Name)
then begin
M := TMemoryStream.Create;
with M do
try
LoadFromFile(
ParamStr(0) + Name);
Read(Buf, SizeOf(Size));
finally
FreeAndNil(M);
end;
end;
← →
Поросенок Винни-Пух © (2008-11-26 16:46) [1]Для стримов есть ридеры и райтеры для записи/чтения разных типов
← →
clickmaker © (2008-11-26 16:47) [2]а причем тут дополнительные файловые потоки Ntsf?
← →
Сергей М. © (2008-11-26 16:52) [3]Да, вот интересно было бы узнать. причем они тут ?
← →
LDV (2008-11-26 16:57) [4]
> clickmaker © (26.11.08 16:47) [2]
> а причем тут дополнительные файловые потоки Ntsf?<Цитата>
>
>
> Сергей М. © (26.11.08 16:52) [3]
> Да, вот интересно было бы узнать. причем они тут ?
А что непонятного, значения пишутся/считываются в MemoryStream, а из него в поток NTFS исполняемого файла (ParamStr(0)) SaveToFile(ParamStr(0) + ": Data");
← →
Сергей М. © (2008-11-26 17:04) [5]
> SaveToFile
SaveToFile знать ничего не знает ни об NTFS ни о каких-то доп. файловых потоках, существующих в этой ФС - это совершенно другой (прикладной) уровень, ему по барабану в какой ФС осуществляется сохранение файла.
← →
LDV (2008-11-26 17:11) [6]
> > SaveToFileSaveToFile знать ничего не знает ни об NTFS
> ни о каких-то доп. файловых потоках, существующих в этой
> ФС - это совершенно другой (прикладной) уровень, ему по
> барабану в какой ФС осуществляется сохранение файла.
А куда в таком случае происходит запись значения?
← →
Amoeba © (2008-11-26 17:16) [7]
> А куда в таком случае происходит запись значения?
В обычный файл с именем ParamStr(0) + Name, у которого расширение "exe"+Name
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c