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

Вниз

Сравнить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
15-1156787243
Некто
2006-08-28 21:47
2006.09.24
IP-адрес виндового роутера по умолчанию.


15-1157187204
Новичоккк
2006-09-02 12:53
2006.09.24
Можно ли откомпилировать проект без запуска Delphi


15-1157114690
Palladin
2006-09-01 16:44
2006.09.24
так интересно


15-1157202905
Копир
2006-09-02 17:15
2006.09.24
С Днём Рождения, Москва! Почти 860 лет!


4-1148470794
Nostradamus
2006-05-24 15:39
2006.09.24
моя DLL подгружается другими приложениями





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