Главная страница
    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.042 c
3-1153385859
Mintos
2006-07-20 12:57
2006.09.24
Отчет с отчета (QuikReport)


15-1157089246
Blidro
2006-09-01 09:40
2006.09.24
За работу предлагаю 100 WMR


15-1157044831
Вольный Стрелок
2006-08-31 21:20
2006.09.24
Как правильно?


2-1157228727
redlord
2006-09-03 00:25
2006.09.24
копирование изображения с маштабированием без потерь качества


3-1153398683
zorik
2006-07-20 16:31
2006.09.24
Как изменить CHARACTER SET для всей БД?





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