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

Вниз

Глюки при использовании строк 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.041 c
11-1131278061
Haker
2005-11-06 14:54
2006.08.13
wordwrap в KOLRichEdit


2-1153806680
VitV
2006-07-25 09:51
2006.08.13
Отбражение текста DBLookupListBox


15-1149183547
tesseract
2006-06-01 21:39
2006.08.13
футболка DelphiMaster


2-1153987112
Vovan2006
2006-07-27 11:58
2006.08.13
Возможна ли обработка ситуации выгрузки программы в самой програм


15-1152805009
Vlad
2006-07-13 19:36
2006.08.13
Модераторы





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