wlasne operatory

Johny_Morfina
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 448
0

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

chodzi mi o porownywanie rekordow.

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

teraz robie tak:

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

a chcialbym

Kopiuj
 if s1 < s2 then s1 := s2;

Da sie cos takiego zrobic??

LU
  • Rejestracja: dni
  • Ostatnio: dni
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.

SebaZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 342
0

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

Coldpeer
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Londyn
0

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

LU
  • Rejestracja: dni
  • Ostatnio: dni
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.

maly186
  • Rejestracja: dni
  • Ostatnio: dni
0

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

LU
  • Rejestracja: dni
  • Ostatnio: dni
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 :>

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
0

Jesteście pewni, że tylko Delphi.NET? Tutaj nic o tym nie ma: http://4programmers.net/Delphi/Prze%C5%82adowanie_operator%C3%B3w i mam wrażenie, że także w Delphi/Win32 (od 9 pewnie) jest.

Marmar
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 317
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óż...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.