Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2014, 15:45   #1
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию 'AnsiChar' and 'Char'

Не понимаю, вот это код на Д7 норма работает, а на Д2009 не хочет
код:
procedure SetDecimalSeparator(Ch: Char);
var
DefLCID: LCID;
Buffer: LPSTR;
begin
Application.UpdateFormatSettings := True;
StrPCopy(Buffer, Ch);
DefLCID := GetThreadLocale;
if SetLocaleInfo(DefLCID, LOCALE_SDecimal, Buffer) then
DecimalSeparator := StrPas(Buffer)[1];
Application.UpdateFormatSettings := False;
end;


компилятор дает ошибка:
[DCC Error] Unit2.pas(256): E2010 Incompatible types: 'AnsiChar' and 'Char'
mavlon_m вне форума Ответить с цитированием
Старый 11.07.2014, 16:02   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

StrPCopy вторым параметром требует Ansistring. А в Д2009+ Char = WideChar
Код:
procedure SetDecimalSeparator(Ch: AnsiChar);
Вот так будет работать и в Д7 и в Д2009+
northener вне форума Ответить с цитированием
Старый 11.07.2014, 16:06   #3
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию

Пробовал, все равно не работает
mavlon_m вне форума Ответить с цитированием
Старый 11.07.2014, 16:22   #4
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
StrPCopy вторым параметром требует Ansistring. А в Д2009+ Char = WideChar
Код:
procedure SetDecimalSeparator(Ch: AnsiChar);
Вот так будет работать и в Д7 и в Д2009+
Ошибка остается без изменение:
[DCC Error] Unit2.pas(256): E2010 Incompatible types: 'AnsiChar' and 'Char'
mavlon_m вне форума Ответить с цитированием
Старый 11.07.2014, 16:33   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Unit2.pas(256)
А 256 строка это какая?
northener вне форума Ответить с цитированием
Старый 11.07.2014, 16:35   #6
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Unit2.pas(256)
А 256 строка это какая?
Это строка у меня

procedure SetDecimalSeparator(Ch: AnsiChar);
var
DefLCID: LCID;
Buffer: LPSTR;
begin
Application.UpdateFormatSettings := True;
StrPCopy(Buffer, Ch);
DefLCID := GetThreadLocale;
if SetLocaleInfo(DefLCID, LOCALE_SDecimal, Buffer) then
DecimalSeparator := StrPas(Buffer)[1];
Application.UpdateFormatSettings := False;
end;

Последний раз редактировалось mavlon_m; 11.07.2014 в 16:38.
mavlon_m вне форума Ответить с цитированием
Старый 11.07.2014, 17:21   #7
mavlon_m
Форумчанин
 
Регистрация: 04.08.2009
Сообщений: 101
По умолчанию

Проблема решено, сделал
var Buffer: Pwidechar;
mavlon_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Char и AnsiChar Миледи Общие вопросы Delphi 3 09.05.2012 03:51
Записать Array of AnsiChar в Array of AnsiChar Anton911 Общие вопросы Delphi 4 07.05.2012 21:58
ошибка AnsiChar Кристинка89 Общие вопросы Delphi 5 21.02.2012 21:26
widechar VS. ansichar virtuhay266 Общие вопросы Delphi 2 14.12.2011 09:10
Ошибка c AnsiChar & Char Яр|/||< (^_^) Общие вопросы Delphi 3 19.02.2010 21:22