Главная страница
    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.48 MB
Время: 0.005 c
2-1264873860
antid
2010-01-30 20:51
2010.04.04
изменить звук Windows


2-1264851721
kalexi
2010-01-30 14:42
2010.04.04
В каком модуле содержится GetModuleBase?


6-1215631058
Квэнди
2008-07-09 23:17
2010.04.04
Версия удаленного файла


2-1264604465
s_t_d
2010-01-27 18:01
2010.04.04
Delphi-MSWord, как получить "разрыв" страницы?


2-1264921818
cyber-pilot
2010-01-31 10:10
2010.04.04
Указатель на массив





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский