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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wahnsinn
    А отладчиком не пробовали смотреть, что при этом происходит? Как вариант, сделайте библиотеку только для отправки почты и вызывайте функцию отправки из нее (должно решить проблему). Либо только путем отладки смотреть где что передается и допиливание до рабочего состояния.
    ЗЫ у меня вообще из консоли отправка идет и нормально все Кстати если используется оутлук, то можно отправлять через ОЛЕ аутлука - более кошерно получается.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:41 23-12-2010
    mcdie



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wahnsinn
    У меня тоже проблема с MAPI возникла, на части компьютеров работало, на части нет. Проблему решил возможностью в настройках добавления дополнительного отсылания писем через Ole Lotus Notes. (используемый почтовик)
    Кстати у меня тоже к базе данных Oracle подключение, только через DOA и с очередностью форм проблем никогда не возникало.

    Всего записей: 145 | Зарегистр. 03-05-2006 | Отправлено: 13:48 23-12-2010 | Исправлено: mcdie, 13:55 23-12-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ShIvADeSt
    Через библиотеку я попробовал сразу же, результат тот же. Из любой программы вызов идет нормально, из подключенной к базе - нет.  
    Пока я вывел во внешний com-сервер, но хотелось бы избавиться от него.

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 13:51 23-12-2010
    mcdie



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wahnsinn
    Если ты создаш форму с кнопкой1 (оптравить письмо) и кнопкой2 (подключится/отключится от базы (через ODAC)). Будет ли работать отправка при включенном и выключенном соединении?

    Всего записей: 145 | Зарегистр. 03-05-2006 | Отправлено: 14:03 23-12-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mcdie
    В случае если подключение к базе идет после запуска формы, все работает при любом раскладе. Но если же подключение происходит раньше - ничего уже не помогает.
     
     
    Добавлено:
    Вот простейший пример с 2 вариантами (+ исходник компонента TMapiControl, либо просто проигнорировать все ошибки связанные с ним)
    http://files.mail.ru/ZB7028
    В случае, если в ini файле параметр VID = 1, подключения к базе не происходит и все будет/должно работать. Параметр 0, соотвественно запустит подключение к базе по строке подключения CONNECT и к примеру у меня уже все перестает работать. Последовательность создания модулей в проекте важна, я особо повлиять не могу.

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 15:49 23-12-2010
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wahnsinn
    Повторю вопрос, почему бы не попробовать OLE Outlookа? Достаточно все просто делается и результат неплохой. Единственный минус - надо ставить оутлук 2007, чтобы избежать идиотского предупреждения, что сторонняя программа пытается поюзать оутглюк.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:30 24-12-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ShIvADeSt
    Почтовики разные. Писать частные случаи случаи неочень, хотя конечно можно проверять почтовик и либо прежняя функция или же частный случай - 2003 оутлук.
    Тк протестил - такая проблема только для 2003 оутлука, для всего остального работает. Причем ошибка идет, когда требуется показать письмо пользователю.

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 11:41 24-12-2010
    mcdie



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Wahnsinn
    Запустил твой пример. Работает при подключении через 1 и через 0 (подключение к Оracle). Клиент по умолчанию пробовал Lotus Notes и OutLook 2007. Поэтому непонятно что там у тебя, может в реестре не так прописано что нибудь.

    Всего записей: 145 | Зарегистр. 03-05-2006 | Отправлено: 13:29 24-12-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    mcdie
    так в предыдущем сообщении я написал,что проблема под 2003 оутлуком только.
    а в реестре кажется все стандартно  
    DLLPath mapi32.dll
    DLLPathEx C:\Program Files\Common Files\SYSTEM\MSMAPI\1049\msmapi32.dll

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 14:25 24-12-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. Подскажите как правильно сделать запись:
    через AdoCommand делаю запись в дбф:
    cmd.CommandText := 'CREATE DBF СSale.dbf codepage=866 '+
    (Descript ca(25,0))
    cmd.Execute;
    ----------------------------------------------------------------------------
    card_number : string
     
    cmd.CommandText := 'INSERT INTO CSale.dbf (Descript)
    VALUES ('+card_num+');
     
    cmd.Execute;
     
    Выдает ошибку несовместимости типов.
    Пробовал и через array of char и разное количество ковычек ставил.
    Если строку записать не через переменную то все ок. Спасибо.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 15:55 24-12-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Выранивание строки. Есть Две строки хочу чтобы при объединении их получалось следующие  
    исходные строки 1
    1.
    2.1.
    2.1.1.
    исходные строки 2 соответственно
    пример
    ответ
    задача
    Хочу чтобы получилось
    1.        пример
    2.1.     ответ
    2.1.1.  задача
    Делаю я это следующим образом определяю максимальную длину первой строки добавляю к другим первым строкам пробелы до  максимальной длины. Но вот вчем беда  длина строки с пробелами становиться равной но из разного количества пробелов  получается не ровно
    1.      пример
    2.1.    ответ
    2.1.1.  задача
    и чем больше пустых пробелов тем кривее все смещается.

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 11:17 27-12-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    Все зависит от шрифта, которым будет отображаться текст. Можно использовать моноширинный шрифт (как в редакторе кода), тогда все будет нормально. Или можно высчитывать правильное количество пробелов с помощью Canvas.TextWidth, хотя результат все равно будет не очень. Или с символами табуляции (#9) еще можно попробовать, они специально для этого и создавались.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:29 27-12-2010 | Исправлено: Frodo_Torbins, 11:30 27-12-2010
    ShIvADeSt



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

    Цитата:
    Можно использовать моноширинный шрифт (как в редакторе кода)

    ИМХО самый правильный способ, так как если начать потом прикручивать всякие стили (курсив, жирный) - то замучаешься.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 12:08 27-12-2010
    greenpc

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face
    а так
    Код:
     
    with cmd do
    begin
    CommandText := 'INSERT INTO CSale.dbf (Descript) VALUES (:param1)';
    Parameters.Clear;
    Parameters.CreateParameter('param1', ftString, pdInput, 25, card_num);
    Execute;
    end;

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 14:21 27-12-2010 | Исправлено: greenpc, 14:28 27-12-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    greenpc
    Спасибо большое, то что надо.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 15:05 27-12-2010
    Wahnsinn



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    По поводу моей ситуации с MAPI и Outlook 2003 внос пути (у меня C:\Program Files\Common Files\System\MSMAPI\1049\ ) в системную переменную Path все решил.

    Всего записей: 129 | Зарегистр. 20-01-2007 | Отправлено: 16:57 27-12-2010
    mcdie



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всех с наступающим. Вопрос по XML.
    Есть несколько схем данных XSD. Есть файл XML содержащий несколько таблиц. Вопрос, как можно экспортировать XML в базу данных (dataset) - ищу автоматические или полуавтоматические варианты Delphi7. Порекомендуйте варианты решений.
    В другом топике рекомендовали NativeXML но я так понял, что он только для ручного экспорта.

    Всего записей: 145 | Зарегистр. 03-05-2006 | Отправлено: 14:57 31-12-2010
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mcdie
     
    В OmniXML в модуле OmniXMLDatabase есть процедуры для экспорта/импорта DataSet<->XML
     
    Я как-то тестировал OmniXML vs. NativeXML.
    OmniXML в 1.2-2 раза быстрее NativeXML при загрузке из MemoryStream, но при добавлении узлов "вручную", он по скорости существенно проигрывает.

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 23:16 31-12-2010
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Работаю с библиотекой BASS. Необходимо извлекать исполнителя и название композиции из мета тэгов, приходящих вместе с потоком. Одни тэги приходят одной строкой, а другие представляют собой последовательность нультерминированных строк с двойным заевршающим нулем как признак конца последовательности (ну тут как прям указатель на строки в WinApi если не ошибаюсь). Вид приходящих тэгов заранее известен. Всвязи с этим хотелось бы универсальный доступ и разбор. Я сделал пока так для примера (здесь второй тип тэгов):
     

    Код:
     
    function GetMetaValue(pszMeta: LPTSTR; pszExt: AnsiString): LPTSTR;
    var
      dwPos: Integer;
      dwLen: Integer;
      meta : LPTSTR;
      value: Utf8String;
    begin
      Result := nil;
      meta := pszMeta;
      dwLen := Length(pszExt);
      while (Length(meta) > 0) do
      begin
        dwPos := Pos(pszExt, meta);
        if (dwPos > 0) then
        begin
          value := Copy(meta, dwLen + 1, Length(meta) - dwLen);
          Result := LPTSTR(URLDecode(value));
        end;
        meta := meta + Length(meta) + 1;
      end;
    end;
     
    function BassUtils_GetCastName(stream: HSTREAM): WideString;
    var
      ci  : BASS_CHANNELINFO;
      meta: LPTSTR;
      tmp1: LPTSTR;
      tmp2: LPTSTR;
    begin
      Result := '';
      ZeroMemory(@ci, SizeOf(BASS_CHANNELINFO));
      BASS_ChannelGetInfo(stream, ci);
      case ci.ctype of
        BASS_CTYPE_STREAM_WMA,
        BASS_CTYPE_STREAM_WMA_MP3:
        begin
          meta := BASS_ChannelGetTags(stream, BASS_TAG_WMA);
          if (meta <> nil) then
          begin
            tmp1 := LPTSTR(GetMetaValue(meta, 'author='));
            tmp2 := LPTSTR(GetMetaValue(meta, 'title='));
            Result := FmtCastName(tmp1, tmp2);
          end;
        end;
        BASS_CTYPE_STREAM_OGG:
        begin
          meta := BASS_ChannelGetTags(stream, BASS_TAG_OGG);
          if (meta <> nil) then
          begin
            tmp1 := LPTSTR(GetMetaValue(meta, 'ARTIST='));
            tmp2 := LPTSTR(GetMetaValue(meta, 'TITLE='));
            Result := FmtCastName(tmp1, tmp2);
          end;
        end;
      else
        begin
        end;
      end;
    end;

     
    Проблема в том что tmp1 теряется и в Result я помещаю либо пустую строку либо мусор. Я подозреваю что делаю что-то не так в GetMetaValue склейкой буфера.
     

    Код:
    meta := meta + Length(meta) + 1;

     
    Но как же мне сделать копию PChar? Или есть еще оптимальнее способ?

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 12:38 08-01-2011
    EugeneBoss3



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Знатоки, помогите разрулить проблему с экспортом данных из датасета в таблицу Excel. Суть проблемы: нужно экспортировать данные из датасета в существующую таблицу Excel на определенный лист, например "Дата". Использовал EMS Advanced Data Export VCL, но компонент перезаписывает существующую таблицу Excel. Как эксортировать данные?

    Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 16:17 08-01-2011 | Исправлено: EugeneBoss3, 16:18 08-01-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