[gelöst] Erhöhung mit INC() bei SpinEdit.Value

Rund um die LCL und andere Komponenten

[gelöst] Erhöhung mit INC() bei SpinEdit.Value

Beitragvon catweasel » 5. Apr 2017, 16:43 [gelöst] Erhöhung mit INC() bei SpinEdit.Value

Hallo

Ich habe eine SpinEdit-Komponente im Einsatz die ich automatisiert erhöhen möchte.

Wenn ich sie mit "Variable:=Variable+10" erhöhe, funktioniert das tadellos.
Code: Alles auswählen
PasswortlaengeSpinEdit.Value := PasswortlaengeSpinEdit.Value+10;


Mache ich das gleiche mit "inc(Variable, 10)" kommt es beim compilieren zu einer Fehlermeldung
Code: Alles auswählen
inc( PasswortlaengeSpinEdit.Value,10);


Fehlermeldung:
Code: Alles auswählen
unit11.pas(231,39) Error: Can't take the address of constant expressions


Geht das grundsätzlich nicht mit INC() in der Komponente?


Gruß
Michael
Zuletzt geändert von catweasel am 5. Apr 2017, 17:11, insgesamt 1-mal geändert.
catweasel
 
Beiträge: 200
Registriert: 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 18.3 - (L 1.8.4 FPC 3.0.4) | 
Nach oben

Beitragvon theo » 5. Apr 2017, 16:47 Re: Erhöhung mit INC() bei SpinEdit.Value

Soviel ich weiß geht das nicht. Der Parameter ist ja keine einfache Zahl, sondern das Resultat einer Methode (Set/Get).
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon catweasel » 5. Apr 2017, 16:57 Re: Erhöhung mit INC() bei SpinEdit.Value

theo hat geschrieben:Soviel ich weiß geht das nicht. Der Parameter ist ja keine einfache Zahl, sondern das Resultat einer Methode (Set/Get).

Müßte das dann nicht auch für
Code: Alles auswählen
PasswortlaengeSpinEdit.Value := PasswortlaengeSpinEdit.Value+10;

gelten? Das funktioniert ja.
catweasel
 
Beiträge: 200
Registriert: 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 18.3 - (L 1.8.4 FPC 3.0.4) | 
Nach oben

Beitragvon theo » 5. Apr 2017, 17:05 Re: Erhöhung mit INC() bei SpinEdit.Value

catweasel hat geschrieben:
theo hat geschrieben:Soviel ich weiß geht das nicht. Der Parameter ist ja keine einfache Zahl, sondern das Resultat einer Methode (Set/Get).

Müßte das dann nicht auch für
Code: Alles auswählen
PasswortlaengeSpinEdit.Value := PasswortlaengeSpinEdit.Value+10;

gelten? Das funktioniert ja.


Das ist was anderes: Lies den Wert -> Addiere 10 -> Schreib den Wert. Ein Getter kann nicht gleichzeitig ein Setter sein.
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon Mathias » 5. Apr 2017, 17:05 Re: Erhöhung mit INC() bei SpinEdit.Value

Soviel ich weiß geht das nicht. Der Parameter ist ja keine einfache Zahl, sondern das Resultat einer Methode (Set/Get).

Das dies nicht geht, müsste man auf die Assembler-Ebene gucken gehen.

Dieser Code inkrementiert ein einfache Variable um 1, die Ein- und Aus-gabe ist in beiden Fällen i.
Aber ber der property-Variable kommt die Eingabe von der Funktion von Getxxx und die Ausgabe geht in Setxxx.
Code: Alles auswählen
var
  i: Int16;
begin
  i := 1;
  asm
           Inc     i
  end;
  ShowMessage(IntToStr(i));

Wen du i im Asm-Block durch eine Property ersetzt, kommt es auch zu einem Fehler.

Oder bei addieren um 10, sieht das in Assembler so aus:
Code: Alles auswählen
  asm
           Add     i, 10
  end
Zuletzt geändert von Mathias am 5. Apr 2017, 17:12, insgesamt 1-mal geändert.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon catweasel » 5. Apr 2017, 17:10 Re: Erhöhung mit INC() bei SpinEdit.Value

ok, ich denke jetzt hab´ ich es verstanden.
Danke für die Info :)

Gruß
Michael
catweasel
 
Beiträge: 200
Registriert: 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 18.3 - (L 1.8.4 FPC 3.0.4) | 
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried