Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Вниз

Нет перегруженной функции с такими параметрами   Найти похожие ветки 

 
бегинер   (2010-02-02 13:56) [0]

Не пойму в чем проблема. Мастера, просветите пожалуйста, чего я не понимаю?
D2010, Win7 (Поскольку нет таких крыжиков)

function AnsiSetNextChar(var S: AnsiString; var StrPos: SizeInt; Ch: UCS4): Boolean; overload;
function AnsiSetNextChar(var S: AnsiString; CodePage: Word; var StrPos: SizeInt; Ch: UCS4): Boolean; overload;


...

function StringSetNextChar(var S: string; var StrPos: SizeInt; Ch: UCS4): Boolean;
begin
 {$IFDEF SUPPORTS_UNICODE}
 Result := UTF16SetNextChar(S, StrPos, Ch);
 {$ELSE ~SUPPORTS_UNICODE}
 Result := AnsiSetNextChar(S, StrPos, Ch);
 {$ENDIF ~SUPPORTS_UNICODE}
end;


Получаю (на выделенной строке)
E2250 There is no overloaded version of "AnsiSetNextChar" that can be called with these arguments


 
Ega23 ©   (2010-02-02 14:03) [1]

Result := AnsiSetNextChar(S, StrPos, Ch);

S объявлена как AnsiString, а ты пытаешься туда string зафигачить


 
Anatoly Podgoretsky ©   (2010-02-02 14:06) [2]

> бегинер  (02.02.2010 13:56:00)  [0]

Вот об аргументах и подробнее.


 
бегинер   (2010-02-02 14:06) [3]


> Ega23 ©   (02.02.10 14:03) [1]

Олег, ну уж с этим бы я справился ;) Нет не то.


 
бегинер   (2010-02-02 14:08) [4]


> Anatoly Podgoretsky ©   (02.02.10 14:06) [2]

UCS4 = Cardinal;
Это?


 
Медвежонок Пятачок ©   (2010-02-02 14:14) [5]

если такая функция все же есть, то дело скорее всего в разных, но одноименных типах аргументов.
например в зоне видимости есть несколько модулей, в которых есть тип UCS4 или другой тип из перечня аргументов.


 
бегинер   (2010-02-02 14:16) [6]


> Ega23 ©   (02.02.10 14:03) [1]

Хотя, извиняюсь. Посыпаю голову.
Вот так съел
function StringSetNextChar(var S: string; var StrPos: SizeInt; Ch: UCS4): Boolean;
var
 str: AnsiString;
begin
 {$IFDEF SUPPORTS_UNICODE}
 Result := UTF16SetNextChar(S, StrPos, Ch);
 {$ELSE ~SUPPORTS_UNICODE}
 str := s;
 Result := AnsiSetNextChar(Str, StrPos, Ch);
 s := str;
 {$ENDIF ~SUPPORTS_UNICODE}
end;


 
бегинер   (2010-02-02 14:19) [7]

Вообще-то я думал, что он бы должен был бы справится с приведением типов.


 
icWasya ©   (2010-02-02 16:54) [8]

Поскольку у параметра S стоит квалификатор var, то будьте любезны подавать параметр правильного типа. Присваивание в S делается внутри процедуры, а она не знает, как делать присваивание в Unikode-строку. То, о чём Вы подумали, должно бы реализовываться так:
1) создать временную невидимую переменную @Temp1:UnicodeString;
2) сделать присвоение @Temp1 := S;
3) подать в процедуру AnsiSetNextChar адрес переменной @Temp1
4) после завершения AnsiSetNextChar сделать присваивание S:=@Temp1;

Delphi так не умеет :(.
Такой трюк вроде бы можно на C++, ну а на C++ можно и не такое.


 
sniknik ©   (2010-02-02 21:17) [9]

> Вообще-то я думал, что он бы должен был бы справится с приведением типов.
вообще то с overload по типам определяется какую именно функцию вызывать... и какое при этом приведение?

> Вот так съел
можно проще
...
Result := AnsiSetNextChar(AnsiString(Str), StrPos, Ch);
...
тоже должно работать.

> Delphi так не умеет :(.
и правильно, если так, нафига же извращения?


 
бегинер   (2010-02-02 21:22) [10]


> sniknik ©   (02.02.10 21:17) [9]
> можно проще...
> Result := AnsiSetNextChar(AnsiString(Str), StrPos, Ch);
> ...тоже должно работать.

Видимо s вместо str ;)
Конечно же я так пробовал, о чем честно и сообщил в [3], однако поскольку параметр var, я все-таки решил передать через доп. переменную и вот так уж получилось.


 
sniknik ©   (2010-02-02 21:47) [11]

тогда так,  не могу проверить... т.к. D7, там оно конечно работает но и AnsiString с string не различаются.

function StringSetNextChar(var S: string; var StrPos: SizeInt; Ch: UCS4): Boolean;
var
 Str: AnsiString absolute S;
begin
 ...
 Result:= AnsiSetNextChar(Str, StrPos, Ch);
 ...
end;


 
бегинер   (2010-02-02 23:03) [12]


> sniknik ©   (02.02.10 21:47) [11]

Хм... Интересно. Завтра обязательно попробую. Спасибо.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
2-1262824902
kyran29
2010-01-07 03:41
2010.04.04
Отправка файла на e-mail


4-1231656577
inferno
2009-01-11 09:49
2010.04.04
Не передавать сообщение мыши


15-1262972486
soldier
2010-01-08 20:41
2010.04.04
Чем снять образ компьютера, чтобы потом его развернуть на VMWare


1-1248087362
Amid
2009-07-20 14:56
2010.04.04
Помогите перевести код из Си в Делфи


15-1263557848
ghg79
2010-01-15 15:17
2010.04.04
Настройки Codegear 2009





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский