|
Stuart,
the link "this post", goes to this thread.
Thanks
Phil
|
|
|
|
|
You should find (when you click on that link), if you look further down the page, a thread titled 'Debug Assertion', with a message exapnded - I did, anyway. Look for that thread - my last post in it has the example I was talking about.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Hi Stuart,
ok, this is as far as I've gotten so far...
wr->LastName = _bstr_t ("Davis");
using namespace ADODB;
_RecordsetPtr ptrRS;
hresult = ptrRS.CreateInstance(__uuidof(Recordset));
if(FAILED(hresult)) {
MessageBox("ptrRS.CreateInstance Failed *****");
}
ptrRS = wr->;GetCustomerList();
ptrRS->MoveFirst();
_variant_t vtRows = ptrRS->GetRows(ADODB::adGetRowsRest);
No crashes to this point...
So how do I get the data out of the variant?
Thanks
phil
|
|
|
|
|
The variant should contain a SAFEARRAY[^]. There are useful classes wrapping SAFEARRAYs - see here[^] and here[^].
The other way would be to use the methods of record set (other than GetRows - that's not the best way, to be honest, but the easiest for the specific example I was showing).
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
how to create an xml file in vc++6.0 and writing data to it.please let me know
kir_MFC
|
|
|
|
|
|
As Naveen suggested. There are other XML parsers available as well. Also you could look at the XML DOM tutorial on www.w3schools.com. There are other sites with DOM info as well
[modified]
Why? What was wrong with the replies from previous post?
|
|
|
|
|
kir_MFC wrote: please let me know
See here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
hi there,
I have one modal dialog box, created by DialogBox() api. This dialog box has some buttons and other control.
1. Here I want to capture Ctrl+PgUP and Ctrl+PgDn key strokes. and based on them i want to move to another button
2. Once i am on another button i want to forward this action to one of the case in WM_COMMAND.
could you be able to take some time and answer my questions please?
Thanks in advance
Warm Regards
Ajay
London
|
|
|
|
|
reply2am wrote: could you be able to take some time and answer my questions please?
Try this.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
in my application i have to read edit box controls data into xml file .please let me know how to do it
kir_MFC
|
|
|
|
|
|
thank u very much
kir_MFC
|
|
|
|
|
kir_MFC wrote: please let me know how to do it
Which part, reading from an edit control or writing to an XML file?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
read data in the edit controls and store that data in xml file
kir_MFC
|
|
|
|
|
kir_MFC wrote: read data in the edit controls...
Use GetWindowText() , CWnd::GetWindowText() , or send it a WM_GETTEXT message.
kir_MFC wrote: ...and store that data in xml file
Have you looked at TinyXML?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Hello,
I wrote template which return matrix in Window Form Application .My template is below:
template<class T>
class matrix1 {
protected:
public:
T *data;
const unsigned rows, cols, size;
matrix1(unsigned r, unsigned c) : rows(r), cols(c), size(r*c) {
data = new T[size];
}
~matrix1() { delete data; }
void setValue(unsigned row, unsigned col, T value) {
data[(row*cols)+col] = value;
}
T getValue(unsigned row, unsigned col) const {
return data[(row*cols)+col];
}
};
I wrote this code in Main Project File in Windows Form Application.I defined 341*680 matrix with using this template :
matrix1<double>A(341,680);
I used function that do operation on this template and I defined it like this:
void function(matrix1<double> &b,array< double>^ temp)
And call it:
function(A,temp);
(temp is one dimensinonal data array that I have to use for my programming algorithm)
For Example;When I want to print data that is located in the first row and first column.
Visual C++ recognise getvalue and setvalue function ,but couldn't print anything and gave a lot of error interested with array1 template
I tried this template and function on CLR Console Application and it worked.How could I do this On Windows Form Application.And Where should I locate template class on Windows Form Application.
Best Regards...
modified on Tuesday, June 30, 2009 8:48 AM
|
|
|
|
|
Take a look at Managed Templates[^]
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
emira67 wrote: Visual C++ recognise getvalue and setvalue function ,but couldn't print anything and gave a lot of error interested with array1 template
Do you mean compilation errors? If so, tell us what they were...Because after correcting the obvious syntax error (you missed off the trailing }; of the template class definition), that code compiled, linked and ran inside a C++ WinForms application built in VS2008
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
It was compiler error that VS2008 gave.These errors lik these:
error C3861: 'function': identifier not found
error C2065: 'A' : undeclared identifier
In fact I declared this items!!!
Could you help me please?
|
|
|
|
|
emira67 wrote: In fact I declared this items!!!
But obviously not somewhere that the code that used the items was able to see them.
emira67 wrote: Could you help me please?
If you posted some more detail (the filename that you put the template class & function declaration in, the code that uses the matrix and function), then possibly. However, your code is syntactically and semantically correct - you've just organised it so that the code that uses those things can't see them. Check through your code to understand why!
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
hi all,
i have written a small service.now when i install the service, the service gets installed what i feel but is not able to start. using an installer i am installing the service application in windows vista.
it gives out an error during installation, when the service is getting started.
it throws an error as follows:
Create process failed: error code 14001. the application has failed to start because the application configuration is incorrect. reinstalling the application may fix the problem.
i tried reinstalling, however the same problem persists...
i am pasting the code below,, for initial main, service installation and service start functions..please can i get some help on fixing the error....
*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void __cdecl _tmain(int argc, char **argv)
{
HKEY hKeyHandle;
DWORD dwDataToWrite = 1;
if( argc == 3 )
{
printf("ERROR:\tIncorrect number of arguments\n\n");
return;
}
char *arg1 = argv[1];
char *arg2 = argv[2];
if(_strnicmp(arg1, "install", 7) == 0)
{
if(!PathFileExists(arg2 ))
{
exit(1);
}
if (InstallService(arg2))
{
MessageBox(NULL,"Service installed successfully",Message,MB_OK);
}
else
{
MessageBox(NULL,"Error in service installation",Message,MB_OK);
exit(2);
}
}
else if (lstrcmpi( arg1, TEXT("uninstall")) == 0 )
{
if(!ServiceDelete())
{
MessageBox(NULL,"Error in Un-installing",Message,MB_OK);
exit(3);
}
}
else if (lstrcmpi( arg1, TEXT("enable")) == 0 )
{
if (!EnableService())
{
MessageBox(NULL,"Error in enabling",Message,MB_OK);
exit(4);
}
}
else
exit(0);
SERVICE_TABLE_ENTRY DispatchTable[] = {
{ SRVCNAME, (LPSERVICE_MAIN_FUNCTION) SvcMain },
{ NULL, NULL } };
StartServiceCtrlDispatcher(DispatchTable);
}
// Service main function for the service
VOID WINAPI SvcMain(DWORD dwArgs,LPTSTR *lpszArgv)
{
DWORD dwErr = 0;
debug_log("In Service Main-The Entry Point for Service");
// Register the handler function to service
svcStatusHandle = RegisterServiceCtrlHandlerEx(TEXT(SRVCNAME),(LPHANDLER_FUNCTION_EX)SvcCtrlHandler,NULL);
if(!svcStatusHandle)
{
debug_log("Failed to register service handler function error(%d) returned",GetLastError());
(VOID)ReportServiceStatus(SERVICE_STOPPED,dwErr,0);
return;
}
// service status members remain same as set here.
svcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
svcStatus.dwServiceSpecificExitCode = 0;
if(!ReportServiceStatus( SERVICE_START_PENDING, NO_ERROR, 3000 ));
CleanupHandles();
//Start the service...
ServiceStart(dwArgs,lpszArgv);
debug_log("Exiting Service Main");
}
//Function for installing the service in SCM database
BOOL InstallService(char *szPath)
{
SC_LOCK sclLock;
LPQUERY_SERVICE_LOCK_STATUS lpqslsBuf;
SERVICE_DESCRIPTION sdBuf;
DWORD dwBytesNeeded;
BOOL bSuccess=TRUE;
SC_ACTION sca[3];
SERVICE_FAILURE_ACTIONS sfaBuf;
debug_log("Installing service now...");
//Get a handle to SCM database..
schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ALL_ACCESS | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS);
if (schSCManager == NULL)
{
debug_log("Failed to open SCM database, error-(%d) returned\n",GetLastError());
return false;
}
else debug_log("Connection to SCM database success");
LPCTSTR lpszBinaryPathName= szPath;
// If database opened create the service
schService = CreateService(schSCManager,SRVCNAME,SRVCNAME,SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,lpszBinaryPathName,NULL,NULL,NULL,NULL,"");
if(schService == NULL)
{
debug_log("Error in creating service,[%d] error code returned",GetLastError());
return false;
}
else debug_log("Service %s created and installed",SRVCNAME);
CloseHandle(schService);
// service config change to specify action on failure
debug_log("Acquiring lock on SCM database");
sclLock = LockServiceDatabase(schSCManager);
if (sclLock == NULL)
{
if (GetLastError() != ERROR_SERVICE_DATABASE_LOCKED)
{
debug_log("Database Lock failed");
return FALSE;
}
// Allocate buffer to det details about the lock
lpqslsBuf = (LPQUERY_SERVICE_LOCK_STATUS)LocalAlloc(LPTR,sizeof(QUERY_SERVICE_LOCK_STATUS)+ 256);
if (lpqslsBuf == NULL)
{
debug_log("Local alloc failed");
return FALSE;
}
// Get the lock status information
if(!QueryServiceLockStatus(schSCManager,lpqslsBuf,sizeof(QUERY_SERVICE_LOCK_STATUS)+256,&dwBytesNeeded))
{
debug_log("Query lock status failed");
return FALSE;
}
if (lpqslsBuf->fIsLocked)
{
debug_log("Already locked by %s",lpqslsBuf->fIsLocked);
}
else
LocalFree(lpqslsBuf);
}
//if database is locked make the changes
schService= OpenService(schSCManager,SRVCNAME,SERVICE_ALL_ACCESS | SERVICE_CHANGE_CONFIG);
if (schService == NULL)
{
debug_log("Open service failed");
return FALSE;
}
sca[0].Type = SC_ACTION_RESTART;
sca[0].Delay = 1;
sca[1].Type = SC_ACTION_RESTART;
sca[1].Delay = 1;
sca[2].Type = SC_ACTION_RESTART;
sca[2].Delay = 1;
sfaBuf.cActions = 3;
sfaBuf.lpsaActions = sca;
sfaBuf.dwResetPeriod = INFINITE;
sdBuf.lpDescription = "Test Service";
if (!ChangeServiceConfig2(schService,SERVICE_CONFIG_FAILURE_ACTIONS,&sfaBuf))
{
debug_log("Change service config failed");
bSuccess = FALSE;
}
UnlockServiceDatabase(sclLock);
CleanupHandles();
debug_log("Exiting install service...");
return bSuccess;
}
// Start the service
VOID ServiceStart(DWORD dwArgc, LPTSTR *lpszArgv)
{
debug_log("Inside Service Start,Service Started");
SERVICE_STATUS_PROCESS ssStatus;
DWORD dwOldCheckPoint;
DWORD dwStartTickCount;
DWORD dwWaitTime;
DWORD dwBytesNeeded;
// Acquire handle to the SCM database.
schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if (schSCManager == NULL)
{
debug_log("OpenSCManager failed (%d)\n", GetLastError());
return;
}
// Handle to the service.
schService = OpenService(schSCManager,SRVCNAME,SERVICE_ALL_ACCESS);
if (schService == NULL)
{
debug_log("OpenService failed (%d)\n", GetLastError());
CloseServiceHandle(schSCManager);
return;
}
// Start the service.
if (!StartService(schService,0,NULL) )
{
debug_log("StartService failed error-(%d) returned\n", GetLastError());
CleanupHandles();
return;
}
// Check if the service has started
if (!QueryServiceStatusEx(schService,SC_STATUS_PROCESS_INFO,(LPBYTE) &ssStatus,sizeof(SERVICE_STATUS_PROCESS),
&dwBytesNeeded ) )
{
debug_log("Service status 1 query failed,error[%d] returned",GetLastError());
return;
}
// Check the system start time....
dwStartTickCount = GetTickCount();
dwOldCheckPoint = ssStatus.dwCheckPoint;
while (ssStatus.dwCurrentState == SERVICE_START_PENDING)
{
dwWaitTime = ssStatus.dwWaitHint / 10;
if( dwWaitTime < 1000 )
dwWaitTime = 1000;
else if ( dwWaitTime > 10000 )
dwWaitTime = 10000;
Sleep( dwWaitTime );
// Check the status again.
if (!QueryServiceStatusEx(schService,SC_STATUS_PROCESS_INFO,(LPBYTE) &ssStatus,sizeof(SERVICE_STATUS_PROCESS),
&dwBytesNeeded ) )
{
debug_log("Service status 2 query failed,error[%d] returned",GetLastError());
break;
}
if ( ssStatus.dwCheckPoint > dwOldCheckPoint )
{
// Service is running with system start
dwStartTickCount = GetTickCount();
dwOldCheckPoint = ssStatus.dwCheckPoint;
}
else
{
if(GetTickCount()-dwStartTickCount > ssStatus.dwWaitHint)
{
//Service hasn't been started with system start
debug_log("Service has not started with system startup");
break;
}
}
}
// Determine whether the service is running
if (ssStatus.dwCurrentState == SERVICE_RUNNING)
{
debug_log("Service has been started successfully.\n");
}
else
{
debug_log("Service not started. \n");
debug_log(" Current State: %d\n", ssStatus.dwCurrentState);
debug_log(" Exit Code: %d\n", ssStatus.dwWin32ExitCode);
debug_log(" Check Point: %d\n", ssStatus.dwCheckPoint);
debug_log(" Wait Hint: %d\n", ssStatus.dwWaitHint);
}
// Start the action to be performed by the service..
debug_log("Starting the service init process now,work to be performed by service");
ServiceInit();
debug_log("Exiting Service Start now..");
CleanupHandles();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////******
all the variables used have been declared and there are no compilation error...
using visual studio 2008 for service application development for windows vista...
Thankuou...
|
|
|
|
|
No need to paste the full code of your application. Please read the posting guidelines ("How to get an answer to your question") before posting...
For your problem: are you using VC2005 or VC2008 ? If yes, you have to instal the VC redistributable package on the target platform. This will install the C-runtime and MFC libraries.
You can find this for VC2005 here[^]. IF you need another version of VC (2008, or with a service pack installed), you'll have to search a bit on the website.
|
|
|
|
|
Or you can build you application with Static MCF and CRTL libraries instead of using DLLs. Base distribution for Vista does not include the VS2008 runtime yet.
|
|
|
|
|
i am using vs2008.
i did install the redistributable package on the machine..and still the same problem persists....
|
|
|
|
|