Narazil jsem na docela hnusny problem, ze mi funkcni aplikace, vyvinuta v D2010 a migrovana do XE2 prestala po prelozeni soucasnou XE2+Upd4 verzi pracovat. Konkretne se jednalo o
EOleException pri nastavovani Borders.LineStyle:
AWS.Range[ATopLeft,ABottomRight].Borders[AEdge].LineStyle := ALineStyle;
Voditkem k reseni mi byl jediny relevantni clanek, ktery jsem k tomuto tematu nasel:
https://forums.embarcadero.com/thread.jspa?threadID=63416 (na konci), kde se EMB priznava, ze zacal predavat longword jako longword misto drivejsi konverze na integer:
For XE2 we changed that. If you pass a LongWord,
we will load the VARIANT with VT_UI4 because, well, it's been years since
Unsigned Integer support has been added to OLE Automation.
But it seems that Excel does not like that. If you invoke the Insert method
of Range with VT_I4/0xFFFFEFE7(-4121) it works. But if you invoke it with
VT_UI4/0xFFFFEFE7(-4121), it fails.
Nicmene, reseni s nastavenim promenne
System.Variants.DispatchUnsignedAsSigned na TRUE mi nepomohlo - do kodu, ktery se podle jeji hodnoty ridi, jsem vubec nedotrasoval. Takze jsem sice v initialization sekci to nastaveni promenne ponechal pro strejcka prihodu, ale u vlastniho prirazeni jsem musel udelat explicitni typecast na integer.
Tak kdyby nekdo na neco podobneho narazil, tak at vi, kterym smerem se vydat. Blby je, ze to nechyti preklad, ale projevi se to az za behu (kdyby clovek na vsechno stihal napsat regresni testy
)