AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ist das ein D4 Bug ?

Ein Thema von JoelH · begonnen am 28. Jul 2003 · letzter Beitrag vom 31. Jul 2003
Antwort Antwort
Seite 1 von 3  1 23      
JoelH
(Gast)

n/a Beiträge
 
#1

Ist das ein D4 Bug ?

  Alt 28. Jul 2003, 12:23
Delphi-Quellcode:
private
  p_Doc_Type : String;
  procedure Setze_Doc_Type(s:string);
protected
  // Das OLE-Objekt, die Desktopinstanz und das Dokument selbst.
  Service, Desktop, Document : Variant;
public
  property Doc_Type:String read p_Doc_Type write Setze_Doc_Type;
Diser Code geht.

Wenn ich jetzt dass hier einbauen will, denn die Übergabe ist unnötig
 procedure Setze_Doc_Type; also den Parameter weg lasse dann motzt er bei der property über Incompatible Types
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: Ist das ein D4 Bug ?

  Alt 28. Jul 2003, 12:42
Nur mal so: wie kommst du darauf, daß der parameter unnötig ist?
du hast ein write darin (@Daniel: welches im Gegensatz zu unserem Highlighter bei euch hier wohl nicht gehighlightet wird ), also wird zum setzen des Wertes die Prozedur "setze_doc_type" aufgerufen. Wie soll diese Prozedur jetzt wissen, auf welchen Wert es den setzen soll? Natürlich brauchst du den Parameter.
Computer sind zwar unglaublich schnell im Rechnen, raten können sie aber trotzdem nicht
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Ist das ein D4 Bug ?

  Alt 28. Jul 2003, 12:44
Der Setter-Methode für eine Porperty mußt Du IMHO immer einen Wert mitgeben. Das sollte bei allen Delphi-Versionen so sein.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Ist das ein D4 Bug ?

  Alt 28. Jul 2003, 21:47
Zitat von tommie-lie:
(@Daniel: welches im Gegensatz zu unserem Highlighter bei euch hier wohl nicht gehighlightet wird )
Ich hatte bestimmt einen guten Grund dafür ... *g* ... egal. Ich habe 'read' und 'write' nun zur Liste der hervorzuhebenden Worte gesetzt.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#5

hmm,

  Alt 28. Jul 2003, 22:23
@tommie-lie
Das macht IMHO keinen Sinn, die Setze Methode sieht ca. so aus
Delphi-Quellcode:
procedure Setze_Doc_Type(s:string);
var rueckgabe : String;
begin
  rueckgabe := '';
  if (Document = 'xyz') then
    rueckgabe := 'xy-Typ'
  else
    rueckgabe := 'unknown';
  p_Doc_Type := rueckgabe;
end;
Der üebrgebene Parameter wird also gar nicht gebraucht ! Ich rufs jetzt halt so auf
Setze_Doc_Type('Dummy'); sinnig ist dies aber nicht wirklich.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: hmm,

  Alt 28. Jul 2003, 22:54
Zitat von JoelH:
sinnig ist dies aber nicht wirklich.
Stimmt, sinnig ist deine Deklaration nicht wirklich.
Von einem Property verlange ich normalerweise, daß der Wert, den ich ihm übergebe, darin landet. Und dazu muss der Prozedur Set[Property] nunmal der Wert als Parameter übergeben werden. Ansonsten verlange ich eigentlich, daß mir der Compiler sagt, daß ich dem Ding nichts zuweisen kann.
Und da du hier ein write für das Property angibst, geht der Compiler ganz richtig davon aus, daß es benutzt wird um den Wert des Porperties zu schreiben und will ihm natürlich den Parameter übergeben. Hat die prozedur diesen nicht, meckert er.
Ich würde an deiner Stelle nochmal über Klassendesign nachdenken
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#7

hmm,

  Alt 29. Jul 2003, 12:02
Zitat von tommie-lie:
und will ihm natürlich den Parameter übergeben.
Welchen Parameter ? Einen Dummyparameter ?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Ist das ein D4 Bug ?

  Alt 29. Jul 2003, 13:16
Hi JoelH,

ich glaube, dein Problem steckt im Verständnis was hier abläuft.
Wenn du schreibenderweise auf deine Property Doc_type zugreifst, dann hast du in der Objecterstellung natürlich zwei Möglichkeiten.

Delphi-Quellcode:
private
  p_Doc_Type : String;
protected
  // Das OLE-Objekt, die Desktopinstanz und das Dokument selbst.
  Service, Desktop, Document : Variant;
public
  property Doc_Type:String read p_Doc_Type write p_Doc_Type;
oder
Delphi-Quellcode:
private
  p_Doc_Type : String;
  procedure Setze_Doc_Type(s:string);
protected
  // Das OLE-Objekt, die Desktopinstanz und das Dokument selbst.
  Service, Desktop, Document : Variant;
public
  property Doc_Type:String read p_Doc_Type write Setze_Doc_Type;
Nun machst du bei der Benutzung natürlich das gleiche bei beiden Varianten:

MeinObject.Doc_Type := 'nasowas'; Jetzt passiert im Rahmer der proceduralen Zuweisung nur folgendes. Du kannst in der Procedure Setze_Doc_Type mit dem Parameter s mehr machen als ihn nur dem Property p_Doc_Type zuweisen.

Fälschlich ist die Annahme, dass du die Procedur Setze_Doc_Type über die Objectinstanz aufrufen kannst. Aus diesem Grund steht sie ja auch im private-Teil.

Also, von außen allen gleich und von innen anders.

Übrigens, von Dummyparameter kann keine rede sein, denn wenn du read deklarierst dann geht es um "Schreiben" und dazu gehört auch ein Parameter. Eben was geschrieben werden soll.

Gruß oki
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#9

Re: hmm,

  Alt 29. Jul 2003, 13:18
Zitat von JoelH:
Zitat von tommie-lie:
und will ihm natürlich den Parameter übergeben.
Welchen Parameter ? Einen Dummyparameter ?
Nein verda***!
Als Parameter wird immer der Wert übergeben, den ich dem Property zuweisen will, und das erwarte ich auh von einer Klasse. Das erwartet jeder Programmierer, ob das nun ObjectPascal, C++ oder sonstwas ist!
Wie bereits gesagt, mach dich mal über Klassendesign schlau, dann verstehst du, daß deine Deklaration da oben auf gut deutsch gesagt besch...eiden ist.

Sorry für die Ausdrucksweise, aber ich hab' keinen Bock, daß das wieder so eine Diskussion wird wie die mit Stephan über Open- und ClosedSource.
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#10

hmm,

  Alt 29. Jul 2003, 13:36
@tommie-lie
Hast du ein Problem ?
Ich hab ganz ordentlich gefragt, wenn dir das nicht passt dann antworte halt nimmer, hab ich kein Problem mit, oki's Betrag hat mir mehr geholfen als deine zusammen.

@oki
Jetzt wird es mir zwar klarer, verstanden hab ich den Sinn noch immer nicht. Der Compiler sollte wissen dass da eine procedure rennt und deshalb der Parameter entfallen kann weil er nicht unbedingt gebraucht wird !?
Zitat:
...denn wenn du read deklarierst dann geht es um "Schreiben"..
Du meinst sicher write, oder ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:04 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