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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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


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


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Frodo_Torbins
    Ок, спасибо.
    Я понимаю так Подробнее...
    в procedure TNewThread.Execute; освобождать память так или что то лишнее?
    Dispose(vData);
    freemem(ReceiveData);
     
    greenpc

    Цитата:
    Move((ReceiveData+5*sizeof(pNum))^, pNum, sizeof(pNum));

    к сожалению так не работает...

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 16:52 07-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face
    В старших версиях наверно нужны дополнительные приведения типов: "Move(Pointer(Integer(ReceiveData)+5*sizeof(pNum))^, pNum, sizeof(pNum));".

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 17:16 07-04-2011
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Почему то всегда получается единица...
    В моем коде это строка идет после проверки уина (ppUin).

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 17:46 07-04-2011 | Исправлено: Man_Without_Face, 17:47 07-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face
    Попробуйте куда-нибудь вывести весь буфер.
    А вообще работа с указателями всегда выглядит страшно и несет в себе много скрытых глюков. Я бы сразу же избавился от них примерно так:
    Код:
    type
      TData = packed array of Byte;
    //...
    var
      RD: TData;
    //...
      SetLength(RD, ReceiveDataLength);
      move(ReceiveData^, RD[1], ReceiveDataLength);

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 17:55 07-04-2011 | Исправлено: Frodo_Torbins, 18:01 07-04-2011
    greenpc

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face  
    сейчас из дома дельфей нет. ошибка скорее всего то что смещение 5*size
    правильно будет (5-1)*sizeof() - т.е. 4 байта пропускаем с 5 читаем.
    или (ReceiveData+sizeof(ppUin))^

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 19:18 07-04-2011
    greenpc

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

    Код:
        mas: array of byte;
        mybyte : Byte;
    begin
      SetLength(mas,7);
      for i := low(mas) to High(mas) do mas[i]:=i;
      pIntValue :=@(mas[1]);
      move((pointer(integer(pIntValue)+1))^, mybyte, sizeof(mybyte));
      ShowMessage(IntToStr(mybyte));
    end;
     

    Frodo_Torbins
    прав.
    в догонку насчет "перекидывать между указателями"  
    я бы в процессе перекинул, а в процедуре OnReceivePacket передал напрямую. Потому что процесс выделил память- процесс освободил.
    а так получается на OnReceivePacket мы только выделяем память. а где освобождение.

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 08:59 08-04-2011 | Исправлено: greenpc, 09:11 08-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Да, вроде бы так немного лучше. Хотя лично мне вообще работать с указателями не нравится, да и на выходе компилятор выдаст примерно тоже что и с массивом. Может даже массив сумеет оптимизировать.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 11:03 08-04-2011
    KorolCOOL



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Народ можно ли в Делфи создать программу, в которой можно было бы форматировать текст. Т.е хотя бы жалкое подобие WordPada реально сделать? Чтобы можно было, к примеру, слово курсивом выделить или жирным его сделать, размер шрифта изменить...  
     
    По идее это нужно будет использовать какой-то язык разметки для текста документа? Покопался в интернете, в одном месте кому-то так и советовали, дескать используй HTML теги, а потом пусть все это дело посылается в браузер. А иные вариаты существуют? Может какую библиотеку компонентов нужно притулить?

    Всего записей: 38 | Зарегистр. 04-11-2009 | Отправлено: 15:28 09-04-2011 | Исправлено: KorolCOOL, 15:30 09-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KorolCOOL
    Вместе с делфи поставляется несколько стандартных демок. Откройте демку RichEdit. Это то что вам нужно?

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 15:34 09-04-2011
    KorolCOOL



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Извиняюсь, что сразу не указал, но мне неободимо, чтобы отформатированный текст потом сохранялся в БД и оттуда же потом извлекался для просмотра и редакции. Насчет RichEdit спасибо, будем разбираться.

    Всего записей: 38 | Зарегистр. 04-11-2009 | Отправлено: 07:53 10-04-2011
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    KorolCOOL
    RxDBRichEdit сам в свое время так делал. Без проблем сохранял в акцезе и извлекал потом даже с рисунками. только надо RxLib надо скачать и поставить

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:19 10-04-2011
    KorolCOOL



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt а в MySQL 5 нормально будет сохраняться? Вы мне уже как-то помогали, может помните БД с лабораторками, вот мне необходимо, чтобы отформатирванный текст лабы можно было сохранить и потом выдать на редакцию или просмотр.  
     
    И еще 1 вопрос: Этот компонент позволяет созадавать таблицы или вставлять рисунки? Если нет то что посоветуете для этих целей? И как вы сохраняли рисунки в базу? Вместе со всем содержимым RxDBRichEdit или какое-то отдельное поле для них делали? Наверно все-таки отдельное ведь текст и графика это же как-бе разные типы.

    Всего записей: 38 | Зарегистр. 04-11-2009 | Отправлено: 12:28 10-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt
    Стандартные контролы тоже могут сохранять в БД, RxDBRichEdit хорош не этим. Его плюс в расширенных возможностях форматирования, в него можно вставлять рисунки. И кстати RxLib сейчас входит в JVCL, так что речь скорее о JvDBRichEdit.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 13:48 10-04-2011
    ShIvADeSt



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

    Цитата:
    Его плюс в расширенных возможностях форматирования, в него можно вставлять рисунки.

    Может быть и в рисунках отличия, я просто помню мне надо было с рисунками отображать отформатированные документы. Стандартный мне чем то не подошел, а RxDBRichEdit был само то. Поэтому написал про него.

    Цитата:
    И кстати RxLib сейчас входит в JVCL, так что речь скорее о JvDBRichEdit.

    Я до сих пор сижу на Дельфи 5 с последними апдейтами, так что я веду речь о RxLib

    Цитата:
    И еще 1 вопрос: Этот компонент позволяет созадавать таблицы или вставлять рисунки?

    Он позволяет записывать в базу документ в Рич формате, а внутри него может быть все что угодно.

    Цитата:
    И как вы сохраняли рисунки в базу? Вместе со всем содержимым RxDBRichEdit или какое-то отдельное поле для них делали?

    Самое простое - создаешь в ворде документ, потом сохраняешь его как RTF и потом грузишь в базу через rxDBRichEdit.LoadFromFile и сохраняешь запись.

    Цитата:
    Наверно все-таки отдельное ведь текст и графика это же как-бе разные типы.

    Внутри rtf (или doc) - это все может спокойно вместе лежать. Just test it!

    Цитата:
    ShIvADeSt а в MySQL 5 нормально будет сохраняться?

    Я не знаю какие типы данных в мускуле используются, но по идее проблем быть не должно - по идее RTF это обычный текстовый документ с разметкой. Поэтому если поле сделать текстовым, то ртф туда нормально положится. Только размер должен быть большым.


    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 16:26 10-04-2011
    V1s1ter



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

    Цитата:
    в MySQL 5 нормально будет сохраняться

    BLOB поле потерпит все.
    Еще посмотри как варианты (особенно в плане в тексте таблиц, так как не все компоненты с ними корректно работают):
    WPTools, TRichView, InfoPowerStudio.
     

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 17:06 10-04-2011
    KorolCOOL



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Теперь возник следующий вопрос. В BLOB можно использовать поиск (по тексту например)? Ведь получается, что это поле в себе хранит файл (или просто двоичные данные, не знаю как грамотней выразиться) а не информацию определенного типа.

    Всего записей: 38 | Зарегистр. 04-11-2009 | Отправлено: 13:22 11-04-2011
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    это:
    winexec(PChar('cmd /c net stop slughba'),SW_SHOW);
     
    И
    winexec(PChar('net stop slughba'),SW_Show);
     
    Это одинакоГо правильно?
    И
    Допустим мне нужно ввести последовательно вышеприведенным способом
    несколько команд...
    Можно  ли  сделать  чтобы  следующая  команда  не  выполнялась пока не
    выдолнится исходная???
    Спасибки...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:59 11-04-2011
    V1s1ter



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

    Цитата:
    В BLOB можно использовать поиск (по тексту например)?

    Вы собственно сами ответили на вопрос

    Цитата:
    поле в себе хранит файл (или просто двоичные данные, не знаю как грамотней выразиться) а не информацию определенного типа

    Только нужно еще добавить: ... и поэтому все операции связанные с предствалением, поиском и т.п. в BLOB полях реализуются программистом самостоятельно.
    Как и какой поиск делать зависит от конкретной решаемой задачи.
     
    Добавлено:
    GRom V

    Цитата:
    Это одинакоГо правильно?

    Функция WinExec является устаревший и вместо нее рекомендуется использовать функции ShellExecute или CreateProcess.

    Цитата:
    Можно  ли  сделать  чтобы  следующая  команда  не  выполнялась пока не
    выдолнится исходная???  

    Можно, пример
    Подробнее...

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 16:36 11-04-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Посмотрите опции cmd.exe. Там есть возможность передавать сразу несколько строк. Ну или можно временный батник создать.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 17:49 11-04-2011
    ShIvADeSt



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

    Цитата:
    Функция WinExec является устаревший и вместо нее рекомендуется использовать функции ShellExecute или CreateProcess.  

    Для простейших операций запуска WinExec за глаза А вот если требуется дождаться пока внешняя программа отработает, тогда CreateProcess.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:57 12-04-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru