Главная страница
    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.005 c
2-1227599161
Valerik
2008-11-25 10:46
2009.01.11
SQL запрос


15-1226564342
Нов_и_чок
2008-11-13 11:19
2009.01.11
Справочник Win32 для XP


15-1226856379
DillerXX
2008-11-16 20:26
2009.01.11
А почему корпус компьютера


2-1228066081
Pavel
2008-11-30 20:28
2009.01.11
Как из пути извлечь имя последнего каталога?


2-1227961713
AlexDan
2008-11-29 15:28
2009.01.11
Программно выключить дсплей..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский