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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, помогите с проблемой такой :
 
Есть проигрыватель Media Player Classic Home Cinema(написан на С++ в Visual Studio), у него есть свой API, общение с ним идет посредством SendMessage с параметром WM_COPYDATA, в свою очередь проигрыватель в ответ шлет тоже SendMessage c WM_COPYDATA.
 
Все вробе отлично, пример на С++ работает на ура. Сдела тестовую прогу на Delphi - она отсылает сообщения, все нормально. А вот принятие сообщений не работает, вернее сообщения приходят от проигрываетлся в программу только после закрытия самого проигрыватеся.
 
за принятие сообщений отвечает данная процедура :
 
  private
    { Private declarations }
    procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
 
...
 
procedure TForm1.WMCopyData(var Msg: TWMCopyData);
begin
  ShowMessage('WMCopyData'+#10#13+IntToStr(Msg.CopyDataStruct.dwData)); // Это временно для проверки.
end;
 
 
Так вот Сообщение показывается после того как проигрыватель закрыть, причем приходят все кучей.
 
З.Ы. - все, всем спасибо - разобрался, дело было в самом MPC

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9226 | Зарегистр. 11-05-2006 | Отправлено: 10:18 16-03-2009 | Исправлено: Aleksoid1978, 10:47 16-03-2009
HekTo

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.  
 
Никто не подскажет, почем данный фрагмент в D2009 вызывает ошибку обращения к памяти ?

Код:
 
удалено
 

 
Разобрался, спасибо, мой косяк

Всего записей: 186 | Зарегистр. 30-09-2003 | Отправлено: 11:47 17-03-2009 | Исправлено: HekTo, 13:56 17-03-2009
asdnsd



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый всем день
 
У меня возник следующий вопрос. Есть программа работающая с базой данных (MS SQL, DB2 не важно). Необходимо продумать каким образом можно в хранилище данных этой программы т.е в БД помещать данные из внешних систем. Внешние системы генерируют XML файлы.
 
Пока идеи следующие:
1. В программе создать некий редактор правил по преобразованию документов XML в набор данных (по типу XML Mapper) программы. Но пока не знаю с какой стороны подступится
 
2. Форматировать XML документы с помощью XSLT и получать например запросы к базе данных которые будет выполнять программа. (Продемонстрировано такое решение  тут в конце статьи)
Основной недостаток этого способа администратору необходимо хорошо знать структуру БД.
 
Что можете посоветовать? Возможно есть более гибкое решение.

Всего записей: 447 | Зарегистр. 21-05-2007 | Отправлено: 12:10 17-03-2009
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HekTo
 
У меня все отлично работает в 2009, накидал быстро :
 
type
  TStringItem = record
    Index: Integer;
    enText: string;
    ruText: string;
    Modified: Boolean;
  end;
 
...
 
procedure TForm1.FormCreate(Sender: TObject);
Var
  fItems: array of TStringItem;
begin
  SetLength(fItems, 30);
end;

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9226 | Зарегистр. 11-05-2006 | Отправлено: 13:34 17-03-2009
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
asdnsd
Склонен к решению 2. Это имнетерсный мир. Но помимо этого решение состоит в том, что в Вашей проге имеются только Ваши данные и имеется возможность Вашими средствами заполнить эти данные правильно. Изучив Вашу программу заполнить базу сможет даже "простой вебер" ). Если есть возможность сформировать SQL там или интерактивную среду принимающую transformNod-ы, то Ваша задача по написанию правил и документаций закончена. Но это только иак называемый кастом импорт. А экспорт? Как думаете трансформ не подходит?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:00 17-03-2009
asdnsd



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Для экспорта данных во внешние приложения будет создан механизм выдачи XML файлов как локально (складировать куда надо по требованию), так и через HTTP протокол т.е будет создан web сервер, который принимая запросы в определённой задокументированной форме будет обращаться к шаблонам на стороне сервера и выдавать XML данные в той форме которая прописана в шаблонах.

Всего записей: 447 | Зарегистр. 21-05-2007 | Отправлено: 21:10 17-03-2009
Andrey128

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне нужно отформатировать вещественные числа без указания Precision и Digits (я их не знаю).

Код:
var
  V: Double;
begin
  V := 1.3;
 

Результаты форматироания такие:
Код:
a) FloatToStr(V) = '1.29999995231628'
b) FloatToStrF(V, ffGeneral, 15, 0) = '1.29999995231628'
c) FloatToStrF(V, ffGeneral, 0, 0) = '1.3'
 

Вариант (c) меня устраивает, но терзают смутные сомнения о его надежности.
Какие подводные камни могут встретиться с такими параметрами?
 
Вот цитата из Королевства Delphi
Цитата:
ffGeneral.
С этим форматом функция выводит Precision значащих цифр, обрезания знаков после запятой не производится, “добивания” нулями до Digits- тожe не производится. Параметр Digits тут бесполезен, пока не используется экспоненциальный формат. Экспоненциальное представление применяется если входное значение меньше 0.00001, либо, как и в случае ffFixed, если целая часть содержит более Precision цифр

Всего записей: 409 | Зарегистр. 16-01-2003 | Отправлено: 08:28 18-03-2009
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, не знаю что делать, но необходима работа с Wide функциями реестра Windows. Необходимо прочитать список значений через RegEnumValueW, но в Delphi 7 параметр lpValueName Ansi, пришлось поэтому переделать в отдельном модуле функцию как:
 

Код:
function _RegEnumValueW(hKey: HKEY; dwIndex: DWORD; lpValueName: PWideChar;
  var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD;
  lpData: PByte; lpcbData: PDWORD): Longint; stdcall; external advapi32 name 'RegEnumValueW';

 
Ну и собственно сам код:
 

Код:
procedure EnumRegistryRoutesW(RootKey: HKEY; SoobKey: WideString);
var
  dwIndex  : Integer;
  ErrorCode: Integer;
  RegString: WideString;
  hReadKey : HKEY;
  dwBuffer : Pointer;
  dwBufSize: DWORD;
  MsgString: WideString;
begin
  ErrorCode := RegOpenKeyExW(RootKey, PWideChar(SoobKey), 0, KEY_READ, hReadKey);
  if ErrorCode = ERROR_SUCCESS then
    begin
      dwBufSize := 1024;
      GetMem(dwBuffer, dwBufSize);
      dwIndex := 0;
      ErrorCode := ERROR_SUCCESS;
      while ErrorCode = ERROR_SUCCESS do
        begin
          dwBufSize := 1024;
          ErrorCode := _RegEnumValueW(hReadKey, dwIndex, dwBuffer, dwBufSize, nil, nil, nil, nil);
          if ErrorCode = ERROR_SUCCESS then
            begin
              SetLength(RegString, dwBufSize);
              CopyMemory(PWideChar(RegString), dwBuffer, dwBufSize);
              MsgString := MsgString + RegString + #13#10;
              Inc(dwIndex);
            end;
        end;
      FreeMem(dwBuffer);
      RegCloseKey(hReadKey);
    end;
  MessageBoxW(0, PWideChar(MsgString), nil, MB_ICONINFORMATION);
end;

 
Проблема в том что текст выводится квадратиками, начиная после 3 прочитанного значения. Собственно как можно исправить данное положение?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:42 18-03-2009
ZZZek

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь пробовал из Delphi выводить в Word формулы, которые потом открывались бы с помощью редактора формул или mathtype (OLE objects)? Подскажите, пожалуйста, как с этим возиться. Заранее спасибо.

Всего записей: 38 | Зарегистр. 19-03-2006 | Отправлено: 23:58 18-03-2009
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
если честно, лень было разбираться - очень сильно ты перемудрил с пойнтером и прочим. Вот что нагуглил.
 

Код:
 
procedure TTntRegistry.GetValueNames(Strings: TTntStrings);
var
  Len: DWORD;
  I: Integer;
  Info: TRegKeyInfo;
  S: WideString;
begin
  if (not Win32PlatformIsUnicode) then
    inherited GetValueNames(Strings.AnsiStrings)
  else begin
    Strings.Clear;
    if GetKeyInfo(Info) then
    begin
      SetLength(S, Info.MaxValueLen + 1);
      for I := 0 to Info.NumValues - 1 do
      begin
        Len := Info.MaxValueLen + 1;
        RegEnumValueW(CurrentKey, I, PWideChar(S), Len, nil, nil, nil, nil);
        Strings.Add(PWideChar(S));
      end;
    end;
  end;
end;
 
 


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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:41 19-03-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZZZek
ну получается формулы это ж как и сам ворд OleObject... наверно каким то образом можно в один OleObject за пихнуть другой

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 12:15 19-03-2009
Demt



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопрос по WinAPI в Delphi.
Требуется присвоить файлу атрибут 0x40 - FILE_ATTRIBUTE_DEVICE. Стандартным SetFileAttributes этого нельзя сделать (MSDN).
Даже если и задать через эту фунцию, то GetFileAttributes возращает 0x80 (Unused)
Крутил DeviceIOControl, но не понял, как и куда направлять поток открытого файла, если это вообще надо (открывать в потоке). Встречал пример для присвоения файлу атрибута "сжат".

Всего записей: 65 | Зарегистр. 10-09-2004 | Отправлено: 13:49 19-03-2009
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Простите за офтоп.
У меня перестала приходить подписка на этот форум, все темы.
А как у Вас.




в Помощь по форуму спрашивай.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 14:05 21-03-2009 | Исправлено: ShIvADeSt, 03:47 22-03-2009
Kolderon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь запретить сворачивание приложения (главной формы) по условию. Объявил

Код:
Application.OnMinimize:=MyMinimize;

Только не пойму, как в процедуре MyMinimize прекратить обработку сворачивания? Есть ли какой-то аналог свойства Action: TCloseAction как в обработчике OnClose формы, чтобы присвоить ему значние false и форма не сворачивалась?

Всего записей: 109 | Зарегистр. 20-01-2005 | Отправлено: 15:26 21-03-2009
Figaro2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kolderon
глянь вот сюда - http://www.delphisources.ru/pages/faq/base/sys_buttons_down.html
может, наведет на мысли

Всего записей: 245 | Зарегистр. 24-09-2005 | Отправлено: 12:03 22-03-2009
kamikadze777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!!! У меня такая проблема:
Имеется checklistbox, база MS Access, запросы и т.д. При выборе элемента в checklistbox, активируется запрос на запись данных в базу. Подскажите пожалуйста, как мне осуществить проверку на наличие этих данных в базе при запуске программы и отметить соотвествующие строки в checklistbox? Заранее благодарен.

Всего записей: 5 | Зарегистр. 22-03-2009 | Отправлено: 13:22 22-03-2009
ekemov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kamikadze777
При загрузке грузишь данные, если есть то ставь галочку. Там же есть свойство ончикет, если есть то тру, если нету то так и оставляешь.

Всего записей: 804 | Зарегистр. 23-12-2005 | Отправлено: 16:59 22-03-2009
KurtWagner



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как скрыто отправить дубликат сообщение написанный в Outloock Express (стандартный почтовик) себе в указаный программно адрес ??? и еще один отделный вопрос как скрыто копировать файлы и папки? Заранее большое человеческое спасибо

Всего записей: 90 | Зарегистр. 02-01-2008 | Отправлено: 05:06 24-03-2009 | Исправлено: KurtWagner, 05:11 24-03-2009
bandyn



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Delphi 2009 Кратко:
var
iNum: Integer;
sZero : AnsiString;
 
iNum:=8;
sZero:='0';
s:=StringOfChar(sZero,iNum - Length(s)) + s;
выдает ошибку: [DCC Warning] UMain.pas(62): W1058 Implicit string cast with potential data loss from 'string' to 'AnsiString'
 
а так не выдает: s:=StringOfChar('0',iNum - Length(s)) + s;
 
В справке: function StringOfChar(ch: AnsiChar; Count: Integer): AnsiString; overload;
 
Где подвох? в D7 все работало!

Всего записей: 394 | Зарегистр. 18-11-2004 | Отправлено: 10:52 24-03-2009
ShIvADeSt



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

Цитата:
sZero : AnsiString;  

сравни с этим  

Цитата:
ch: AnsiChar

думаю поймешь в чем разница.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 14:24 24-03-2009
   

Страницы: 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 (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru