Falscher Inhalt einer Variablen
-
Hallo Leute,
kann mir jemand Helfen ??
Ich mache eine Datenbankanbindung mit ADO und möchte den Pfad zu meiner exe auslesen, damit ich weis wo meine Datenbank steht. Das selbe mache ich mit meiner ini Datei.
Bei der ini Datei Funktioniert das auch, nur nicht mit meiner mdb datei.
Hier der Source:
In der CTestApp unter public (.h)
public:
CTestApp();
CString m_strIniFile;
CString m_strDatenbankFile;
..
..(.cpp)
BOOL CTestApp::InitInstance()
{
AfxEnableControlContainer();
m_strIniFile = "test.ini";
m_strDatenbankFile = "test.mdb";
..
..hier möchte ich meinen Pfad mit Datei haben. ("fPfadZurExe(Dateiname)" ist eine Funktion die mir den Pfad und den dateinamen zusammenstellt)
CTestApp* pApp = (CTestApp*) AfxGetApp();
connection->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CUtil::fPfadZurExe(pApp->m_strDatenbankFile);" L"", L"", L"", ADODB::adConnectUnspecified);Wenn ich jetzt mein toll ausführe, bringt er mir immer den Pfad zu meiner test.ini datei, aber nicht zu meiner test.mdb....
Was mache ich falsch ??
Gruß und Danke
andy_mann
-
Hi
bringt er mir immer den Pfad zu meiner test.ini datei, aber nicht zu meiner test.mdb
wie meinst du das?
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CUtil::fPfadZurExe(pApp->m_strDatenbankFile);"Das verstehe ich nicht. Wie soll denn eine Funktion aus einem Array von Zeichen heraus aufgerufen werden
?Zeig mal den Code der CUtil::fPfadZurExe Methode.
Grüße Rapha
-
Hallo Rapha,
ups, ich glaube ich habe den einen Fehler gefunden...
Beim Kopieren ist mir in der Funktion ein wert aufgefallen...
hier der Source:(.h)
public:
// Suchen des Pfades der exe und verbinde mit dateinamen
static CString fPfadZurExe(CString u_strDateiName);(.cpp)
CString CUtil::fPfadZurExe(CString u_strDateiName)
{
////////// Pfad erfassen /////////
CString strPath = GetCommandLine();// Pfad + Name der Exe holen
int pos = strPath.ReverseFind( '\'); // letztes '\' finden
strPath = strPath.Mid(1, pos-1); // Name der Exe abtrennen, so dass nur noch der Pfad übrig bleibt
//////////////////////////////////
CString strIni = strPath + "\" + "test.ini"; // kann ja nicht gehen..
return strIni;
}Jetzt bekomme ich allerdings einene runtime error
Gruß
andy_mann
-
Hi,
dein Code geht doch

CString strIni = strPath + "\" + "test.ini";
Warum sollte das nicht funktionieren?
Die Funktion macht aber wenig Sinn, da sie ja immer das gleiche zurück gibt

Sowas meinst du doch, oder?CString strGetFilePath(CString strDateiName) { CString strPath = GetCommandLine(); int nPos = strPath.ReverseFind('\\'); strPath = strPath.Mid(1, nPos-1); return strPath + "\\" + strDateiName; }Grüße Rapha