AGB  ·  Datenschutz  ·  Impressum  







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

Wiso geht eigentlich inc(form1.width); nicht?

Ein Thema von ferby · begonnen am 16. Sep 2005 · letzter Beitrag vom 17. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 16:58
Hallo,

Ich möchte das die Breite meiner Form jede Sekunde um eins größer wird. Dazu habe ich einen Timer und in ontimer den code:

 inc(form1.width); Nur leider funktioniert das inc(bla); anscheinend nur bei variabel. Warum geht das hier nicht? wäre ja viel einfacher anstatt:

form1.width:=form1.width+1;
Kann mich wer aufklären,
danke,
ferby
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 17:01
Aus meiner Hilfe(F1):

Zitat:
Warning: You can’t use Inc on properties because it modifies the parameter.
MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 18:07
Hallo,

danke für die antwort,
kannst du mir das genauer erklären, den soweit ich weiß steht inc(form1.width); für form1.width:=form1.width+1; also warum soll das einemal "modifies the parameter" und das andere mal nicht???


Ferby
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 18:07
Denk mal nach. Eine Property besteht in Wirklichkeit aus einer Lesefunktion und einer Schreibprozedur.
Irgendwie macht ein Inc auf eine Prozedur keinen Sinn.
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#5

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 18:12
Hoi,

kannst aber schreiben

Form1.Width:=Succ(Form1.Width); sieht auf jeden Fall besser aus als

Form1.Width:=Form1.Width+1;
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 18:23
Zitat von static_cast:
Hoi,

kannst aber schreiben

Form1.Width:=Succ(Form1.Width); sieht auf jeden Fall besser aus als

Form1.Width:=Form1.Width+1;
Das ist aber Geschmackssache, in meine Anwendungen kommen mir jedenfalls keine Sukkulenten. Und auch keine Predatoren.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#7

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 22:45
Hallo!

Beim Stöbern in der DP komme ich grad zu diesem Thread und muss da mal meinen Senf dazu geben:

Zitat:
Warning: You can?t use Inc on properties because it modifies the parameter.
Wenn das die Erklärung ist, warum:

inc(Form1.Width) nicht funktioniert, aber:

Form1.Width := Succ(Form1.Width) dann doch funzt, obwohl Komponenteneigenschaften mittels Streaming System uber Routinen versorgt werden, ist mir nicht ganz klar. Ist die Umsetzung dieser Pascalanweisungen denn sooooo grundverschieden? Was macht denn die Funktion SUCC() groß anders als die Prozedur INC(), wenn wir mal vom Rückgabewert der einen Funktion absehen?

Bitte klärt mich auf

Schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 23:08
Inc() verändert den ihr übergebenen Wert - schon mal versucht, eine Funktion um eins zu erhöhen ?

Fakt ist: Propertys können nicht als var-Parameter übergeben werden, weil sie nicht zwingend eine Variable repräsentatieren.
  Mit Zitat antworten Zitat
Benutzerbild von mael
mael

Registriert seit: 13. Jan 2005
391 Beiträge
 
Delphi XE3 Professional
 
#9

Re: Wiso geht eigentlich inc(form1.width); nicht?

  Alt 16. Sep 2005, 23:13
Der eigentliche Grund ist, daß inc() und dec() System-Funktionen sind (Stichwort Compiler-Magic), die direkt in einen Assembler-Befehl umgesetzt werden. meißt INC/DEC bei inc(x,>=2) bzw dec(x,>=2) in ADD/SUB.

Man könnte natürlich in den Kompiler die Behandlung von Eigenschaften einbauen. Ich denke mal das es nicht getan wurde ist um zu verdeutlichen, daß inc/dec hier nicht "hochoptimierten" Kode erzeugt (wie es in der Hilfe heißt).
So ähnlich wie es üblich ist in C++ Operatoren meißtens dann zu verwenden wenn die Operation schnell ist, bei langsamen Operationen aber Funktionen mit Namen.

Ich fände es aber auch besser wenn es gehen würde, machbar ist es sicherlich!
HxD, schneller Hexeditor:
http://mh-nexus.de/hxd
  Mit Zitat antworten Zitat
17. Sep 2005, 08:18
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ist ja eine Frage zu Delphi.
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 14:44 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