Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прочитать бинарный файл в строку [D7, D2005, 2000, XP, 2003]


w666w ©   (2007-08-22 14:53:00) 

Как прочитать бинарный файл в строку, допустим картинку jpeg.

Прекрасно понимаю что это ошибочный код, но не могу найти решения в инете - везде буффера какието, массивы и т.п. Нужно просто в строку..

function ReadFile(aFileName: String) : string;
var f:TFileStream;
   fReaded : string;
begin
 if FileExists(aFileName) then begin
   F := TFileStream.Create(aFileName, fmOpenRead);
   try
     F.Read(fReaded,sizeof(F));
   finally
     f.Free;
     Result := fReaded;
   end;
 end;
end;

Зраранее спасибо!


Gydvin   (2007-08-23 07:29:00) [1]

и наверное не просто строка, а base 64...


Плохиш   (2007-08-22 16:58:00) [2]


> w666w   (22.08.07 15:28) [7]
> http сервер обрабатывает запросы и возвращает данные именно
> в формате строки.

А потом удивляются и почему это в браузере какие-то кроказябры вместо голых тётков... :-)


Юрий Зотов   (2007-08-22 16:32:00) [3]

> w666w   (22.08.07 15:28) [7]

> возвращает данные именно в формате строки

Думаю, наоборот - именно, что НЕ в формате строки. Формат ASCIIZ-строки не допускает нулевых байтов в теле строки, а у Вас они, скорее всего, есть. И если это так, то, как только Вы попытаетесь работать с этими данными именно как со строкой, то данные будут обрезаны на первом же нулевом байте.

Скорее всего, тело строки здесь используется всего лишь как буфер, а формат - бинарный.

Как видите, снова эти буфера. Ну никуда от них не деться...
:о)


Reindeer Moss Eater   (2007-08-22 15:30:00) [4]

и возвращает данные именно в формате строки.

"А мужики-то и не знают"


w666w   (2007-08-22 15:28:00) [5]

http сервер обрабатывает запросы и возвращает данные именно в формате строки. Можно конечно конвертить туда-сюда, но зачем если задача намного проще.

Отсюда и задача. Еще раз спасибо.


Юрий Зотов   (2007-08-22 15:22:00) [6]

> w666w   (22.08.07 15:17) [4]

Вопросы могут начаться позже, но уже у Вас. Смотря, что Вы теперь с этой строкой делать будете.

А вот если бы ОДИН раз разобрались с "буфферами какими-то, массивами и т.п.", то НИКАКИХ вопросов уже бы НИКОГДА не возникло.

Тем более, что это несложно. Но дело Ваше, конечно.


DrPass   (2007-08-22 15:21:00) [7]


>  delphimasters как всегда помогли быстро и без лишних вопросов

Буду краток: гы-гы-гы :)


w666w   (2007-08-22 15:17:00) [8]

Спасибо, работает. delphimasters как всегда помогли быстро и без лишних вопросов. Респект!


umbra   (2007-08-22 15:02:00) [9]

function ReadFile(aFileName: String) : string;
var f:TFileStream;
    dst: TStringStream;
  fReaded : string;
begin
Result := '';
if FileExists(aFileName) then begin
  F := TFileStream.Create(aFileName, fmOpenRead);
  dst := TStringStream.Create;
  try
    dst.CopyFrom(f, f.Size);
    Result := dst.DataString;
  finally
    f.Free;
    dst.Free;
  end;
end;
end;


Германн   (2007-08-22 14:57:00) [10]


>    try
        SetLength(fReaded,sizeof(F));
>      F.Read(fReaded [1],sizeof(F));
>    finally
>


Игорь Шевченко   (2007-08-22 14:54:00) [11]

а зачем его читать в строку ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо