Форум: "Потрепаться";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизTStrings Найти похожие ветки
← →
Agent[007] (2004-01-26 18:55) [0]Почему строки грузятся не полностью, а только первые 5 - 6 символов?
...
a:tmemo;
...
a.lines.loadfromfile("a.bmp");
...
← →
Palladin (2004-01-26 18:57) [1]попробуй удачи с exe файлом... там может побольше загрузится... на два три символа...
← →
TUser (2004-01-26 19:02) [2]Ваще, если тебе удалось 5-6 строк из bmp грузануть - мои поздравления. Тут недавно обсуждался вопрос, как bmp в TStrings засунуть, я привел код - ищи в форуме. При такой загрузке у меня грузилось только "BMP|" и все.
А по сабжу - while not EOF(filevar) do begin ... end;
← →
Юрий Зотов (2004-01-26 20:00) [3]> Agent[007] © (26.01.04 18:55)
Разве в школе разведчиков не обьясняли разницу между текстом и картинкой?
← →
Agent[007] (2004-01-26 22:18) [4]мне надо текст в *.bmp загрузить во что-то и потом изменить и сохранить. Через файлы долго.
← →
Митяй2 (2004-01-26 22:50) [5]Читай файл не по байтам, а блоками быстрее будет...
← →
MadGhost (2004-01-26 23:06) [6]по моему этому посту прямая дорога в "Орешник".
← →
Германн (2004-01-27 01:14) [7]Наверно, у него (Agent[007] ©) банкнота сгорела полностью, в отличии от известной рекламы. И другого выхода передать информацию, кроме через файл, у него нет. :(
:)))
← →
sniknik (2004-01-27 08:56) [8]> мне надо текст в *.bmp загрузить во что-то и потом изменить и сохранить. Через файлы долго.
думаеш loadfromfile не через файл работает? а через что тогда?
долго в твоей реализации, ее и меняй, > Митяй2 (26.01.04 22:50) [5]
← →
TUser (2004-01-27 10:25) [9]В TBitMap его надо загружать.
← →
YuRock (2004-01-27 10:38) [10]Быстрее всего через ReadFile() загрузить в память, там изменить, а затем в файл записать.
P.S. Вот только что там изменять :))
Если уж что-то подобное делать, надо оперировать функциями GetDIBits/SetDIBits
← →
Некто (2004-01-27 11:18) [11]TStrings может хранить только текстовую информацию (коды символов выше $20) .Любой бинарный файл (в том числе и .BMP) содержит любые символы (от $00 до $ff), которые при загрузке в TStrings воспринимаются как разделители строк. Поэтому и получается "каша".
P.S. Не рановато ли взялся за обработку графики?
← →
Юрий Зотов (2004-01-27 13:52) [12]> Некто (27.01.04 11:18) [11]
TStrings действительно может хранить в себе только текстовую информацию, но это не коды символов выше $20, а все коды, кроме нулевого.
Например, переводы строк (#13#10) вполне успешно хранятся, не так ли?
← →
Agent[007] (2004-01-27 14:08) [13]Я хотел сделать так, чтобы графику из моей проги никто не воровал простым методом.
У меня есть БМП. Грузим её в строки, как обычный текст и каждый символ изменяем, например:
for i:=0 to count do
for j:=0 to length do
strings[i,j]:=Chr(Ord(strings[i,j]) + 50);
Вот это я и хочу с битмапами сделать.
← →
alex_*** (2004-01-27 14:13) [14]Маньяк. Сделай xor для заголовка bmp
← →
Некто (2004-01-27 14:19) [15]2 Agent[007]
...и картинка становится ярче... или темнее; с артефактами при переполнении...
Забудь об этом! Обрабатывать растр как последовательность символов - это абсурд! Такая обработка займет уйму времени!
2 Юрий Зотов
Это точно... :)... А вот станет ли он хранить ";" в случае Delimiter = ";"? :)... ("Провокация!" (С))
← →
Юрий Зотов (2004-01-27 14:20) [16]> Agent[007] © (27.01.04 14:08) [13]
> У меня есть БМП. Грузим её в строки, как обычный текст
> и каждый символ изменяем
1. Нельзя загрузить, как обычный текст то, что обычным текстом не является.
2. Вообще-то, кроме массивов символов (т.е. строк) существуют еще массивы байт. Которые могут содержать ЛЮБУЮ информацию и которые можно точно так же кодировать и декодировать.
> Я хотел сделать так, чтобы графику из моей проги никто не
> воровал простым методом.
Самый простой метод своровать графику из любой программы - это клавиша Print Screen плюс программа Paint. И все Ваше кодирование тут же становится никому не нужным.
← →
GrayFace (2004-01-27 14:55) [17]Юрий Зотов © (27.01.04 13:52) [12]
Как раз коды #13#10не хранятся. Они приводят к созданию новой строки. В результате #10, #13 и #13#10 неразлечимы.
Agent[007] © (27.01.04 14:08) [13]
Используй, например, AsPack.
← →
Юрий Зотов (2004-01-27 15:24) [18]> GrayFace © (27.01.04 14:55) [17]
> Как раз коды #13#10не хранятся.
Речь не идет о том, хранятся ли они в конкретно в TStrings, или вставляются динамически в GetTextStr. Речь идет о том, что в длинной строке ничто не мешает хранить любые символы, кроме #0. И это действительно так и есть.
← →
alex_*** (2004-01-27 15:28) [19]
FS := StringOfChar(#0,20);
ShowMessage(IntToStr(Length(FS)));
и что мешает хранить 0 ?
← →
Юрий Зотов (2004-01-27 16:21) [20]> alex_*** © (27.01.04 15:28) [19]
Еще одну строчечку добавьте - сами увидите:
FS := StringOfChar(#0, 20);
ShowMessage(IntToStr(Length(FS)));
ShowMessage("Начало" + FS + "Конец");
Так что ХРАНИТЬ - ничто не мешает. А вот ПОЛУЧИТЬ - мешает. А какой смысл хранить то, чего нельзя получить? Это уже игра в Мавроди называется.
← →
alex_*** (2004-01-27 16:37) [21]ну как это получить нельзя... работать как с массивом байтов. Изврат, конечно... Но агент хотел же через строки...
← →
Th (2004-01-27 16:47) [22]о воровстве графики...
я может ошибаюсь, но есть такая клавиша - PrintScreen
← →
Agent[007] (2004-01-27 17:08) [23]ну изменить то с принт скрином нельзя, а если БМП будет просто так храниться, то её изменит какои-нибудь дурак и выдаст, как своё.
2 GrayFace
че ещё за AsPack?
← →
Тимохов (2004-01-27 17:12) [24]
> Agent[007] © (27.01.04 17:08) [23]
Конечно нельзя изменить. Можно сохранить в файл из буфера. А потом изменить. И конечно же потом выдать за совое. :))))
← →
Agent13 (2004-01-27 17:17) [25]2Agent[007]:
А ты возьми, и на поверх своих битмэпов, (если конечно они у тебя не миниатюрные вроде иконок), каким-нибудь бледным цветом, (чтобы глаз не резало) напиши: "Agent[007]",вот это негодяи точно замучаются выдирать :)
← →
Юрий Зотов (2004-01-27 17:18) [26]> alex_*** © (27.01.04 16:37) [21]
> ну как это получить нельзя... работать как с массивом байтов.
См. [16], пункт 2. Но напомню, что Вы говорили о нуле именно в СТРОКЕ, а не в массиве байт.
> Но агент хотел же через строки...
Что ж, хотеть не вредно. Я вот на Луну хочу.
← →
Th (2004-01-27 17:18) [27]Ну если очень хотите защитить картинки в ехе, (хотя по мне это бессмысленно, картинки в программах - далеко не главное, я бы на вашем месте больше функциональной части уделял внимания), то можно сделать так:
1. с помощью WinAPI функций для работы с ресурсами выцепить нужную картинку из exe файла (она будет у вас "в руках" в виде так называемого memory bitmap);
2. с помощью WinAPI функций каждую точку закодировать - например xor"ом, как предлагали, при этом не забыть различать форматы bitmap"а (1 bpp, 8 bpp, 16 bpp, 24 bpp, 32 bpp)
3. сохранить bitmap обратно в ресурс
Все будет "не через файлы", быстро и красиво. Но для реализации человеком вашего опыта надо много читать...
← →
Th (2004-01-27 17:20) [28]PS последний пост для Agent[007]
← →
Юрий Зотов (2004-01-27 17:21) [29]> Th (27.01.04 17:18) [27]
См. конец поста [16].
← →
Тимохов (2004-01-27 17:21) [30]Еще предложение - всю графику запихнуть в ехе, но пользователю не показывать вообще.
← →
Th (2004-01-27 17:23) [31]> Юрий Зотов
Простите, вашу реплику про волшебную клавишу пропустил, но как видите, здесь все хитрее.. ;)))
← →
Юрий Зотов (2004-01-27 17:26) [32]> Th (27.01.04 17:23) [31]
Видимо, да. В связи с чем, самое правильное предложение дано в [30].
:о)
← →
Тимохов (2004-01-27 17:28) [33]
> Видимо, да. В связи с чем, самое правильное предложение
> дано в [30].
> :о)
Я знал, что вы оцените мою шутку :)))))))
← →
TUser (2004-01-27 18:43) [34]Чтобы графику не воровали, надо в программе, написанной на ворованной Delphi, использовать графику с электронной подписью. Если своруют - подавать в суд. Правда, все равно воровать будут.
← →
ak (2004-01-29 11:36) [35]> Юрий Зотов [20]
а ShowMessage(IntToStr(Length("Начало" + FS + "Конец"))) пробовал?
прсто в ShowMessage вызывается Windows.DrawText, который не рисует строку дальше 1го нуля. а получить ее и сохранить обратно в картинку ничего не мешает. только все 0D и 0A заменятся на 0D0A,
но это другой вопрос.
← →
VMcL (2004-01-29 13:07) [36]>>Agent[007] © (26.01.04 22:18) [4]
>мне надо текст в *.bmp загрузить во что-то и потом изменить и сохранить. Через файлы долго.
TFileStream и/или TMemoryStream ни в какую?
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.008 c