На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
С Днём Защитника Отечества!

msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Невидимые символы в строке
Всем доброго времени суток.
Вопрос такой: я присваиваю свойству Text узла дерева TreeView значение, составленное из нескольких переменных типа String. В дальнейшем мне нужно, используя это свойство, восстановить эти переменные. Можно ли, формируя значение Text, ввести в него невидимые на экране символы, чтобы потом, перебирая Text, выделить исходные строки? Хотел воспользоваться свойством узла Data, но дерево сохраняется в файл, а объекты вроде не сохраняются? Прошу подсказать, что можно сделать.
В общем случае - сложно. Но можно попробовать такую ахинею:
1.после первой строки идёт 0 (завершение).
2.после нуля ставим число переменных, кои будут хранимыми строками.
3.и так (по порядку, одна за другой) пишем каждую следующую строку.
4.читаем по нашему договорённому формату.

Трудности:
1.если кто-то ещё полезет менять узел Text, то нашим данным - хана.
2.надо сделать (себе) прямой доступ к полю Text, что тоже несколько нетривиально.

Добавлено
В итоге будет примерно так: "мама\02мыла\0раму\0", где \0 означает символ с кодом 0.
можно написать свой аналог SaveToFile (TTreeStrings.SaveTreeToStream), в котором собрать в одну строку Node.Text и StringList из Data (например, с помощью CommaText или DelimitedText)
Цитата Славян @

Программка для личного пользования. Св-во Text изменяется только программно.
2.после нуля ставим число переменных, кои будут хранимыми строками.
А зачем? Я знаю, что там 6 строк. Т.е. мне достаточно вставить между строк символ с кодом 0 при формировании значения Text, а потом идти по значению Text и ловить этот символ. А как его вставить в строку?
Сообщение отредактировано: newkaz -
В Си есть функция класса - c_str(), коя возвращала указатель на хранимую строку. Его можно было использовать для прямого доступа и записи чего угодно в строку (в набор байт). В Паскале=Дельфи как-то аналогично можно, уверен я.
С чем работаем? С текстом или с потоком битов.
Цитата Славян @
В Си есть функция класса - c_str()

/n/О/и другие EC последовательности тоже?
Цель - ничто , процесс - все.
Работаю с текстом. Вроде нашел выход, но нет времени полностью проверить часть кода. Есть такой код - #160, неразрывный пробел, на экране не отображается. Начал пробовать - вроде должно подойти. У меня строка состоит из нескольких строк, и в результирующей строке они разделяются пробелами. Разбиваю результирующую строку строкой ' '+#160 или #160+' ', при обработке проверяю на символ #160. Количество объединяемых строк постоянно, поэтому алгоритм извлечения исходных строк несложный. Проверю полностью - отпишу результат.
Цитата MBo @
можно написать свой аналог SaveToFile (TTreeStrings.SaveTreeToStream), в котором собрать в одну строку Node.Text и StringList из Data (например, с помощью CommaText или DelimitedText)

:good:

Очень не советую мучится с невидимыми символами и пихать всё в Text. Data для того и создан... Удивительно что нет возможности кастомизации сохранения. Быть может, есть что нибудь в делфях на MVC? Чтобы вообще не юзать этот Text, а использовать, нечто на вроде ListModel<CustomModel> который как раз будет обязан выдать getText(), и getData(), типичный такой LabelProvider.
Сообщение отредактировано: VisualProg -
CyberLock | BloodBath-LAN
Немного творчества - альбом ArtMetal [Metal, Instrumental, Orchestral]
Цитата VisualProg @
типичный такой LabelProvider.

На сколько он типичен? См ниже.
Цитата VisualProg @
Чтобы вообще не юзать этот Text, а использоват


Добавлено
Цитата VisualProg @
который как раз будет обязан выдать getText(), и getData(),

Разница есть, между ф-и?

Добавлено
В исходники смотрите.
Сообщение отредактировано: Bas -
Цель - ничто , процесс - все.
Если редактирования дерева не требуется, то перевод строки тоже отлично спрячет хвост метки узла
TreeView1.Items.AddChild(nil, 'node caption'#13#10'you wont see me');
Сообщение отредактировано: Fr0sT -
Codero ergo sum
// Программирую — значит, существую
Извините, не попробовал, но перевод строки в тексте нода не отобразится?
Нет
Codero ergo sum
// Программирую — значит, существую
К сожалению, да. Жирная вертикальная черта при #13 или #10 и две черты при #13#10.
Сообщение отредактировано: newkaz -
ExpandedWrap disabled
      TreeView1.Items.Add(nil, 'hi'#13#10'invisible');


Прикреплённый файлПрикреплённый файлscreenshot_2018_02_16_001.png (559 байт, скачиваний: 13)
Прикреплённый файлПрикреплённый файлclipboard.png (1,03 Кбайт, скачиваний: 14)

ЧЯДНТ?
Сообщение отредактировано: Fr0sT -
Codero ergo sum
// Программирую — значит, существую
Не понял ЧЯДНТ?
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1423 ]   [ 22 queries used ]   [ Generated: 25.02.18, 13:32 GMT ]