AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Inkompatible Typen TRect ??? Was ist da passiert ?
Thema durchsuchen
Ansicht
Themen-Optionen

Inkompatible Typen TRect ??? Was ist da passiert ?

Ein Thema von stoxx · begonnen am 30. Nov 2004 · letzter Beitrag vom 1. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 30. Nov 2004, 22:30
bei folgendem Beispiel unter D7 meldet er mit Inkompatible Typen ?!?
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;
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 30. Nov 2004, 23:00
Zitat von stoxx:
Ich bin mir 100 prozentig sicher, dass ich so schon programmiert habe.
Vielleicht so?
Delphi-Quellcode:
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.
Wobei ich freiwillig kein Fachmann im Umgang mit primitiven Typen bin.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#3

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 30. Nov 2004, 23:28
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 !
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 01:09
Da täuchst du dich aber gewaltig.

If ApfelRecord = BirnenArray then das ging noch nie. 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 02:52
Code:
das ging noch nie. weil nicht eindeutig ist, wo die Daten aufhören.
ich glaube, Du hast Recht. hab mich da wohl arg getäuscht.
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 07:48
ich hab das problem bisher so gelöst:
Delphi-Quellcode:
type
  T8ByteArray = Array [0..7] of Char;

[...]
var LPoint1, LPoint2: TPoint;
begin
  if T8ByteArray(LPoint1) = T8ByteArray(LPoint2) then
  [...]
end;
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 07:52
Zitat von SirThornberry:
ich hab das problem bisher so gelöst:
Delphi-Quellcode:
type
  T8ByteArray = Array [0..7] of Char;

[...]
var LPoint1, LPoint2: TPoint;
begin
  if T8ByteArray(LPoint1) = T8ByteArray(LPoint2) then
  [...]
end;
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)
Ist das nicht mit CompareMem einfacher?
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 08:52
Zitat von jim_raynor:
Ist das nicht mit CompareMem einfacher?
Einfacher? Einfacher und eleganter wäre Operatorüberladung, aber darauf kannst du in Delphi wohl noch 100 Jahre warten.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 09:25
Moin!

Nutzt doch einfach Funktionen die es dafür gibt...

If ( EqualRect(a, b) ) Then ... Siehe auch IntersectRect, OffsetRect, IsRectEmpty, InflateRect, ...

Die WinAPI bietet doch massig Funktionen an...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Inkompatible Typen TRect ??? Was ist da passiert ?

  Alt 1. Dez 2004, 09:26
Zitat von Robert_G:
Einfacher und eleganter wäre Operatorüberladung, aber darauf kannst du in Delphi wohl noch 100 Jahre warten.
Nöö... Nach meinen Infos geht das schon lange in Delphi. In Der Entwickler-Zeitschrift war mal vor längerer Zeit ein Artikel darüber drin. Somit kann mal eigene Klassen erstellen, es sind aber auch schon fertige Beispiele bei Delphi dabei. So kann Delphi z.B. sehr leicht mir komplexen Zahlen arbeiten, mit den typischen Operatoren, also +, -, * und /. Ich hab den Artikel leider grad nicht zur Hand, aber ich glaub das gabs schon mal hier im Forum.

Gruß
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz