Welcome, Guest
You have to register before you can post on our site.



Search Forums

(Advanced Search)

Forum Statistics
» Members: 5,260
» Latest member: fluence1
» Forum threads: 2,115
» Forum posts: 10,323

Full Statistics

Online Users
There are currently 256 online users.
» 0 Member(s) | 253 Guest(s)
Bing, Google, Yandex

Latest Threads
Very dangerous problem on...
Forum: IntraWeb General Discussion
Last Post: mondoedp
02-19-2024, 07:32 AM
» Replies: 3
» Views: 259
TIWTemplateProcessor - at...
Forum: IntraWeb General Discussion
Last Post: Alexandre Machado
02-19-2024, 04:30 AM
» Replies: 3
» Views: 237
Forum: IntraWeb General Discussion
Last Post: Alexandre Machado
02-19-2024, 02:27 AM
» Replies: 3
» Views: 230
Things to be aware in Del...
Forum: IntraWeb General Discussion
Last Post: Alexandre Machado
02-14-2024, 08:53 PM
» Replies: 3
» Views: 235
5 Things that kill your I...
Forum: IntraWeb General Discussion
Last Post: Mikael Nilsson
02-14-2024, 01:28 PM
» Replies: 10
» Views: 536
Using DB grids
Forum: IntraWeb General Discussion
Last Post: iwuser
02-11-2024, 05:09 PM
» Replies: 5
» Views: 266
Compiler error in IW15.5....
Forum: IntraWeb General Discussion
Last Post: Fabrizio Conti
02-07-2024, 11:25 AM
» Replies: 0
» Views: 151
IW iw15.5.6 - nonSSL lock...
Forum: IntraWeb General Discussion
Last Post: rudyPos
02-06-2024, 04:56 PM
» Replies: 1
» Views: 174
SOAP and Indy
Forum: Indy General Discussion
Last Post: staff@ergosoft.it
02-05-2024, 05:27 PM
» Replies: 8
» Views: 734
TIdFTPServer slow-ish
Forum: Indy General Discussion
Last Post: OzAWebb
02-02-2024, 05:39 AM
» Replies: 2
» Views: 191

  Things to be aware in Delphi 12 (where EMB broke lots of code out there)
Posted by: Alexandre Machado - 02-14-2024, 01:04 AM - Forum: IntraWeb General Discussion - Replies (3)

After some more time playing with Delphi 12 and supporting different applications

1) Indexes in lists are now NativeInt. It means that in 32 bits, nothing changes, but in 64 bits it becomes a Int64.

Whatever TList, TStringList, TObjectList, etc. descendants that you have in your code where you have new Get() and Put() methods for the list you will need to rewrite and (the worst part) probably declare a new alias for the NativeInt type if you need to code to keep compatibility with older Delphi versions.
Warning: The compiler doesn't give you clear messages for this case.

I have really no idea why Embarcadero decided to do that, really. I asked Marco Cantu on his blog but seems that he didn't like/approve my question. Funny.  Tongue

2) OnCreate/OnDestroy events of Forms are triggered from AfterContruction/BeforeDestruction methods, not from Create/Destroy as before. It means that code where you override the contructor of the form and then initializes data inside OnCreate may start failing. Check this example:

  TMyForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    FMyList: TStringList;
    constructor CreateEx(AOwner: TComponent; aSomeItem: string);

constructor TMyForm.CreateEx(aOwner: TComponent; aSomeItem: string);
  inherited Create(aOwner);

procedure Tv6LayerEditor.FormCreate(Sender: TObject);
  FMyList := TStringList.Create;
The code above works perfectly fine since Delphi 1 but now on Delphi 12 it fails with an AV inside the CreateEx() constructor. This happens because FMyList is created only inside Form's OnCreate event (FormCreate above) which will only happen after the AfterConstruction has been executed. Until Delphi 11, the event would fire when calling the inherited Create() constructor.

Although I believe that this is "correct", especially because exceptions inside OnCreate event wouldn't cause the constructor to  fail, the fact that there is no way to keep the old behavior is problematic.
There is no simple way to detect this problem unless through code inspection. In a huge code base it can take a long time and it's very error prone.
This is another change that I see no reason for and don't know how it got approved...

Print this item

Posted by: Mikael Nilsson - 02-13-2024, 01:01 PM - Forum: IntraWeb General Discussion - Replies (3)


I have read the article "Capacity of IntraWeb Applications and Memory Managers". It was very interesting.
So I decided to use ScaleMM2 instead of FastMM4.
But when I compiled my applicaction I got a compile error in unit smmFunctions in function BitScanLast(aValue: NativeInt): NativeUInt;
  BSR AX, aValue;      
  BSR RAX, aValue;

[dcc32 Error] smmFunctions.pas(337): E2107 Operand size mismatch                    on statement BSR AX, aValue;

Print this item

  TIWTemplateProcessor - at runtime
Posted by: lfeliz - 02-10-2024, 04:59 AM - Forum: IntraWeb General Discussion - Replies (3)

I have a situation where I would like to use  TIWTemplateProcessor in a region, but be able to change the template applied based on a runtime condition (order type) set when user sets a value or in an onscroll event. 

In the past, before I got wise to templates, I would stack the regions and just show the one I wanted, but with templates, I can just expose the controls needed based on the type of order

What is best way to force the region to repaint using the updated template?

- Lou

Print this item

  Using DB grids
Posted by: iwuser - 02-10-2024, 01:40 AM - Forum: IntraWeb General Discussion - Replies (5)

Never tried any data with IW before, so if there are any secrets, please share.

Tried the demo with TIWjQDBGrid and it worked. But it's using a ClientDataset. Once I replaced that with a real DB connection, the grid just displays "Loading..." and nothing happens. Is it supposed to work?

So, how would you publish any data from the server to a grid?

Can it be editable in the grid, in place, as a VCL grid would do?

Or is this a totally different world and nothing is what it seems?

Print this item

  Very dangerous problem on IIS!
Posted by: mondoedp - 02-08-2024, 11:34 AM - Forum: IntraWeb General Discussion - Replies (3)

Hi Alexandre,
I'm using IW 15.5.6 on Delphi 10.2.

Only in IIS (in StandAlone all works fine...), just discovered this scaring behavior:

on an IWEDit I write a normal text, containing single quote.
IWEdit component has a OnAsyncChange event

When the AsyncChange event fire, single quote do disappear.....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(i..e "string with 'quotas'" became "string with quotas")

Have a look at the very simple example I've attached (project1 is isapi dll, project2 is the same in stand alone).

Please correct it, we're in production.


Attached Files
.zip   Error_SingleQuote.zip (Size: 10.21 KB / Downloads: 2)
Print this item

  Compiler error in IW15.5.6 and IWApplication.gSessions.LookUp
Posted by: Fabrizio Conti - 02-07-2024, 11:25 AM - Forum: IntraWeb General Discussion - No Replies


after upgrading IW from 15.3.12 to 15.5.56 I have a compiler error in a procedure that I use to list active sessions, developed looking at the SessionLookup151 demo project.
The error is "E2010 Incompatible types: 'TSessionProcEx' and 'Procedure' when compiling "IWApplication.GSessions.LookUp(..." and I can reproduce this error in the demo.
Is this a bug introduced in IW15.5.x or I have to change in some way the code?

Thanks for your help.


Print this item

  5 Things that kill your IW app performance
Posted by: Alexandre Machado - 02-07-2024, 02:59 AM - Forum: IntraWeb General Discussion - Replies (10)

Another post to help you guys to get the best possible performance when deploying an IntraWeb application:


Enjoy  Big Grin

Print this item

  IW iw15.5.6 - nonSSL lock message when starting app as exe
Posted by: rudyPos - 02-06-2024, 03:41 PM - Forum: IntraWeb General Discussion - Replies (1)

I will go back to 15.5.5 to check,
Here is the message I get, but the application still works for HTTP:
"SSLOptions.NonSSLRequest(is locked. Suggestion: Set in ServerController OnConfig event instead."

I CAN SEE it did not get this error in 15.4.1

Please advise

IW 15.5.5 shows same error message...

Print this item

  Stand alone application vs Windows service (Priority support)
Posted by: valmeras - 01-31-2024, 06:56 PM - Forum: IntraWeb General Discussion - Replies (2)

Atozed recommend to install Intraweb applications as a Windows service instead of deploying it as a Stand Alone application.
So, I would like to know if there is a performance difference between the 2 types of deployments?

Print this item

  Google LibPhonenumber import issues
Posted by: cpstevenc - 01-31-2024, 06:13 PM - Forum: CrossTalk General Discussion - No Replies

Greetings.. using latest CrossTalk demo and Delphi 11.3 for win32

DCL: 2.0.32
NET: 533320
Middle (x86): 2.0.32
Right: 2.0.32
UI: 2.0.32

I am messing around with Google LibPhonenumber for C#    ( For life of me can't get CPP version to compile so gave up.  )

Originally I found this @ landrix/LibPhonenumber-for-Delphi: Delphi-wrapper for the .NET port of Google's libphonenumber for parsing, formatting and validating international phone numbers. (github.com)

And for most part it works.  Looks like he wrote a middle man DLL type deal to go between Delphi and the .NET DLL ...  but only covers 2 calls of the over all library.

Limited, but does work.

Then I remembered CrossTalk and gave it A whirl.

It created a NET.PhoneNumbers.pas file

But it is missing a few things....?

Unreferenced <--- not sure?

  PhoneNumberUtil = class(TCTBaseObject)
    class function ValidStartCharPatternRead: Unreferenced; static; /// <--- lots of references in the source import for "Unreferenced"
    class procedure ValidStartCharPatternWrite(const aValue: Unreferenced); static;
    class function CTFullTypeName: string; override;
  public const



RegexOptions <-- only used once... but I think? I just need to import some other .NET library to include this regex engine maybe?

  PhoneRegex = class(TCTBaseObject)
    class function CTFullTypeName: string; override;
    constructor Create(const aPattern: string); reintroduce; overload;
    constructor Create(const aPattern: string; const aOptions: RegexOptions); reintroduce; overload;  <--- only reference
    function IsMatch(const aValue: string): Boolean; overload;

TCTObject <--- Atozed.CrossTalk.BaseObject has no mention of this?
TypeNET  <--- this i get as Type is a reserved word... so it must create TypeNet ... but i figure this is to be something else really in the end?

Pretty much every object has this "Equals" call that references TCTObject the and GetType:TypeNet;

  AreaCodeMapStorageStrategy = class(TCTBaseObject)
    class function CTFullTypeName: string; override;
    function GetPrefix(const aIndex: Int32): Int32; overload;
    function GetStorageSize: Int32; overload;
    function GetDescription(const aIndex: Int32): string; overload;
    function GetNumOfEntries: Int32; overload;
    function ToString: string; reintroduce; overload;
    function Equals(const aObj: TCTObject): Boolean; reintroduce; overload; <--------- every TCTBaseObject seems to have this
    function GetHashCode: Int32; reintroduce; overload;
    function GetType: TypeNET; overload; <--------- every TCTBaseObject seems to have this

For now I just did this to get by

  RegexOptions = class

  Unreferenced = class

  TCTObject = class

  TypeNET = class

And it compiles...

And it runs....

Uses NET.PhoneNumbers, ...

  p: string;
  r: boolean;

  p := '18594091234';
  r := PhoneNumberUtil.IsViablePhoneNumber(p);
  Memo1.Lines.Add(format('phone %s is %s', [p, BoolToStr(r)]));  // -1 returned = true

  p := 'dumbstuff';
  r := PhoneNumberUtil.IsViablePhoneNumber(p);
  Memo1.Lines.Add(format('phone %s is %s', [p, BoolToStr(r )])); // 0 returned = false

I imported a small DLL I wrote in C# ... Add/Subtract kind of deal. Just to play with.

And it too created references to TCTObject the and GetType:TypeNet;

This the win32 .NET DLL I imported


Print this item