Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.04.04;
Скачать: CL | DM;

Вниз

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

 
бегинер   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
6-1216702809
grisme
2008-07-22 09:00
2010.04.04
Download Resuming


1-1247727939
wildarg
2009-07-16 11:05
2010.04.04
Получить выделенный текст из другого окна


2-1264852724
helluvaname
2010-01-30 14:58
2010.04.04
ADOTable.InsertRecord+autoincr field


15-1263251045
Smile
2010-01-12 02:04
2010.04.04
Германн или где?


6-1207310729
Pochemuk
2008-04-04 16:05
2010.04.04
Ремэпинг без подмены IP. Как сделать?