![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюки при использовании строк Widestring в операторе IF [D6, WinXP]
leonidus © (2006-07-01 22:36:00)Мастера подскажите пожалуйста почему если я пишу:
var
EngLetters_:widestring;
...
if EngLetters_[1]+EngLetters_[2]=EngLetters_[3]+EngLetters_[4] then
...
то компилятор выдает ошибку "Incompatible types"?
georgius (2006-07-02 15:04:00) [1]А попробуй так:
if AnsiCompareStr(Copy(EngLetters_, 1, 2), Copy(EngLetters_, 3, 2)) <> 0 then
....
Можно еще использовать AnsiCompareText и SameText
Шпиён (2006-07-02 00:29:00) [2]
> leonidus © (02.07.06 00:06) [8]
> а тогда в чем смысл этой операции вообще?
http://home.ural.ru/~swer/5.htm
ps А лучший вариант (imho) - сделать как посоветовал palva © в [4]
Тогда и приведение типов не понадобится.
leonidus (2006-07-02 00:06:00) [3]а тогда в чем смысл этой операции вообще?
Phoroon~ (2006-07-01 23:40:00) [4]Ни куда они не переведутся.
leonidus (2006-07-01 23:30:00) [5]Вот пожалуй приведение типов это лучше, но как происходит приведение? У меня строка содержит юникодные символы, не переведуься ли они в ANSI кодировку?
leonidus (2006-07-01 23:23:00) [6]Через промежуточные переменные я догадался сделать, но это как-то криво, я просто не пойму почему если написать
var
s:string;
...
if s[1]+s[2]=s[3]+s[4] then
...
то все работает, а если s:widestring то нет.
palva (2006-07-01 23:21:00) [7]Тогда уж
if (EngLetters_[1]=EngLetters_[3]) and (EngLetters_[2]=EngLetters_[4]) then
Шпиён (2006-07-01 23:12:00) [8]
> Phoroon~ © (01.07.06 22:57) [2]
Можно просто сделать приведение типов
widestring(EngLetters_[1]) + widestring(EngLetters_[2])
Phoroon~ (2006-07-01 22:57:00) [9]Сделай так:
var
EngLetters_, tmp1, tmp2: widestring;
begin
tmp1:=EngLetters_[1];
tmp1:=tmp1+EngLetters_[2];
tmp2:=EngLetters_[3];
tmp2:=tmp2+EngLetters_[4];
if tmp1=tmp2 then операции
Шпиён (2006-07-01 22:48:00) [10]EngLetters_[1]+ EngLetters_[2] - а что ты здесь ожидаешь получить???