![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прочитать бинарный файл в строку [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]а зачем его читать в строку ?