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

Вниз

Глюки при использовании строк Widestring в операторе IF   Найти похожие ветки 

 
leonidus ©   (2006-07-01 22:36) [0]

Мастера подскажите пожалуйста почему если я пишу:      

var
EngLetters_:widestring;
...
if EngLetters_[1]+EngLetters_[2]=EngLetters_[3]+EngLetters_[4] then
...

то компилятор выдает ошибку "Incompatible types"?


 
Шпиён   (2006-07-01 22:48) [1]

EngLetters_[1]+ EngLetters_[2] - а что ты здесь ожидаешь получить???


 
Phoroon~ ©   (2006-07-01 22:57) [2]

Сделай так:

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 23:12) [3]


> Phoroon~ ©   (01.07.06 22:57) [2]

Можно просто сделать приведение типов
widestring(EngLetters_[1]) + widestring(EngLetters_[2])


 
palva ©   (2006-07-01 23:21) [4]

Тогда уж
if (EngLetters_[1]=EngLetters_[3]) and (EngLetters_[2]=EngLetters_[4]) then


 
leonidus ©   (2006-07-01 23:23) [5]

Через промежуточные переменные я догадался сделать, но это как-то криво, я просто не пойму почему если написать

var
s:string;
...
if s[1]+s[2]=s[3]+s[4] then
...

то все работает, а если s:widestring то нет.


 
leonidus ©   (2006-07-01 23:30) [6]

Вот пожалуй приведение типов это лучше, но как происходит приведение? У меня строка содержит юникодные символы, не переведуься ли они в ANSI кодировку?


 
Phoroon~ ©   (2006-07-01 23:40) [7]

Ни куда они не переведутся.


 
leonidus ©   (2006-07-02 00:06) [8]

а тогда в чем смысл этой операции вообще?


 
Шпиён   (2006-07-02 00:29) [9]


> leonidus ©   (02.07.06 00:06) [8]


> а тогда в чем смысл этой операции вообще?

http://home.ural.ru/~swer/5.htm

ps А лучший вариант (imho) - сделать как посоветовал  palva ©  в [4]
Тогда и приведение типов не понадобится.


 
georgius ©   (2006-07-02 15:04) [10]

А попробуй так:

if AnsiCompareStr(Copy(EngLetters_, 1, 2), Copy(EngLetters_, 3, 2)) <> 0 then
 ....

Можно еще использовать AnsiCompareText и SameText



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

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.136 c
3-1149758205
Тфьу
2006-06-08 13:16
2006.08.13
Проблеммы получения данных из параметра процедуры CLOB из DOA...


15-1153043236
Германн
2006-07-16 13:47
2006.08.13
Контроллеры СОМ портов


6-1143533342
Sasha73
2006-03-28 12:09
2006.08.13
Копирование файлов по ЛВС с авторизацией?


15-1153344084
Footballer
2006-07-20 01:21
2006.08.13
Не найду картинку...


2-1153840378
0bsid
2006-07-25 19:12
2006.08.13
Как получить ответил от выполненной команды winExec() ?