Показать сообщение отдельно
  #20  
Старый 02.04.2013, 12:44
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от cyborgg4655
очень жаль( Придется воспользоваться запороленным сторониим файлом..
Это правильное решение.

Можно правда ещё дописывать к файлу текст
Код:
...
const
  metka = 'MyText:';

  procedure StrToFile (FileName, s :string);
var
  pst: longword;
  psb: string;
begin
  with TFileStream.Create(FileName, fmOpenReadWrite) do
   try
    try
      if Size < SizeOf(pst) then Abort;
      Seek( - SizeOf(pst), soFromEnd);
      ReadBuffer(pst, SizeOf(pst));
      if  pst + longword(length(metka)) + SizeOf(pst) > Size  then Abort;
      Position:= pst;
      SetLength(psb, length(metka));
      ReadBuffer(psb[1], length(metka));
      if  psb <> metka then Abort;
       except on eAbort  do
     begin
      pst:= Size;
      Position:= pst;
      WriteBuffer(metka[1], length(metka));
     end;
    end;
    WriteBuffer(s[1], length(s));
    WriteBuffer(pst, SizeOf(pst));
    Size:= Position;
  finally
    Free;
  end;
end;
и потом его считывать
Код:
...

const
  metka = 'MyText:';

function StrFromFile (FileName: string): string;
var
  pst: longword;
  psb: string;
begin
  with TFileStream.Create(FileName, fmOpenRead) do
   try
     try
      if Size < SizeOf(pst) then Abort;
      Seek( -SizeOf(pst), soFromEnd);
      ReadBuffer(pst, SizeOf(pst));
      if pst + Longword(Length(metka)) + SizeOf(pst) > Size then Abort;
      Position:= pst;
      SetLength(psb, length(metka));
      ReadBuffer(psb[1], length(metka));
      if psb <> txt then Abort;
      SetLength(Result, Size - pst - length(metka) - SizeOf(pst));
      if length(Result) > 0  then ReadBuffer(Result[1], length(Result));
    except on eAbort  do Result:= '';
    end;
  finally
    Free;
  end;
end;
но для этого тогда ещё нужно засунуть в ресурсы спец прогу которая будет появляться на диске, запускаться и после "отпускания" оськой основного файла дописывать к нему инфу, а затем батником самоуничтожаться, одним словом, гимор.
Ответить с цитированием