|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Цитата:
....... Последний раз редактировалось cadil, 12.01.2016 в 10:59. |
#17
|
||||
|
||||
Цитата:
Думаю вот такой вариант будет работать: Код:
{$IF (sizeof(Char)=2)} // для unicode function COMRead(AHandle: THandle): RawByteString; overload; function COMWrite(AHandle: THandle; Data: RawByteString): Cardinal; overload; {$ELSE} function COMRead(AHandle: THandle): String; overload; function COMWrite(AHandle: THandle; Data: string): Cardinal; overload; {$ENDIF} ну и далее по коду там тоже смотри. {$ZEROBASEDSTRINGS ON} - это, насколько я понимаю, к данной проблеме никак не относится. Этот ключ определяет с какого индекса начинается строка, с 1 или с 0. ИМХО пофиг, как удобней так и делай. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#18
|
|||
|
|||
Цитата:
Правда, функции function COMRead(AHandle: THandle): String; - у меня нет. Какая из этих функций отвечает за чтение из порта? Код:
function AccessCOM(P:PChar):boolean; stdcall; external 'comapi32.dll'; function OpenCOM(P:PChar):boolean; stdcall; external 'comapi32.dll'; function CloseCOM:boolean; stdcall; external 'comapi32.dll'; function SetCOM(baud:DWORD; bsize,parity, sbits:BYTE):boolean; stdcall; external 'comapi32.dll'; function SetModCOM(baud:DWORD;bsize,parity, sbits:BYTE;DTR, RTS:boolean):boolean; stdcall; external 'comapi32.dll'; function SetCOMTo(RdIvl,RdTotM,RdTotC, WrTotM,WrTotC:DWORD):boolean; stdcall; external 'comapi32.dll'; function SetCOMBuff(RdBuff, WrBuff:DWORD):boolean; stdcall; external 'comapi32.dll'; function EscFuncCOM(F:DWORD):boolean; stdcall; external 'comapi32.dll'; function GetModem(var lpD:DWORD):boolean; stdcall; external 'comapi32.dll'; function PurgeCOM:boolean; stdcall; external 'comapi32.dll'; function FlushCOM:boolean; stdcall; external 'comapi32.dll'; function TxByteCOM(data:byte):boolean; stdcall; external 'comapi32.dll'; function TxDataCOM(const Buffer; N:DWORD; var lpNDone:DWORD):boolean; stdcall; external 'comapi32.dll'; function RxDataCOM(var Buffer; N:DWORD; var lpNDone:DWORD):boolean; stdcall; external 'comapi32.dll'; function ClrErrCOM(var lpE:DWORD):boolean; stdcall; external 'comapi32.dll'; Код:
private function ReadParams:Boolean; procedure PClear; procedure Open_COM(n:Integer); procedure DisableControls; procedure ReadConfig; Удивляюсь - неужели фирма-разработчик продукта или наши умельцы не разработали до сих пор патч, чтобы решить вопрос перехода на уникод на системном уровне?! Последний раз редактировалось cadil, 11.01.2016 в 19:58. |
#19
|
||||
|
||||
ТС, я тебе дал исходник достаточный для того чтобы пользоваться портом без всяких библиотек. Если ты хочешь чтобы я тебе адаптировал неизвестную мне библиотеку под unicode - зря, я этого делать не буду, во первых некогда, во вторых - неинтересно. У меня куча железа работает на представленном мной модуле и сбоев не наблюдается.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
cadil (11.01.2016)
|
#20
|
|||
|
|||
Цитата:
|
#21
|
|||
|
|||
Цитата:
Ты был прав! При принудительной замене String на AnsiString, команды, где используются массивы, не выполняются. Например, Код:
function HConvert(E:TEdit; var H:Byte):Boolean; var Hp:Byte; S:String; Error:Boolean; begin Hp:=H; Result:=true; Error:=false; S:=UpperCase(E.Text); //S:= AnsiString(S); case length(S) of 1: if ConvD(S[1])>=0 then H:=ConvD(S[1]) else Error:=true; ... Заранее благодарю за помощь. |
#22
|
|||
|
|||
Цитата:
Последний раз редактировалось cadil, 12.01.2016 в 15:25. |
#23
|
||||
|
||||
Я ж не знаю что там у тебя за проект
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#24
|
|||
|
|||
Тебе надо не приведение типов делать (оно в таком виде максимум поправил кодовую страницу, если та вдруг не совпадает). Тебе переменную надо объявлять как AnsiString. При этом надо смотреть все места, что бы небыло случайных преобразований обратно. А то вообще чехарда получится такая, что замучаешься понимать, почему не работает.
Вообще, в чем смысл делать исходник, компилируемый в обеих версиях Delphi? У тебя есть D7, там все работает. Ну так и пиши на ней. Я проекты на XE3 перетаскивал только если собирался их продолжать исключительно на XE3, обратно уже все-равно просто так не перетащишь, бо как в XE3 (ну с ней я работаю, есть XE7, но на ней я только под Андроит ковыряюсь) куча изменений в языке и библиотеках, которые не совсем обратно совместимы. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
cadil (12.01.2016)
|
#25
|
|||
|
|||
Цитата:
|
#26
|
|||
|
|||
Цитата:
Можно такой проект адаптировать под ХЕ7 или приступать к разработке с нуля с твоим исходником? Последний раз редактировалось cadil, 19.01.2016 в 10:48. |
#27
|
|||
|
|||
Цитата:
Тогда хочу тебя огорчить. Под Андроид твой проект в таком виде не заведется - не поддерживает Андроид виндовые библиотеки... Да и COM-порта на Андроид-устройствах нету. Как ты его подключать то будешь??? Или это Bluetooth-2-COM? Вообще, я дальше эксперименов Delphi+Android не пошел пока, т.к. на Java под Android писать проще, особенно, если не требуется особых красот в интерфейсе. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
cadil (13.01.2016)
|
#28
|
|||
|
|||
Цитата:
Цитата:
Последний раз редактировалось cadil, 13.01.2016 в 11:10. |
#29
|
||||
|
||||
Цитата:
Прикольно, СиПиху под андроид заюзали. Теперь по теме. Скачал проект, посмотрел... Там проект-то, лучше написать 2 программы (под винду и под ведроид) и не париться. Я то думал там проект из 100000 строк кода... Скинь схему устройства и описание протокола работы, если не жалко. Чисто спортивный интерес. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
cadil (13.01.2016)
|
#30
|
|||
|
|||
Цитата:
Из чисто спортивного интереса - помоги, пожалуйста, хотя бы запустить этот проект на ХЕ7. |