Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1226462765
Slider007
2008-11-12 07:06
2009.01.11
С днем рождения ! 12 ноября 2008 среда


2-1228033675
snake-as
2008-11-30 11:27
2009.01.11
Разные PopupMenu в TreeView


15-1226211186
Cyrax
2008-11-09 09:13
2009.01.11
Записал инфу на винт, отсоединил - ничего нет...


2-1227776113
cvg
2008-11-27 11:55
2009.01.11
Как отключить загрузку ODBC-драйвера?


2-1227729324
Евгений Р.
2008-11-26 22:55
2009.01.11
RichEdit и простой текст





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский