Log On
Embarcadero Home
Watch, Follow, &
Connect with Us
Share This
QualityCentral
Communities
Articles
Blogs
Resources
Downloads
Help
QualityCentral
Delphi-BCB
ActiveX
AddOn
Bold
CodeGuard
Compatibility
Compiler
CORBA
Database
Databinding
Debugger
Demos
Documentation
Enterprise
FireMonkey
IDE
Install
International
Internet
Linker
MFC Support
Midas
Modeling
MTS
Resourcing
RTL
SOAP
TASM/TD
Tools CL
VCL
8-Byte Alignment
Action Classes
Additional Controls
Core VCL Classes
DFM to TEXT
Dialog Controls
Docking
Drag/Drop
Emulation Classes
Exceptions
Gestures
Graphics
MAPI Support
MDI Support
Multi-Monitor Support
OnGesture event
Printing
Property/Type Editors
Registry / INI Objects
Ribbon Controls
Sample Controls
Services
Standard Controls
Styles
System Controls
Thread support
Touch Controls
Type Info
Win 3.1 Controls
Win 32 Controls
VCLX
You are not logged in.
Help
Print
Public Report
Report From:
Delphi-BCB/VCL
[ Add a report in this area ]
Report #:
928
Status:
Need Feedback
Int64 properties of components not saved if value is 0
Project:
Delphi
Build #:
6.0.6.240
Version:
6.0
Submitted By:
Lasse Karlsen
Report Type:
Basic functionality failure
Date Reported:
4/20/2002 7:38:54 AM
Severity:
Commonly encountered problem
Last Updated:
1/19/2010 12:34:10 AM
Platform:
All platforms
Internal Tracking #:
Resolution:
Need More Info
(Resolution Comments)
Resolved in Build:
:
None
Duplicate of:
None
Voting and Rating
Overall Rating:
(16 Total Ratings)
3.88 out of 5
Total Votes:
None
Description
Any component with an Int64 property will not have the value of that property saved, if the value is 0.
nodefault, default -10, stored True, neither of those will make sure the property is saved. The only solution is setting the default value of the property to 0 as well, something that might not be suitable in all instances.
Steps to Reproduce:
Basic component that shows off problem:
type
TInt64Component = class(TComponent)
private
FValue: Int64;
public
constructor Create(AOwner: TComponent); override;
published
property Value: Int64 read FValue write FValue default -10;
end;
constructor TInt64Component.Create(AOwner: TComponent);
begin
inherited;
FValue := -10;
end;
install this, and try setting the value to 0, notice that if you close and reopen form, the value is back to -10.
Workarounds
None
Attachment
None
Comments
Ray Lischner at 4/20/2002 8:09:48 AM
-
The real problem is that the compiler does not issue a warning when the user incorrectly tries to assign a default value to properties of type Int64, string, floating point, etc.
Default property values are supported only for ordinal and set-type published properties.
Lasse Karlsen at 5/6/2002 11:25:46 PM
-
As long as it's impossible to set a default value for the Int64 properties, making sure "Stored X" works, or that it's saved regardless should not be that hard to make.
For instance, I have a range component (the case I had the problem with) that has two Int64 properties for Min and Max range. These two defaults to the lowest and highest value possible. The bug I had problems with though was that in one case I wanted to set the instance range from 0 to 100, but 0 was never saved, hence the minimum was always the lowest Int64 value possible.
The alternatives for me included setting the default value of the property to 0 (but the minimum value I had chosen practically meant "no minimum value") or replace with Integer. I went for the second in this case but I'd rather have it fixed so that Int64 can be useful as a property.
Colin Wilson at 4/23/2002 2:57:44 AM
-
> Default property values are supported only for ordinal and set-type published properties.
The Delphi documentation isn't clear on whether it considers Int64 to be an ordinal type. For instance if you look up 'ordinal types' it says "Ordinal types include integer, character, Boolean, enumerated, and subrange types." - but if you look up 'Succ' it says "X is an expression of an ordinal type (including Int64)."
Logically though, int64 is an ordinal type,
Ray Lischner at 4/23/2002 9:12:52 AM
-
In that case, the defect is that the compiler does not warn the user when the user tries to specify a default property for a type that is not a 32-bit ordinal or set. The documentation should also be improved.
Jouni Aro at 10/17/2008 3:47:04 AM
-
The same problem is valid for float properties. You cannot even use a 'stored' specifier to change the behavior: 0 is never stored, so that is the only valid default value for all float properties! I guess, I will create a new QC for that.
Tomohiro Takahashi at 10/17/2008 4:40:18 AM
-
> I guess, I will create a new QC for that.
Yes please.
View Your Reports
Search
Server Response from: ETNACODE01
Developer Tools
Blackfish SQL
C++Builder
Delphi
FireMonkey
Prism
InterBase
JBuilder
J Optimizer
HTML5 Builder
3rdRail & TurboRuby
Database Tools
Change Manager
DBArtisan
DB Optimizer
ER/Studio
Performance Center
Rapid SQL
Technical Articles
Tutorials
White Papers
Press Releases
Newsletters
Add Content (GetPublished)
Audio
Audio & Video
Video
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Tags
Technology Partners
Downloads
Free Trials
Registered User Downloads
Beta Programs
Add Content (GetPublished)
Articles
Blogs
Bugs & Suggestions (QualityCentral)
Discussion Forums
Examples (CodeCentral)
Member Services
About
Connect with Us