-
Content Count
3243 -
Joined
-
Last visited
-
Days Won
105
Lars Fosdal last won the day on February 21
Lars Fosdal had the most liked content!
Community Reputation
1698 ExcellentTechnical Information
-
Delphi-Version
Delphi 12 Athens
Recent Profile Visitors
-
If there is a new version or patch for the IDE, it also will show up on the Welcome page.
-
Frequent scenario function Test: integer; var i: integer; begin try i := 1; // do something finally; Result := i; end; end; i needs to be initialized before the try block.
-
Peganza is another possible tool to find out which unit that drags in another unit.
-
Trouble with installing community edition serial number
Lars Fosdal replied to berean52's topic in General Help
@riev96 cglm.ini file will not help you. There is no license info in that file. SLIP files, on the other hand, are personal, and not to be shared. -
Personally, I shun LiveBindings. In my experience, they are slow and fragile. Disclaimer: I haven't tried them since the version of Delphi when they first arrived.
-
I've never tried working with subforms, so I can't say much about that.
-
Another benefit is that we usually wait with initializing the frames until they are actually used. Saves init time on app startup.
-
We use a lot of frames, but we almost always instantiate, reparent and connect them at runtime. Usually, we have a panel as a "host" for the frame, which lets the panel deal with the in-form alignment, so that the frame can use alClient. As @Davide Angeli mentions, loss of events has been a key factor for deciding to do it that way.
-
MS Copilot might be able, but, yeah, elbow grease FTW.
-
Delphi and "Use only memory safe languages"
Lars Fosdal replied to Die Holländer's topic in General Help
That feels almost like you're advocating the use of FreeAndNil 😄 -
How to make "dynamic initialization" procedure
Lars Fosdal replied to Tommi Prami's topic in RTL and Delphi Object Pascal
Which again makes me wonder why not SELECT SUM(Field1) AS Total FROM YourSourceView but as mentioned, I suspect the example differs from the real world need... -
How to make "dynamic initialization" procedure
Lars Fosdal replied to Tommi Prami's topic in RTL and Delphi Object Pascal
Doh, you are right, Uwe! -
How to make "dynamic initialization" procedure
Lars Fosdal replied to Tommi Prami's topic in RTL and Delphi Object Pascal
Not sure if Totalling fields is the best example for the use case, as that is far more efficient to do in the queries By API, do you mean the interface section of the class? The challenge is that you need a predictable way to associate the fields with the field name. You could write a routine like this procedure ConnectFields(Query: TDataSet; const Fields: TArray<TField>; const Names: TArray<string>); begin Assert(Length(Fields) = Length(Names), 'Number of fields and number of names must match'); for var ix := 0 to Length(Fields) - 1 do begin Fields[ix] := Query.FieldByName(Names[ix]); if not Assigned(Fields[ix]) then raise Exception.Create(Format('Field %s not found.', [Names[ix]]); end; end // usage var Field1, Field2, Field3, Field4: TField; begin ConnectFields(Query, [ Field1, Field2, Field3, Field4], ['Field1', 'Field2', 'Field3', 'Field4']); ... which doesn't save you that much code, really. -
How to make "dynamic initialization" procedure
Lars Fosdal replied to Tommi Prami's topic in RTL and Delphi Object Pascal
Are you doing this within a class or multitude of classes, or is it within a method or multitude of methods? Is TField your own class? -
How to make "dynamic initialization" procedure
Lars Fosdal replied to Tommi Prami's topic in RTL and Delphi Object Pascal
So it is not about visual use? If not, I need to understand more about how the TFields will be used.