|
Your question is not clear, you cannot import a database into C++. You can, however, access a database using a program written in C++.
The best things in life are not things.
|
|
|
|
|
You don't typically "import" a database into an application. You simply access it using some sort of common interface, usually over a network or internally (using sockets is the most common way), using a common language. A common interface language for databases is SQL, a query based language that defines the type of query/response system and language.
There's several libraries that are available from different parties that make this task a lot easier. Here's a couple (for SQL, its up to the database maker what languages they support):
http://www.sqlapi.com/[^]
http://soci.sourceforge.net/[^]
|
|
|
|
|
Hi ppl.
I have this code:
void descargar(string path1, SOCKET sock)<br />
{<br />
string variable = getenv("windir");<br />
char* variablee = getenv("windir");<br />
string variable1 = getenv("userprofile");
char* variable11 = getenv("userprofile");
<br />
strcat(variablee,"\\System32\\ftp.exe -s:");<br />
strcat(variablee,variable11);<br />
strcat(variablee,"\\command1.txt host.com");<br />
FILE * file;<br />
file= fopen((variable1+"\\command1.txt").c_str(),"w");
if(file != NULL)<br />
{<br />
fputs("name\n",file);
fputs("pass\n",file);
fputs("cd /public_html\n",file);
fputs(("put \"" + path1+"\"").c_str(),file);
fputs("\nquit",file);<br />
fclose(file);<br />
}<br />
<br />
STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo));
StartInfo.cb = sizeof(StartInfo);
int res = CreateProcess(NULL,variablee, NULL, NULL, NULL, NULL, NULL, NULL, &StartInfo, &ProcInfo);
{<br />
::WaitForSingleObject(ProcInfo.hProcess, INFINITE);<br />
CloseHandle(ProcInfo.hProcess);<br />
CloseHandle(ProcInfo.hThread);<br />
}<br />
}
The problem, is that, the first time i call this function works fine, but the second time it is called, it gives segmentation fault error in line:
file= fopen((variable1+"\\command1.txt").c_str(),"w");
Any idea?
Thanks
|
|
|
|
|
Hope so, but likely not -
I'd try something along these lines:
char filenameToOpen[MAX_CHAR];
sprintf(filenameToOpen, "%s\\command.txt",variable1.c_str());
file = fopen(filenameToOpen, "w");
If that failed, I'd ask myself if I'd closed the file between each time it was opened as I can't remember how whether or not fopen opens the file for exclusive access or not.
|
|
|
|
|
According to the C++ documentation, you are not allowed to change the value returned by getenv().
http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/[^]
Get environment string
Retrieves a C string containing the value of the environment variable whose name is specified as argument. If the requested variable is not part of the environment list, the function returns a NULL pointer.
The string pointed by the pointer returned by this function shall not be modified by the program.
In these statements,
strcat(variablee,"\\System32\\ftp.exe -s:");
strcat(variablee,variable11);
strcat(variablee,"\\command1.txt host.com");
you are appending to (altering) the contents of the memory pointed to by the return from getenv(). You need to use a temporary location to copy the data and only then start appending. Remember that strcat does not do additional allocation, it just blindly appends to memory.
Lastly, you have both char * and string copies of these environment variable contents. You should use the string versions which will do the copying for you and remove the use of the char * versions.
|
|
|
|
|
Hi. So, i got my custom static control (class which inherits from CStatic), which displays a text on a dialog window and thats it. Now i am trying to determine its style, which was sat in resource editor. For example, center image was sat, SS_CENTERIMAGE, so i am doing this:
DWORD dwStyle = this->GetStyle();
if((dwStyle & SS_CENTERIMAGE) == TRUE)
{
::AfxMessageBox(L"center image");
}
It is not working. Nothing is working actually. I am trying to check text alignment - not working, what am i doing wrong? Thanks.
011011010110000101100011011010000110100101101110
0110010101110011
|
|
|
|
|
csrss wrote: if((dwStyle & SS_CENTERIMAGE) == TRUE)
& is not a boolean operation, nor is SS_CENTERIMAGE equal to 1 . Try:
if ((dwStyle & SS_CENTERIMAGE) == SS_CENTERIMAGE)
"One man's wage rise is another man's price increase." - Harold Wilson
"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
"Some people are making such thorough preparation for rainy days that they aren't enjoying today's sunshine." - William Feather
|
|
|
|
|
Thanks!
011011010110000101100011011010000110100101101110
0110010101110011
|
|
|
|
|
I build an app w/VC++6 . I design a window with an EDIT CONTROL (IDD_MYEDIT) , associate a CEdit control (m_myedit ). I switched on the PASSWORD style of the control.
Can be triggered this style on or off during the program running?
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
This should do it:
void ToggleStyle(HWND hEdit)
{
if(SendMessage(hEdit,EM_GETPASSWORDCHAR,0,0) == '*')
SendMessage(hEdit,EM_SETPASSWORDCHAR,0,0);
else
SendMessage(hEdit,EM_SETPASSWORDCHAR,(WPARAM)'*',0);
SetFocus(hEdit);
}
You can have a look here[^] for an explanation, if you're interested
modified 13-Sep-18 21:01pm.
|
|
|
|
|
Thx I will try it tomorrow. It is 2105.
36. When you surround an army, leave an outlet free.
...
Do not press a desperate foe too hard.
SUN-TZU - Art of War
|
|
|
|
|
As far as I know, and according to the docs[^], after the edit control has been created, the ES_PASSWORD style can't be changed.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
That's true, you can't add or remove ES_PASSWORD directly with SetWindowLong, but with EM_SETPASSWORDCHAR[^] you can still have the desired effect.
modified 13-Sep-18 21:01pm.
|
|
|
|
|
Cool thanks!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
How to create a modeless or embedded CFileDialog, GetOpenFileName() or GetSaveFileName() into user Dialog?
Thanks
|
|
|
|
|
I'm not 100% sure what you are trying to do but you can look here[^] for help on CFileDialog . Alternatively if you are looking to customise these dialogs to your own specifications then try here[^].
The best things in life are not things.
|
|
|
|
|
|
Why would you want a modeless CFileDialog? I can't think of any case where a user would select some sort of open/save button and have the software not wait for an input or a cancel.
Regardless of that though, if you really want it, just make your own class derived from CFileDialog (you'll have to replace DoModal() with a call to Create() ). Override the virtual methods OnOK() and OnCancel() and you have your own modeless CFileDialog.
|
|
|
|
|
|
Dear All,
I've a String. Now i've converted to MD5 hash checksum value.
Now i want to decode the same string from the hash value.
Please tell me how to do thi.
Note : I'm using Crypto++ library.
Thank you all.
|
|
|
|
|
Sk_cpp wrote: Now i want to decode the same string from the hash value.
you cannot "decode" a hash value back into the original data.
|
|
|
|
|
Hi All,
Sorry for the lengthy description, I don't know how else to explain it...
I have a program which has a sqlite database backup function.
It opens the source.db file, writes backup version info and date into a backup.db file, appends those info with binary stream of source.db, and then closes both files.
However, my program fails with a sharing violation when it tries to open the source.db
CFile csf;
CFileException e;
if (!csf.Open(_T("source.db", CFile::modeNoTruncate | CFile::typeBinary | CFile::modeRead, &e ))
{
if (e.m_cause == CFileException::sharingViolation )
AfxMessageBox(_T("Sharing Violation!!"));
}
I traced the program to filecore.cpp, looked like my program cannot obtain a file handle at this line:
HANDLE hFile = m_pTM != NULL ?
m_pTM->CreateFile(lpszFileName, dwAccess, dwShareMode, &sa, dwCreateFlag, dwFlags, NULL) :
::CreateFile(lpszFileName, dwAccess, dwShareMode, &sa, dwCreateFlag, dwFlags, NULL);
Even though the source.db is in use, I should still be able to have read access to it, right?
Another observation that puzzles me is that the backup function works on another .db file created by the same program.
I've been searching on the web and tried everything I can. Would someone please give me some suggestion?
Thanks,
Helen
|
|
|
|
|
TheHelenLee wrote: Even though the source.db is in use, I should still be able to have read access to it, right?
Not necessarily. If some other process has opened the file exclusively, using the flags CFile::shareExclusive, that would prohibit all other access.
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
Chris,
My light bulb turned on when you mentioned about the CFile::shareExclusive flag. In my code to open file for reading, I didn't have CFile::shareDenyNone, I guess it defaults to shareExclusive when I don't specify it? After I set the flag, the program works. It looks like my program was stepping on its own foot.
I'm just still puzzled as to why it works for one file, but not the other when I don't use the shareDenyNone flag. Any ideas?
Thank you for helping me out, I feel so relief now that the problem is solved!!
|
|
|
|
|
Hi all,
i m start working on access database,i have no idea about this please help me for this.
and provide me info and guidance to establich database connection and execution of Query for insertion or retrivel of values in database.
thanks in advance
|
|
|
|
|