![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Есть код, который успешно компилируется в 7SE. В новых компиляторах (у меня это Delphi XE7), в которых разработчики продукта перешли на универсальную кодировку UTF8?, некоторые команды с переменной String читаются неверно.
Например, Код:
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);
case length(S) of
1: if ConvD(S[1])>=0 then H:=ConvD(S[1])
else Error:=true;
...Заранее благодарю за помощь. Последний раз редактировалось cadil, 12.01.2016 в 14:27. |
|
#2
|
||||
|
||||
|
Цитата:
Цитата:
|
|
#3
|
|||
|
|||
|
Цитата:
Цитата:
Код:
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:= RawByteString(S); //!
case ??? of
1: if ConvD(S[1])>=0 then H:=ConvD(S[1])
else Error:=true;
...Последний раз редактировалось cadil, 12.01.2016 в 17:37. |
|
#4
|
|||
|
|||
|
Я тебе в другой ветке ответил.
Думаю так пройдет (нет под рукой, что бы проверить): Код:
function HConvert(E:TEdit; var H:Byte):Boolean;
var Hp:Byte; S:AnsiString; Error:Boolean;
begin
Hp:=H; Result:=true;
Error:=false;
S := E.Text;
S:=AnsiUpperCase(S);
If Length(S) = 1 Then
Begin
if ConvD(S[1])>=0 then H:=ConvD(S[1])
else Error:=true;
End; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
cadil (12.01.2016)
| ||
|
#5
|
|||
|
|||
|
Цитата:
Проверил - код корректный, но кака было, кака - есть. Похоже, на этом направлении - переназначении свойств переменных придется ставить крест. Я прочитал твой пост в другой ветке. Сейчас упакую проект и вышлю тебе на личку. |
|
#6
|
|||
|
|||
|
не обещаю, что будет время ковыряться...
|