wlasne operatory

0

Czy istenieje mozliwosc definiowania wlasnych operatorow
albo zmieniania dzialania juz zdefiniowanych?

chodzi mi o porownywanie rekordow.

type 
  TStatus = record
    kod: integer;
    komunikat: string;
  end;
var s1,s2: Tstatus;

teraz robie tak:

 if s1.kod < s2.kod then s1 := s2;

a chcialbym

 if s1 < s2 then s1 := s2;

Da sie cos takiego zrobic??

0

da się. Nie wiem jak to jest w różnych wersjach Delphi, ale w najnowszym jest. Poszukaj w helpie o przeładowwaniu operatorów "operator overloading". Nie korzystałem z tego więc nie będę się silił na rzucanie jakimś kodem.

0

a mogę zapytać co za róznica jak piszesz? chyba lepiej widziec co akurat w danym momencie sprawdzasz, jaki element rekordu

0

Przeciążaj funkcję LessThan (odpowiadająca za operator <).

0

SebaZ, w klasach i rekordach istnieje coś takiego (można zdefiniować), jako pole/właściwość domyślna. Pod przeładowanym operatorem mogą niekiedy kryć się zawiłe instrukcje do wykonania i przepisywanie ich w kodzie za każdym razem, gdy zajdzie potrzeba może zabałaganić kod. W tym przypadku porównuje się dwa pola. Innym razem pod operatorem dodawania czy mnożenia rekordów (+ albo *) może kryć się wiele instrukcji, wykonywanych na różnych polach danego rekordu (mnożenie jednych, dodawanie innych itd..). Wszystko zależy od konkretnego przypadku.

0

Przeciążanie operatorów jes możliwe tylko w Delphi.NET

0

cytuję z własnego helpa: Delphi for .NET and Delphi for Win32 allow certain functions, or "operators" to be overloaded within record declarations. Delphi for .NET also allows overloading within class declarations.

//wyraźnie stoi, że nie tylko w .NET :>

0

Jesteście pewni, że tylko Delphi.NET? Tutaj nic o tym nie ma: Przeładowanie operatorów i mam wrażenie, że także w Delphi/Win32 (od 9 pewnie) jest.

0

Ktos - w tym artykule nie ma ale rzeczywiście w delphi for .NET jest pelne przeciążanie operatorów a for win32 tylko w recordach. Moim zdaniem to dziwne posunięcie Borlanda no ale cóż...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0