Главная страница
    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.04 c
3-1153791151
Adler
2006-07-25 05:32
2006.09.24
Обработка исключений при POST


4-1148457913
truegosha
2006-05-24 12:05
2006.09.24
QueryServiceStatus Отказано в доступе


4-1148375787
Stanislav
2006-05-23 13:16
2006.09.24
Запуск приложения от имени Администратора


3-1153728761
Opilki_Inside
2006-07-24 12:12
2006.09.24
Вопрос о использовании TZUpdateSQL из пакета ZeosDBO


15-1157182127
UMU
2006-09-02 11:28
2006.09.24
Какая разница между D7 Professional и D7 Enterprice?





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