AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Der Linken seiten kann nichts zugewisen werden warum ?
Thema durchsuchen
Ansicht
Themen-Optionen

Der Linken seiten kann nichts zugewisen werden warum ?

Ein Thema von mimi · begonnen am 9. Jul 2006 · letzter Beitrag vom 9. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 17:02
Hallo,
ich habe da an meinem projekt einen seltsammen fehler den ich nicht ganz verstehe geschweige denn weg machen könnte und zwar bekomme ich immer
"[Fehler] uPaint.pas(93): Der linken Seite kann nichts zugewiesen werden"

hier ist meine qullcode
Delphi-Quellcode:
  tStyle = class

  public
    procedure LoadStyle(FileName:String);
    procedure SaveStyle(FileName:String);
    procedure SetDefault;

  private
    fSize,fFirstPos:TPoint;
    fPen:TPen;
    fBrush:TBrush;
    fObjectTyp:Integer;
    fName:String;
    fVisible:Boolean;

    function GetSize:Tpoint;
    procedure SetSize(Size:Tpoint);
    function GetFirstPos:TPoint;
    procedure SetFirstPos(FirstPos:TPoint);
    procedure SetPen(Pen:TPen);
    function GetPen:TPen;
    function GetBrush:TBrush;
    procedure SetBrush(Brush:TBrush);
    procedure SetObjectTyp(NewTyp:Integer);
    function GetOjectTyp:Integer;
    procedure SetName(NewName:String);
    function GetName:String;
    procedure SetVisible(Visible:Boolean);
    function GetVisible:Boolean;
  published
    property Size:TPoint read GetSize write SetSize;
    property Position:TPoint read GetFirstPos write SetFirstPos;
    property Pen:TPen read GetPen write SetPen;
    property Brush:TBrush read GetBrush write SetBrush;
    property ObjectTyp:Integer read GetOjectTyp write SetObjectTyp;
    property Name:String read GetName write SetName;
    property Visible:Boolean read GetVisible write SetVisible;

  private
  end;
und so nutze ich ihn:
Delphi-Quellcode:
...
  style:=tStyle.Create;
  style.Size.x:=20;style.Size.y:=20;
was mache ich falsch ???
ich hab hier im forum unter der fehlermeldung gesucht aber leider nichts gefunden... und die hilfe ist auch nicht sehr hilfreich für mich.
währe toll wenn jemmand den fehler finden und mir sagen kann was ich falsch gemacht habe.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 17:05
Ganz einfach: Das geht nicht.

Allerdings geht es so:
Delphi-Quellcode:
style:=TStyle.create;
with style.size do
begin
  x=20;
  y=20;
end;
Oder so:
Delphi-Quellcode:
style:=TStyle.create;
style.size:=Point(20, 20);
[edit=SirThornberry]Delphi-Tags ergänzt - Mfg, SirThornberry[/edit]
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 17:08
vielen dank für deine schnelle retung, aber warum geht das nicht auf die andere art und weise ???
das verstehe ich nicht...
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 17:10
Moin Michael,

weil die Set-Methode nur eine Wert vom Typ TPoint übergeben kann.
Sprichst Du jetzt nur einen Teil an, so wäre der jeweils andere unbestimmt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 17:28
naja, wenn das so ist muss ich mich damit zufrieden geben, weil ich habe es immer noch nicht so ganz verstanden....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#6

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 18:58
Das Problem ist, wie Michael schon geschrieben hat, das der Typ TPoint ja aus zwei Werten, x und y besteht. Wenn du diesem nun nur einen Wert zuweisen willst, ist der zweite Wert nicht belegt und dies verursacht den Fehler. Es werden hat für einen Punkt immer zwei Werte benötigt.
Johannes M.
.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 19:17
Zitat von 3_of_8:
Allerdings geht es so:
Delphi-Quellcode:
style:=TStyle.create;
with style.size do
begin
  x=20;
  y=20;
end;
Wenn size durch eine Getter-Methode geliefert wird (wie in Michaels Beispiel), dann funktioniert dieser Code nicht! In diesem Fall wird nur eine temporäre TPoint-Variable auf dem Stack verändert.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 19:20
Ein bisschen unlogisch ist es imho schon.

style.size gibt einen TPoint zurück. (Also genauer gesagt: Einen Pointer auf die Daten eines TPoint)

Wenn ich den Pointer hab, kann ich ihn ja dereferenzieren, die Offsets für die Felder hinzuaddieren und dann einfach mein Wort reinschreiben, oder?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 19:30
Zitat von 3_of_8:
style.size gibt einen TPoint zurück. (Also genauer gesagt: Einen Pointer auf die Daten eines TPoint)
Nicht ganz. Der Pointer wird vom Aufrufer von GetSize bereitgestellt. Die Methode beschreibt nur den Speicherbereich, auf den dieser Zeiger verweist. Und das ist in unserem Fall der lokale Stack...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Der Linken seiten kann nichts zugewisen werden warum ?

  Alt 9. Jul 2006, 19:33
Ich kenne mich nicht damit aus, wie Delphi records verwaltet. Aber mit Klassen sollte es auf jeden Fall gehen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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 01:10 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