Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Почему в 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.052 c
2-1161087371
Svetlena
2006-10-17 16:16
2006.11.05
Dos


1-1159166924
aKirill.INFO
2006-09-25 10:48
2006.11.05
Формат фала msm и msi


1-1159182939
Max4
2006-09-25 15:15
2006.11.05
Перехват сообщения в наследнике.


2-1161623431
HelloWord
2006-10-23 21:10
2006.11.05
Версия файла


3-1157687718
Slym(RO)
2006-09-08 07:55
2006.11.05
Advantage и кривые blobы как пофиксить?