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

Вниз

тупое неравенство - не мгу разобраться   Найти похожие ветки 

 
Звоновский   (2008-01-29 00:43) [0]

if LowerCase(BuffTxt) = LowerCase(PChar(CmdRec^.ChldClss))  then       beginSendDebugMsg("h="+IntToStr(h)+" GetClassName = "+BuffTxt);
end;


Должно быть равно, но не равняется и немогу ничего поделать.


 
Семеныч   (2008-01-29 00:48) [1]

Текст русский? Тогда AnsiLowerCase.


 
Звоновский   (2008-01-29 00:54) [2]

Нет аснгл.
пеперед этим вызывал

SendDebugMsg("CmdRec^.ChldClss = "+LowerCase(PChar(CmdRec^.ChldClss)));
SendDebugMsg("BuffTxt = "+LowerCase(BuffTxt));


В он вернул:

4. PID: 5560 CmdRec^.ChldClss = edit
5. PID: 5560 BuffTxt = edit


 
Семеныч   (2008-01-29 00:58) [3]

Помотрите, что показывает отладчик в BuffTxt и в CmdRec^.ChldClss

И попробуйте привести к строке:
AnsiLowerCase(String(PChar(CmdRec^.ChldClss)))


 
Звоновский   (2008-01-29 01:12) [4]

сделал как говорили

SendDebugMsg("CmdRec^.ChldClss = "+AnsiLowerCase(String(PChar(CmdRec^.ChldClss))));
SendDebugMsg("BuffTxt = "+AnsiLowerCase(String(BuffTxt)));

Вернул, - все впорядке
4. PID: 6116 CmdRec^.ChldClss = edit
5. PID: 6116 BuffTxt = edit

if AnsiLowerCase(String(BuffTxt)) = AnsiLowerCase(String(PChar(CmdRec^.ChldClss)))  then begin
 SendDebugMsg("h="+IntToStr(h)+" GetClassName = "+BuffTxt);
 SendDebugMsg("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
end;


Но равенство не наступает :((


 
Семеныч   (2008-01-29 01:23) [5]

А там пробелов в начале и в конце, часом, нет?

AnsiLowerCase(Trunc(String(BuffTxt)))
AnsiLowerCase(Trunc(String(PChar(CmdRec^.ChldClss))))


 
Звоновский   (2008-01-29 01:33) [6]

Я разгадал загадку неравенства

St1:=LowerCase((BuffTxt));
St2:=LowerCase(PChar(CmdRec^.ChldClss));

for i:=1 to length(St1) do StOrd1:=StOrd1+"#"+IntToStr(Ord(St1[i]));
for i:=1 to Length(St2) do StOrd2:=StOrd2+"#"+IntToStr(Ord(St2[i]));

SendDebugMsg("StOrd1 = "+StOrd1);
SendDebugMsg("StOrd2 = "+StOrd2);


4. PID: 5068 CmdRec^.ChldClss = edit
5. PID: 5068 BuffTxt = edit
6. PID: 5068 StOrd1 = #101#100#105#116#0#109#49#12#99#108#105#101#110#116#104#101#105#103#104#116#3#16 9#1#11#99#108#105#101#110#116#119#105#100#116#104#3#117#2#5#99#111#108#111#114#7 #9#99#108#98#116#110#102#97#99#101#12#102#111#110#116#46#99#104#97#114#115#101#1 16#7#15#100#101#102#97#117#108#116#95#99#104#97#114#115#101#116#10#102#111#110#1 16#46#99#111#108#111#114#7#12#99#108#119#105#110#100#111#119#116#101#120#116#11# 102#111#110#116#46#104#101#105#103#104#116#2#245#9#102#0
7. PID: 5068 StOrd2 = #101#100#105#116


 
Звоновский   (2008-01-29 01:36) [7]

Судя по наличию  #101#100#105#116#0#

Одно паражает откуда в имени класса Мульть-строка?


 
Семеныч   (2008-01-29 01:43) [8]

> Звоновский   (29.01.08 01:36) [7]

Это нормальная ASCIIZ-строка. У Вас как-то странно BuffTxt формируется Похоже на PChar, помять для которого была выделена с запасом, а потом не была обрезана по первому нулю.

Зачем тут вообще PСhar"ы нужны? Почему со строками не работать? Никаких бы проблем не было.


 
Германн ©   (2008-01-29 01:57) [9]


> Звоновский   (29.01.08 01:36) [7]
>
> Судя по наличию  #101#100#105#116#0#
>
> Одно паражает откуда в имени класса Мульть-строка?
>

А это что за зверь "Мульть-строка"?
И как объявлена переменная BuffTxt?


 
Звоновский   (2008-01-29 02:06) [10]

> Семеныч   (29.01.08 01:43) [8]

Да стакими парараметрами вызывал

Var BuffTxt: String;

SetLength(BuffTxt,MAXCHAR);
GetClassName(h,PChar(BuffTxt),MAXCHAR);

Если нужно взять текст то длину буфера подгонял через
GetWindowTextLength(h);
а тут так оставил, вот на свои грабли и наступил..


 
Звоновский   (2008-01-29 02:10) [11]

Вот еще хороший вопрос как заранее узнать длину буфера, если есть такие способы....?


 
Семеныч   (2008-01-29 08:29) [12]

> Звоновский   (29.01.08 02:10) [11]

> как заранее узнать длину буфера

Заранее - никак. Но ее возвращает GetClassName.

var
 BuffTxt: String;
begin
 SetLength(BuffTxt, MAXCHAR);
 SetLength(BuffTxt, GetClassName(H, PChar(BuffTxt), MAXCHAR));
 ... // Здесь имеем "чистую" строку BuffTxt, уже без мусора



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

Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.043 c
15-1201018123
@!!ex
2008-01-22 19:08
2008.02.24
Убрать сообщение об обрые связи..


2-1201517882
tomkat
2008-01-28 13:58
2008.02.24
данные фильтра


15-1201244935
oldman
2008-01-25 10:08
2008.02.24
Татьянин день


15-1200274708
KilkennyCat
2008-01-14 04:38
2008.02.24
Книги, Электронные. Когда их очень много...


2-1201901798
Бэтман
2008-02-02 00:36
2008.02.24
Дата рождения





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