wlasne operatory

Johny_Morfina
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 5 lat
  • 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:ponad 19 lat
  • Ostatnio:około 11 lat
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:prawie 21 lat
  • Ostatnio:4 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
Moderator
  • Rejestracja:ponad 19 lat
  • Ostatnio:około rok
  • Lokalizacja:Londyn
0

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


<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>
LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
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:prawie 20 lat
  • Ostatnio:prawie 16 lat
0

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


LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
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
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 18 godzin
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:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • 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.