In managed C++, define an array variable for a managed class, in syntax, is different from standard C/C++. For example,
using System::Drawing;
//...
array<PointF, 1>^ pointsF = gcnew array<PointF, 1>(100);
// PointF pointsF[100]; // is wrong
// PointF pointsF[] = gcnew PointF[100]; // is wrong
//...
pointsF[0].X = 11.23f;
pointsF[0].Y = 0.54f;
where PointF is a structure defined in System::Drawing namespace.
For String class, you have define an array of String as:
array<String^, 1>^ s = gcnew array<String^, 1>(10);
//String^ s[] = gcnew String^[10]; // wrong again
The general format to define an array of type is:
[qualifiers] [cli::]array<[qualifiers]type1[, dimension]>^ var =
gcnew [cli::]array<type2[, dimension]> (val[,val...])
See MSDN on Array Keyword
Thursday, January 19, 2006
Array var in Managed(.Net) C++
Posted by D Chu at 2:35 PM 0 comments
Labels: C++
Wednesday, January 11, 2006
Windows Installer Problem
Some times I got anoying error messages when I tried to open some applications such as VB6.0. The message is like a dialog window with the message:Setup is aborting now. Cannot detect file: mediainfo.ini
This is caused by Windows Installer when I tries to find some files based on Registry settings. For example, I removed some binary files which were installed by Windows Installer but I could not find Uninstaller for those files or I could not run uninstaller successfully.
Here are some steps to avoid these messages:
Locate missing files
- Open Event Viewer from Administration Tools.
- View property for the most recent warning messages in Application node, and make a note of missing file, for example, "C:\MyTools\Bin\Interop.Utility.dll".
- Open RegEdit
- Locate to "My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer"
- Search for the file with path found above. Note, do not include drive like "C:" in the search string.
- You should find a key like this: "...\UserData\S-1-5-18\Components\D1311F8CC3D78BB42BCF6A". Under this one you will find a key Item with a value like "C?\\MyTools\Bin\Interop.Utility.dll".
- What I do first is to find the missing files and copy them to a folder like "C:\MissingFiles\Installer\"
- Then I change the registry key item's value to "C?\MissingFiles\Installer\Interop.Utility.dll".
I am not sure if I should remove these registry keys or not. For safe purpose, I try to find missing files and udpate registry instead.
Posted by D Chu at 9:10 AM 0 comments
Labels: Windows
Subscribe to:
Posts (Atom)