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

Вниз

Сравнить record ы   Найти похожие ветки 

 
Vovan#1   (2006-09-01 23:55) [0]

[code]
type
 TMyRecord = record
  a, b, c: Integer;
 end;

var
Rec1, Rec2: TMyRecord;

begin
 with Rec1 do
  begin
   a := 0;
   b := 0;
   c := 0;
  end;
 with Rec2 do
  begin
   a := 1;
   b := 1;
   c := 1;
  end;
 if (Rec1 = Rec2) then ShowMessage("Equal")
  else ShowMessage("Different");
[/code]

= [Error] ????.pas(49): E2015 Operator not applicable to this operand type

Why? :(


 
Zeqfreed ©   (2006-09-01 23:58) [1]

Life"s unfair. Use per-field comparison or CompareMem function.


 
Vovan#1   (2006-09-02 00:06) [2]

Так Delphi нужно уволить.


 
default ©   (2006-09-02 00:06) [3]

вот бы тебе сюда перегрузку операторов и зажил бы по-человечески:)...


 
Palladin ©   (2006-09-02 00:08) [4]

а если говорить доступным для конференции языком :)
If CompareMem(@rec1,@rec2,SizeOf(tmyrecord)) then

при условии a,b,c integer, бо чуть отличись от integer эти три элемента и packed not used придется писать функцию почленного сравнения записи...


 
Vovan#1   (2006-09-02 00:21) [5]

>If CompareMem(@rec1,@rec2,SizeOf(tmyrecord)) then

Но ведь это +SysUtils = +400 Kb.
Буду по полям.


 
Palladin ©   (2006-09-02 00:28) [6]


> Но ведь это +SysUtils = +400 Kb.

:))) ты откуда упал?

ой... это же "начинащим"

ну раз: 400кб это модуль с исходниками... а они как известно, даже не начинающему, в полном исходном размере ну ни как не могул линковаться к исполняемому модулю

ну два: традиция смарт юнит линк сохраняется в продуктах borland, относимых к семейству Pascal/Delphi и по сей день, что значит: сколько ты из модуля используешься столько и прилинкуется, ни на байт больше...

ну три: просто так... для четности...


 
Vovan#1   (2006-09-02 00:32) [7]

Да, я хотел уже писать, что переборщил с +400 кб, но ничего... ничего....

Вы, конечно же, догадались, что за мнемоническими TMyRecord стоял TRGBQuad (да, пусть полей больше - но это была проверка). Почему не посоветовали такое?:

[code]
var
 a: TRGBQuad;
 b: TRGBQuad;
 c: TColor;
begin
 a.rgbBlue := 0;
 a.rgbGreen := 128;
 a.rgbRed := 128;
 a.rgbReserved := 0;

 b.rgbBlue := 0;
 b.rgbGreen := 128;
 b.rgbRed := 128;
 b.rgbReserved := 0;

 If Integer(a) = Integer(b) then
  ...
[/code]


 
Anatoly Podgoretsky ©   (2006-09-02 00:37) [8]

Vovan#1   (02.09.06 00:32) [7]
Потому что у тебя не TRGBQuad, а запись из целых.


 
Anatoly Podgoretsky ©   (2006-09-02 00:38) [9]

Это мы телепатить не умеем, а читаем хорошо.


 
Vovan#1   (2006-09-02 00:38) [10]

TRGBQuad <> запись из целых???


 
Vovan#1   (2006-09-02 00:39) [11]

>Это мы телепатить не умеем, а читаем хорошо.

Посоветовали бы добавить в запись целое и тайпкастить?


 
Vovan#1   (2006-09-02 00:41) [12]

>Это мы телепатить не умеем, а читаем хорошо.

Ах да, я читаю плохо. Понял ошибку. Действительно, тут не протелепатишь. Всё, забыли. Главное - разобрались с делом. Всё, я программить... Всем спасибо.


 
Palladin ©   (2006-09-02 00:44) [13]


> TRGBQuad <> запись из целых???

никому не известно из чего состоит TRGBQuad, но большинству известно, что запись (и любая единица) в Delphi будет пытаться 32битным компилятором выровнятся по именно этим 32ум битам...



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
3-1153566697
HelloWord
2006-07-22 15:11
2006.09.24
Обработка исключений


6-1146294518
Yegorchic
2006-04-29 11:08
2006.09.24
Проверка на наличие компьютера в сети


1-1155188154
DelphiN!
2006-08-10 09:35
2006.09.24
AV при попытке поиска в строке


15-1157392558
oldman
2006-09-04 21:55
2006.09.24
Играли не как боги, но...


15-1157521275
Ega23
2006-09-06 09:41
2006.09.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский