Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5

Модерирует : ShIvADeSt

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Не подскажите как мне лучше задавать константный информационный текст?
    Например
    есть ReadOnly memo
    в него нужно выводить разные тексты (многострочные)
    как это грамотрнее сделать?
     
    То как я знаю
    вариант1

    Код:
    //прямо в коде
    memo.stings.add('kljdfgkdgb');
    memo.stings.add('kljdfgkdgb');
    memo.stings.add('kljdfgkdgb');
     

    вариант2

    Код:
    //сначала
    resourcestring
    pText1='dfkgjlgkb'+#13#10+'srgfsergr'+#13#10+'srgfsergr';
    //в коде
    memo.text:=pText1;
     

     
     
    А как можно еще?

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 15:20 16-03-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus

    Цитата:
    А как можно еще?

    грузить из файла или длл...
    медленнее, но гораздо гибче и ничего не надо перекомпилировать при любых изменениях...

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 15:52 16-03-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто нибудь использовал в delphi сишную библиотеку OpenCV

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 16:07 16-03-2010
    vetal71



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    mvictor71
    Спасибо. Вопрос снят с помощью Advantage

    Всего записей: 299 | Зарегистр. 08-09-2008 | Отправлено: 16:25 16-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Ок это тоже понянто
    но такая гибкость пока не нужна
    нужно удобство и гибкость на уровне кода. Только.  
    То есть пока все это пишется нужно что-то красивое и удобное именно для разработчика
    потом буду думать о поддержке.

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 16:44 16-03-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus, используй ресурсы. Создаёшь RC-файл, прописываешь в нём необходимые константы либо непосредственно, либо как ссылки на внешние текстовый файлы. RC-шник можно либо скомпилить и в виде RES-файла подключить к проекту, но лучше (имхо) включить в проект сам RC-шник, тогда дельфя будет автоматом при компиляции проекта компилить ресурс и внедрять в экзешник.
     
    Останется только в коде загрузить эти строки (LoadResString, если мне не изменяет память ) и заюзать.

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 17:10 16-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AviDen
    О! Совсем забыл про это.
    А можно кратенько буквально в пару строк
    как проще всего создать rc-шник
    как заюзать его ресурс
    и о формате rc-файла где можно глянуть?

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 17:30 16-03-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus
    тогда ещё проще:
    создаёшь *.inc и в него все стринги на уровне констант, сам инклудник -- как часть проекта
    только какая на фиг это

    Цитата:
    удобство и гибкость на уровне кода.

    это каждая перекомпиляция при изменении одного символа -- это самый дурной тон в использовании ресурсов

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 17:47 16-03-2010 | Исправлено: akaGM, 17:54 16-03-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus
    RC-шник - обычный текстовый файл с содержимым наподобие следующего:

    Код:
     
    text_res_name_1 RCDATA  res_file_1.txt
    text_res_name_2 RCDATA  res_file_2.txt
     

    файлы могут быть указаны с путями (абсолютными либо относительными)
    Включаешь его в проект (project | add to project)
     
    Для доступа к содержимому:

    Код:
     
    Function LoadText(ID: String): String;
    Var
      HRes: HRSRC;
      P: PChar;
    Begin
      HRes:= FindResource(HInstance, PChar(ID), RT_RCDATA);
      P:= LockResource(LoadResource(HInstance, HRes));
      SetString(Result, P, SizeofResource(HInstance, HRes));
    End;
     

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 17:55 16-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM

    Цитата:
    это каждая перекомпиляция при изменении одного символа -- это самый дурной тон в использовании ресурсов

    Это нужно на этапе проектирования и первичного тестирования. Пока набрасываешь скелет. Все равно постоянно пересобираешь. Что бы все тексты были в одном или ограниченном месте. И одинаково применялись.
    По факту все будет в базе.
    AviDen
    Большое спасибо, попробуем.

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 20:38 16-03-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus
    тогда я б в твоём случае инклудниками обошёлся...

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 21:08 16-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    так может инклудники будут более громоздки чем resourcestring?

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 22:58 16-03-2010 | Исправлено: lingus, 23:01 16-03-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имхо если не требуется возможность изменения текста без перекомпиляции экзешника (т.е., динамическое их получение из файла/БД), то
      1) если это строки небольшие - идеально использовать ResourceString или просто Const, при их большом количестве можно даже выносить их в отдельный .pas или .inc файл (чтобы потом было удобнее с ними работать, напр., локализовывать)
      2) если это большие куски текста (блоки в десятки/сотни строк) - удобнее всего через ресурсы (размещая блоки в отдельных файлах)

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 09:30 17-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AviDen
    akaGM
    С этим разобрался. Спасибо.
     
    Второй вопрос: а как описать в подобной же ситуации древовидную структуру
    с глубиной мах 3
    и количество веток мах 4 в узлах
     
    количество задал для того, чтобы не предлагали массивы и списки для хранения дерева.
    нужно так же на уровне констант задать небольшое дерево
     

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 13:52 17-03-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus

    Цитата:
    так может инклудники будут более громоздки чем resourcestring?

    а ты используй resourcestring в инклудниках :)
    посмотри, например, юнит SysConst.
     

    Цитата:
    чтобы не предлагали массивы и списки для хранения дерева

    тогда используй вместо дерева куст :)
    ничего лучше списка/дерева для этих целей не придумано (см. Кнута), и зачем нужно байсикл изобретать?

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 14:10 17-03-2010 | Исправлено: akaGM, 14:16 17-03-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    lingus, фаром, надеюсь, пользоваться умеешь? отобрази в нём дерево каталогов (Ctrl+T кажись), закрой и после этого взгляни в корне диска на tree.far. Его структура какбы прозрачно намекает на самый примитивный способ описания дерева.
     
    Если узлы дерева, кроме названия, должны иметь дополнительные атрибуты, проще всего заюзать нечно вроде ini-файла, в котором имена узлов вместе с путями будут названиями секций, а внутри оных - всё, что душе пожелается. Ну, или для любителей сделать с подвыподвертом - есть ещё XML. Или JSON. Да мало ли что ещё есть.

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 15:08 17-03-2010 | Исправлено: AviDen, 15:10 17-03-2010
    lingus



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AviDen
    Мне нужно гораздо проще в плане кода.
    Сделал так:

    Код:
      i:=CreateFolder(-1,'Папка раз','Текст папки первой');
        CreateModule(i,mtHello);
        CreateModule(i,mtDataBase);
        CreateFolder(i,'Папка два','Текст папки следующей');
      i:=CreateFolder(-1,'Папка четыре','Текст папки последней');
        CreateModule(i,mtHello);
        CreateModule(i,mtDataBase);
     

    Всего записей: 73 | Зарегистр. 08-05-2008 | Отправлено: 16:13 17-03-2010 | Исправлено: lingus, 16:14 17-03-2010
    zakov



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!  
    Подскажите как программно регистрировать DCOM класс сервера на клиенте, т.е. без запуска серевера на клиенте. Должна быть какая-нить функция, которую используют компоненты Delphi при инициализации сервера. Интересует в контексте Delphi 7.
    Может кто сталкивался, ткните носом в модуль, а то так лень по исходникам лазить...

    Всего записей: 163 | Зарегистр. 24-01-2008 | Отправлено: 23:36 17-03-2010
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    zakov
    Зрегистрировать COM/COM+/DCOM так же, как это делает конечная ситсема, например win2000, используя TRegistry. Но скорее всего он и останется просто зареганым, как возможное для юзания количество байтов.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:13 18-03-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет, подскажите пож, такой вот вопрос:
    Стояла BDS 2006, поставил CodeGear 2007. Поставил более новые DevExpress v48.
    Проект старый, не мой. Начал ругаться на [DCC Error] ERPC_Interface.dpk(33): E2202 Required package 'cxLibraryD10' not found (Поменял на cxLibraryD11). Теперь ругается на
    [DCC Error] ERPC_Interface.dpk(72): F2051 Unit ERP_Interface was compiled with a different version of cxRadioGroup.TcxRadioButton. Можно ли это исправить или ставить обратно Delphi 2006?
     
    Добавлено:
    И второй вопрос: если запускать более позднии версии проекта, то проект вообще не загружается, выдает ошибки:
    1. Unable to load project D:\Erpc_interface.dproj
    Unable to create project D:\Erpc_interface.dproj. This project will be removed from the project group.
    2. Node "BorlandProject" not found.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 12:28 18-03-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru