Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.048 c
15-1160984910
Shorokhov
2006-10-16 11:48
2006.11.05
Оцените задачку


11-1137337946
homm
2006-01-15 18:12
2006.11.05
Rich Edit не хочет грузить большие файлы


2-1161086311
regdown
2006-10-17 15:58
2006.11.05
Помгите с записью ресурсов


15-1160733102
Elen
2006-10-13 13:51
2006.11.05
Математический Вопрос


2-1161337013
svt
2006-10-20 13:36
2006.11.05
access 2.0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский