-
Content Count
408 -
Joined
-
Last visited
-
Days Won
5
Everything posted by Cristian Peța
-
The code you posted can't give any exception. Try for yourself in a new project. And us Uwe Raabe said: static arrays can't be freed manually, nor modify the length. Don't do this. P.S. for string static arrays you can free memory allocated by strings (assign null string or modify length) but not the array itself.
-
[3D] Why do i need to use negative Y values to go UP?
Cristian Peța replied to Memnarch's topic in FMX
Probably because they started from 2D. For screens (0, 0) point is up-left and you need to use positive values to go down. This originates from old TVs where the analog signal starts from up-left. -
Strange and Random Access Violations
Cristian Peța replied to Ugochukwu Mmaduekwe's topic in RTL and Delphi Object Pascal
It can brake reference counting only if you move() to string. When you only move() from string the string is not affected in any way. Move() doesn't change the source. -
Custom Managed Records Coming in Delphi 10.3
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
Compiler optimizations can bite sometimes. -
Custom Managed Records Coming in Delphi 10.3
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
For protection against modifying const parameters the language shouldn't have pointers. When ARC was introduced with iOS compiler there was a warning that in the future pointers can be banned by NEXTGEN compilers. But I don't think this will ever happen. -
IDE hangs on code completion, find declaration, parameters tooltip.
Cristian Peța replied to vhanla's topic in Delphi IDE and APIs
I don't see any issues after I build camera_shake in 10.2.3 with IDE FixPack. Code completion and others are instant. BTW build time is the same as in 10 Seattle. -
IDE hangs on code completion, find declaration, parameters tooltip.
Cristian Peța replied to vhanla's topic in Delphi IDE and APIs
Which project have you compiled in 10.2.3? I have an error in TERRA_OGG: function stb_vorbis_get_samples_short_interleaved(f:pvorb; channels:integer; buffer:array of SmallInt; num_shorts:integer):integer; var outputs: TOutput; len,n,z,k,kk,ch:integer; buf:array of SmallInt; begin len := num_shorts div channels; n:=0; kk:=0; z := f.channels; if z>channels then z:=channels; buf:=@buffer[kk]; <---[dcc32 Error] TERRA_OGG.pas(5391): E2010 Incompatible types: 'Dynamic array' and 'Pointer' -
IDE hangs on code completion, find declaration, parameters tooltip.
Cristian Peța replied to vhanla's topic in Delphi IDE and APIs
First I recommend you to install Andy's IDE FixPack. It will be much better. And I tried to compile in 10 Seattle out of curiosity but: - particles_simple sample does not compile because TERRA_SpriteManager unit is missing. - linetest sample does not compile because TERRA_Scene unit is missing. - camera_shake finally compiles.... And there is soooo much noise at compilation.... a lot of hints and warnings. Someone must clean this before take this project seriously. And 167 kloc in 127 seconds for camera_shake sample (win32)? I have a project with 243 kloc that compiles in 10 seconds on the same machine. I'm not surprised that CodeInsight is so slow. PS. In 10 Seattle CodeInsight is instant after a build (FixPack installed). -
Custom Managed Records Coming in Delphi 10.3
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
Nice if we optionally can modify the source. For example we can mark that a copy was made or to increment a counter of copies. -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
New.Of() can also be a simple function that returns a record like: function Keep(AObject: TObject): TKeepObjectAndFreeRecord; -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
A record without a reference will stay alive up to routine end? I must test this. .... Just verified in Lazarus and suppose it's similar in Delphi. That record lives on stack up to the routine end. -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
Perhaps that New record must also be declared next to s1. Otherwise how can it go out of scope? -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
I only wanted a simple way to clear my code of that "try finally end" for local, short lived instances. They are the wast majority in my code. For other objects (the minority) I prefer manual memory management and not to fight an automatic one. IShared<T> is nice but a little convoluted. -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
It would be wrong if somewhere is an unsafe reference. But this is true also if using Shared<T> or IShared<T>. Or any other smart pointer. -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
I don't understand what would be wrong to enable ARC for objects and to consider [unsafe] as default. It will not brake old code. And using [safe] or [arc] we can have automatic memory management. At least for simple scenarios. -
How to make a component available to all platforms
Cristian Peța replied to John Kouraklis's topic in FMX
I discovered this looking in FMX sources. -
Directions for ARC Memory Management
Cristian Peța replied to Marco Cantu's topic in RTL and Delphi Object Pascal
What if we would have [safe] attribute? It would be very useful for local instances. We have [unsafe] attribute but not [safe]. In ARC all instances are implicitly [safe] and we need to explicitly mark with [unsafe] if we don't want ARC. I call this implicit ARC. But with [safe] we can have explicit ARC where all instances are implicit [unsafe].