Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизПочему в Stringlist не работает LoadFromFile если файл не текст? Найти похожие ветки
← →
RoLeX (2006-10-23 19:17) [0]Мне нужно StringList загрузить jpg файл, т.е. чтобы было также как открыть файл jpg при помощи блокнота.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var list:TStrings;
begin
list:=TStringlist.Create;
list.LoadFromFile("x.jpg");
list.SaveToFile("x2.jpg");
end;
Но только ничего не получается. Только первые 6 символов есть и всё.
← →
Leonid Troyanovsky © (2006-10-23 19:21) [1]
> RoLeX (23.10.06 19:17)
> Мне нужно StringList загрузить jpg файл, т.е. чтобы было
> также как открыть файл jpg при помощи блокнота.
Воистину: увидишь на клетке льва надпись "Буйвол" -
не верь глазам своим.
--
Regards, LVT.
← →
Джо © (2006-10-23 19:21) [2]> Почему
Ответ (aka сермяжная правда) кроется в исходном коде метода procedure TStrings.SetTextStr:procedure TStrings.SetTextStr(const Value: string);
var
P, Start: PChar;
S: string;
begin
BeginUpdate;
try
Clear;
P := Pointer(Value);
if P <> nil then
while P^ <> #0 do
begin
Start := P;
while not (P^ in [ #0, #10, #13]) do Inc(P);
SetString(S, Start, P - Start);
Add(S);
if P^ = #13 then Inc(P);
if P^ = #10 then Inc(P);
end;
finally
EndUpdate;
end;
end;
← →
RoLeX (2006-10-23 19:25) [3]Ну так можно ли как-нибудь открыть файл в stringlist"е ?
Если можно примерчик. Спасибо.
← →
Ketmar © (2006-10-23 19:26) [4]>[2] Джо(c) 23-Oct-2006, 19:21
>Ответ (aka сермяжная правда) кроется в исходном коде
>метода procedure TStrings.SetTextStr:
до сих пор, кстати, не могу понять, почему написано именно так. %-( рудименты каких-то загадочных идей создателей генофонда?
← →
Ketmar © (2006-10-23 19:27) [5]>[3] RoLeX 23-Oct-2006, 19:25
>Ну так можно ли как-нибудь открыть файл в stringlist"е ?
а не пояснишь, зачем бинарный (в смысле -- не .txt) файл пихать в TStringList? какой в этом сакральный смысл?
← →
Джо © (2006-10-23 19:29) [6]> [4] Ketmar © (23.10.06 19:26)
Бог весть...
>
>
> [3] RoLeX (23.10.06 19:25)
> Ну так можно ли как-нибудь открыть файл в stringlist"е ?
Ну зачем оно нужно-то?
← →
guav © (2006-10-23 19:31) [7]http://www.delphimaster.ru/cgi-bin/nuts.pl?showpage=4 - см ветку TStrings
← →
Ketmar © (2006-10-23 19:34) [8]>[7] guav(c) 23-Oct-2006, 19:31
ой, нутром чую, что ты прав...
← →
Dmitrij_K (2006-10-23 19:37) [9]
> Мне нужно StringList загрузить jpg файл
5+
← →
RoLeX (2006-10-23 19:38) [10]А где ответ?
> TStrings
>
>
> Почему строки грузятся не полностью, а только первые 5 -
> 6 символов?
>
> ...
> a:tmemo;
> ...
> a.lines.loadfromfile("a.bmp");
> Ответ:
>
> попробуй удачи с exe файлом... там может побольше загрузится.
> .. на два три символа...
> Ответ:
>
> Разве в школе разведчиков не обьясняли разницу между текстом
> и картинкой?
>
> мне надо текст в *.bmp загрузить во что-то и потом изменить
> и сохранить. Через файлы долго.
← →
RoLeX (2006-10-23 19:39) [11]
> Dmitrij_K (23.10.06 19:37) [9]
> > с5+
Мне нужно в StringList загрузить jpg файл
← →
Ketmar © (2006-10-23 19:40) [12]>[10] RoLeX 23-Oct-2006, 19:38
>А где ответ?
а где ответ на [5] и [6]?
← →
Dmitrij_K (2006-10-23 19:44) [13]ОРЕХ
← →
Ketmar © (2006-10-23 19:49) [14]>[13] Dmitrij_K 23-Oct-2006, 19:44
>ОРЕХ
баян.
зыж прочитал это по-английски. долго думал, что есть "опекс"...
← →
RoLeX (2006-10-23 19:54) [15]
> а где ответ на [5] и [6]?
idTCPServer передаёт в AThread.Connection.WriteLn("текст");
вместо "текст" хочу отправить текст файла. Предварительно преобразовав stringlist в string.
← →
Ketmar © (2006-10-23 20:09) [16]>[15] RoLeX 23-Oct-2006, 19:54
ясно. это не в "основная", это в "начинающим". где тебе и пояснят, почему так делать нельзя.
← →
Dmitrij_K (2006-10-23 20:14) [17]
> idTCPServer передаёт в AThread.Connection.WriteLn("текст");
>
> вместо "текст" хочу отправить текст файла. Предварительно
> преобразовав stringlist в string.
чем не устраивают специальные методы отправки винарных данных?
← →
Zacho © (2006-10-23 20:15) [18]Ketmar © (23.10.06 19:49) [14]
долго думал, что есть "опекс"...
А чё думать-то ?
http://en.wikipedia.org/wiki/OPEX
http://www.opex.pt/
OPEX is an alternative trading system (ATS) that that is managed by PEX (Private Exchange). The market was launched in 2003 to provide a trading environment to the small and mid cap securities of Portuguese companies.
И так далее :-)
← →
guav © (2006-10-23 20:17) [19]> [15] RoLeX (23.10.06 19:54)
Произвольную послжеовательность байт не следует так отправлять.
Там есть WriteBuffer, WriteStream и даже WriteFile.
← →
DrPass © (2006-10-23 20:33) [20]
> RoLeX (23.10.06 19:54) [15]
>
> вместо "текст" хочу отправить текст файла
Допустим. А где обещанный ответ на вопрос "зачем бинарный файл (в котором в принципе нет текста) пихать в StringList"?
← →
Ketmar © (2006-10-23 20:37) [21]>[20] DrPass(c) 23-Oct-2006, 20:33
да тут диагноз прост. автор не дружит со справкой. что в примере увидел -- то и запихал. а почитать что-нибудь -- это перегруз моска.
дураки примеры делали, не впихнули туда все возможные варианты...
← →
Anatoly Podgoretsky © (2006-10-23 20:46) [22]Может автору не понятно, что string переводится как строка, то есть текст.
← →
Ketmar © (2006-10-23 20:55) [23]>[22] Anatoly Podgoretsky(c) 23-Oct-2006, 20:46
э-э-э. вот это: #1#18#0#27#4 -- тоже строка. но текст ли? %-)
← →
Leonid Troyanovsky © (2006-10-23 21:24) [24]
> Ketmar © (23.10.06 20:55) [23]
> э-э-э. вот это: #1#18#0#27#4 -- тоже строка. но текст ли?
Кому и хрен - малина, кому и бламанже - полынь.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2006-10-23 22:37) [25]Ketmar © (23.10.06 20:55) [23]
Похоже на текст, такой часто встречается в dfm файле, а ты его оттуда вырезал?
← →
Loginov Dmitry © (2006-10-23 23:37) [26]Можно конечно и в сетку засунуть картинку. Но чем не устраивает TImage ?
← →
Ketmar © (2006-10-23 23:56) [27]>[25] Anatoly Podgoretsky(c) 23-Oct-2006, 22:37
>его оттуда вырезал?
нет. сочинил на ходу. %-)
← →
Gero © (2006-10-24 00:06) [28]> [0] RoLeX (23.10.06 19:17)
А ты картинку таким образом редактировать собрался? Не мучайся, используй фотошоп.
← →
КиТаЯц © (2006-10-24 10:26) [29]
> Anatoly Podgoretsky © (23.10.06 20:46) [22]
>
> Может автору не понятно, что string переводится как строка,
> то есть текст.
Да, так же подумал...
← →
Сергей М. © (2006-10-24 10:42) [30]
> RoLeX (23.10.06 19:54) [15]
>
> idTCPServer передаёт в AThread.Connection.WriteLn("текст");
>
Передающая стророна:
var
fs: TStream;
..
fs := TFileStream.Create("x.jpg", fmOpenRead);
try
AThread.Connection.WriteStream(fs, True, True);
finally
fs.Free;
end;
Принимающая сторона:
var
fs: TStream;
..
fs := TFileStream.Create("x2.jpg", fmCreate);
try
MyIdTCPClient.ReadStream(fs);
finally
fs.Free;
end;
← →
Плохиш © (2006-10-24 11:55) [31]
> Ketmar © (23.10.06 19:26) [4]
> >[2] Джо(c) 23-Oct-2006, 19:21
> >Ответ (aka сермяжная правда) кроется в исходном коде
> >метода procedure TStrings.SetTextStr:
> до сих пор, кстати, не могу понять, почему написано именно
> так. %-( рудименты каких-то загадочных идей создателей генофонда?
Просто создатели генофонда прекрасно знают, что после символа "конец строки" может идти только мусор или зловредный код ;-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.044 c