![]() |
Inkompatible Typen TRect ??? Was ist da passiert ?
bei folgendem Beispiel unter D7 meldet er mit Inkompatible Typen ?!? :gruebel:
Seit wann geht das nicht mehr ? .. Ich bin mir 100 prozentig sicher, dass ich so schon programmiert habe. Ist da nur ein Compilerschalter bei mir "verruscht" ??
Code:
procedure TForm1.Button1Click(Sender: TObject);
var a, b : TRect; begin if a = b then beep; -> [Fehler] Unit1.pas(30): Inkompatible Typen end; |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Zitat:
Delphi-Quellcode:
Wobei ich freiwillig kein Fachmann im Umgang mit primitiven Typen bin. ;)
type TSomeBloodyRecord = record
Value1 :integer; Value2 :string; end; type PSomeBloodyRecord = ^TSomeBloodyRecord; var Record1 :TSomeBloodyRecord; PointerToRecord1 :PSomeBloodyRecord; begin with Record1 do begin Value1 := 1; Value2 := 'Miep'; end; PointerToRecord1 := @Record1; Writeln('Record1=PointerToRecord1 is ', (@Record1 = PointerToRecord1)); Sleep(5000); end. |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Hallo !
schon klar, was Du da schreibst, Es ging mir aber nur um den Vergleich ! Früher ging das mal if a = b then ... jetzt muss man: if (a.left = b.left) and (a.top = b.top) usw. schreiben, um einen Record vergleichen zu können. Das war das, was mich wundert !´ P.S. in Deinem Beispiel darf die Variable übrigens nicht vom Typ string sein ! ;-) |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Da täuchst du dich aber gewaltig. :shock:
Delphi-Quellcode:
das ging noch nie. :mrgreen: Solche Vergleiche mit komplexen Typen würden jeden Compiler in die Knie zwingen und auch nur wenig Sinn machen. Auch die Pointer-Variante nützt in dem Fall nicht viel, weil nicht eindeutig ist, wo die Daten aufhören.
If ApfelRecord = BirnenArray then
|
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Code:
ich glaube, Du hast Recht. hab mich da wohl arg getäuscht.
das ging noch nie. weil nicht eindeutig ist, wo die Daten aufhören.
Hatte mal unter Turbo Pascal Zeiten öfters von tief verschachtelten Records gebrauch gemacht. Das war zwar nich ganz objectorientiert, aber zumindest waren die Daten "Themenorientiert" in den Records angeordnet. HAbs gerade nochmal probiert, vergleiche gehen wirklich nicht. von sowas hab ich viel gebrauch gemacht record1.record2.interneDAten.sonstwas := andereDaten.sonstwas; war wohl irgendwie ein blackout, sorry für den Aufstand :freak: |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
ich hab das problem bisher so gelöst:
Delphi-Quellcode:
bei records wo das nicht funktioniert weil zum beispiel strings drin vorkommen hab ich dann einfach eine funktion gemacht die mir sagt ob die beiten gleich sind (welche dann mit Lpoint1.X etc. vergleicht)
type
T8ByteArray = Array [0..7] of Char; [...] var LPoint1, LPoint2: TPoint; begin if T8ByteArray(LPoint1) = T8ByteArray(LPoint2) then [...] end; |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Zitat:
|
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Zitat:
|
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Moin!
Nutzt doch einfach Funktionen die es dafür gibt...
Delphi-Quellcode:
Siehe auch IntersectRect, OffsetRect, IsRectEmpty, InflateRect, ...
If ( EqualRect(a, b) ) Then ...
Die WinAPI bietet doch massig Funktionen an... MfG Muetze1 |
Re: Inkompatible Typen TRect ??? Was ist da passiert ?
Zitat:
![]() Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz