Lupuz.de: Artikel-Portal / Magazin

Zurück   Postplanet - die Forum Community > PC, Internet und Technik > Coder's Area

Aktuelles Verzeichniss ermitteln


Thema geschlossen
 
Themen-Optionen
Jeg
Alt 13.08.2006, 20:29   #1
Frage Datei kopieren (alter Titel: Aktuelles Verzeichniss ermitteln)

G'moie

Ich starte eine (selbstgeschriebene .exe) Datei und möchte nun
in diesem Programm ermitteln, in welchem Verzeichniss sich das
Programm befindet.

Damit das Programm weis aus welchem Verzeichnis es gestartet wurde.

Ist so etwas mölich? Wenn ja wie?


MFG Jeg

Geändert von Jeg (13.08.2006 um 21:13 Uhr). Grund: Thema wechsel...
 
 
Nach oben
OrionX
Alt 13.08.2006, 20:34   #2
Standard

Code:
  #include <direct.h> // for getcwd
#include <stdlib.h>// for MAX_PATH
#include <iostream.h> // for cout and cin
// function to return the current working directory
// this is generally the application path
void GetCurrentPath(char* buffer)
{
getcwd(buffer, _MAX_PATH);
}
void main()
{
 
// _MAX_PATH is the maximum length allowed for a path
char CurrentPath[_MAX_PATH];
// use the function to get the path
GetCurrentPath(CurrentPath);

 
// display the path for demo purposes only
char temp[_MAX_PATH];
cout << CurrentPath << endl;
cout << "Press Enter to continue";
cin.getline(temp,_MAX_PATH);
} 


google query: current directory c++
 
 
Nach oben
Jeg
Alt 13.08.2006, 21:09   #3
Standard Kopieren klappt nicht...

Das kopieren funzt net! Aber warum, was ist hier falsch?


Quellcode:
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <direct.h> // for getcwd
#include <stdlib.h>// for MAX_PATH
#include <iostream>
#pragma hdrstop

using namespace std;

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

String create_directory = "";
const char* new_directory = "";
int handle1 = 0;
const char* org_file = "";
const char* new_file = "";
int handle2 = 0;

   // _MAX_PATH is the maximum length allowed for a path
   char CurrentPath[_MAX_PATH];

//---------------------------------------------------------------------------
/* USER FUNCTION *//* USER FUNCTION *//* USER FUNCTION *//* USER FUNCTION */
void GetCurrentPath(char* buffer)
{
getcwd(buffer, _MAX_PATH);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Form1->Left = 0;
   Form1->Top = 0;

   // use the function to get the path
   GetCurrentPath(CurrentPath);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   // Das ausgewählte Verzeichniss wird in die Variable geladen...
   create_directory = DirectoryListBox1->Directory;

   // Dem ausgewählten Verzeichniss wird noch ein Anhang beigefügt...
   Edit1->Text = create_directory + "/Nano";

   // Das neue Verzeichniss wird nun erstellt...
   new_directory = Edit1->Text.c_str();
   handle1 = CreateDirectory(new_directory, SECURITY_ANONYMOUS);
   if(!handle1)
   {
      // Bei nicht gelungener Operation
      Label1->Caption = "Das erstellen des Verzeichnisses ist fehlgeschlagen!";
   }
   else
   {
      // Bei gelungener Operation
      Label1->Caption = "Das erstellen des Verzeichnisses war erfolgreich!";
   }

   // Die Dateien können nun ins neue Verzeichniss installiert werden...
   
   new_file = Edit1->Text.c_str();

   Edit1->Text = CurrentPath;
   
   Label2->Caption = CurrentPath;
   Edit1->Text = Edit1->Text + "/Nano.exe";

   org_file = Edit1->Text.c_str();

   handle2 = CopyFile(org_file, new_file, 1);
   if(!handle2)
   {
      // Bei nicht gelungener Installation
      Edit1->Text = new_file;
      Label1->Caption = "Die Installation ist fehlgeschlagen!";
   }
   else
   {
      // Bei gelungener Installation
      Label1->Caption = "Die Installation war erfolgreich!";
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
   Label1->Caption = "Label1";        
}
//---------------------------------------------------------------------------
 
 
Nach oben
Wodar Hospur
Alt 13.08.2006, 21:45   #4
Standard

bei CopyFile(..) was bedeutet die 1 als letzter parameter? außerdem steht der Pfad so: "C:\blabl\hallo" oder "C:\\blabl\\hallo", nur letzteres ist richtig da der backslash einem steuerzeichen vorgeht.
 
 
Nach oben
Jeg
Alt 14.08.2006, 10:38   #5
Standard

Zitat von Wodar Hospur
bei CopyFile(..) was bedeutet die 1 als letzter parameter? außerdem steht der Pfad so: "C:\blabl\hallo" oder "C:\\blabl\\hallo", nur letzteres ist richtig da der backslash einem steuerzeichen vorgeht.
(Die 1 gibt an ob die Datei überschrieben werden soll falls sie vorhanden ist.)

Ne, das ist nicht richtig, ich benutze einen normalen "/" Slash keinen "\" Backslash.

Geändert von Jeg (14.08.2006 um 11:32 Uhr).
 
 
Nach oben
Jeg
Alt 14.08.2006, 11:31   #6
Standard

Oh man, jetzt hab ich es raus.
Sollte jemand irgendwann auch mal dieses Problem haben und auf diesen Post stoßen, will ich ihm die Lösung nicht vorenthalten.

Also, alle const char* müssen durch string ersetzt werden.
Dabei muss das <iostream> included werden und das "using namespace std" bietet sich hier natürlich an benutzt zu werden.

Beim "CopyFile(vari1, vari2, 1)" muss noch das ".c_str()" an die Variablen angehangen werden und schwubs, läuft die ganze Geschichte...
 
 
Nach oben
Thema geschlossen

Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
WXP: Die Treiber ermitteln?! Muckman Betriebssysteme und Software 2 22.01.2006 09:48
client auflösung ermitteln und tabellengröße anpassen Calli Coder's Area 4 19.10.2005 21:36
Halter über autonummer ermitteln Toxicution Drive In 1 24.04.2005 14:17
aktuelles Notebook wAxman Hardware 10 06.03.2005 16:54
Temp Verzeichniss leeren Bodo Betriebssysteme und Software 7 03.06.2004 18:10


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:21 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2008, Lupuz:Information-Network
Powered by vBulletin Version 3.7.0 (Deutsch), Jelsoft Enterprises Ltd.

SEO by vBSEO 3.1.0 ©2007, Crawlability, Inc.