Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.11;
Скачать: CL | DM;

Вниз

Дополнительные потоки 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1227981998
lewka
2008-11-29 21:06
2009.01.11
Передача картинки от сервера к клиенту


3-1212508863
pavel_guzhanov
2008-06-03 20:01
2009.01.11
Как ускорить обмен между двумя базами?


15-1226480093
godkiller07
2008-11-12 11:54
2009.01.11
у меня вопрос...


3-1212567348
french_cat
2008-06-04 12:15
2009.01.11
Установить фильтр для ADOQuery


2-1227964423
Евгений
2008-11-29 16:13
2009.01.11
Доступ к таблице Access через ListView