Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Das_Kleine_C++;« ist der Autor dieses Themas

Beiträge: 59

Wohnort: 79104 Freiburg

  • Private Nachricht senden

1

21.11.2007, 17:41

problem mit searchpath

hi,

ich wollte ein Programm schreiben, dass am Start schaut in welchem Verzeichnis es liegt. Dann sollte der Pfad mit einem vorgegebenen verglichen werden. Klingt einfach, aber folgender Code sagt mir immer nur, dass die Pfäde nicht gleich sind :(

C-/C++-Quelltext

1
2
3
4
5
6
7
char *pPath1 = searchpath ("Test.exe");
char* pPath2 = "c:\\Test.exe";

if (pPath1 == pPath2)
Label1->Caption = "Sie sind gleich!";
else
Label1->Caption = "Sie sind nicht gleich!";


Kopiere ich nun das Programm in c, so müsste es mir sagen, dass sie gleich sind.->Tut es aber nicht!!!!
Ich glaube, er kann die Pfäde nicht richtig miteinander vergleichen?
(Das Programm heißt natürlich Test.exe und ich arbeite mit c++Builder 6)

Vielen Dank schon mal

Mfg;

2

21.11.2007, 17:51

Ich glaube, du vergleichst da zwei Speicheradressen (char* == char*)...
Sollte mit strcmp funktionieren.

3

21.11.2007, 17:52

wenn ich das richtig sehe vergleichst du nur die Pointer!
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Nico

Frischling

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

4

21.11.2007, 18:57

Warum verwendest du eigentlich immer noch CharArrays, wenn du C++ programmierst?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <string>

std::string pPath1 = searchpath ("Test.exe");
std::string pPath2 = "c:\\Test.exe";

if (pPath1 == pPath2)
Label1->Caption = "Sie sind gleich!";
else
Label1->Caption = "Sie sind nicht gleich!";


dann funktionierts auch. Was du du machst, ist 2 Adressen vergleichen... nicht den Inhalt ;). Den vergleicht man mit der C-Funktion strcmp().
lg[/cpp]

SirForce

Alter Hase

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

5

21.11.2007, 19:07

@Nico:

Was gibt es denn gegen char Arrays auszusetzen in Verbindung mit C++?!
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

Nico

Frischling

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

6

21.11.2007, 19:19

An sich nichts, aber man kann sich damit das Leben unnötig schwer machen. Vor allem als Anfänger, wenn man noch nicht so den Unterschied kennt... sieht man ja hier schön an dem Code :). Und die string-Klasse is doch nun wirklich praktisch für solche Vergleiche und auch nicht langsamer als strcmp().
lg

SirForce

Alter Hase

Beiträge: 802

Wohnort: Süddeutschland

  • Private Nachricht senden

7

21.11.2007, 20:40

Ok, dann ist klar was du meintest!

Ich persönlich bevorzuge sie trotzdem, kann sein, weil ich es mit ihnen gelernt habe!
Nichts behindert so sehr die Entwicklung der Intelligenz wie ihre vollständige Abwesenheit.

Michail Genin

8

21.11.2007, 23:13

Char Array haben eine fixe Größe. Entweder sind zu viel zu groß (für Namen z.B. 20-30 Zeichen) oder es kann sehr leicht zu Überläufen und Zugriffsverletzungen kommen.
Wenn man char-Strings im Programm anpasst, muss man andauernd new und delete benutzen, die Gefahr dabei etwas falsch zu machen ist nicht soo gering.
Wenn es nicht gerade auf übelsten Highspeed ankommt, sollte man versuchen alles so einfach wie möglich zu machen. Man verhindert Fehler und kann schnelleren und kürzeren Code schreiben. Und die paar KB die die std::string Klasse das fertige Programm vergrößert sollte man heutzutage locker übrig haben.
Lieber dumm fragen, als dumm bleiben!

  • »Das_Kleine_C++;« ist der Autor dieses Themas

Beiträge: 59

Wohnort: 79104 Freiburg

  • Private Nachricht senden

9

29.11.2007, 20:51

vielen dank für eure antworten, hat echt geholfen.
Wie bereits gesagt, war es mein Ziel, das Verzeichnis des eigenen
Programms herauszufinden.
Es hat auch funktioniert, nicht aber wenn ich das Programm in den Ordner
Autostart (Alle Programme die am Anfang gestartet werden sollen) kopiere
und den PC neu starte. Dann zeigt das Programm nie ein Verzeichnis an.
Gibt es vielleicht noch einen andren Befehl im C++ Builder 6 für Verzeichnisse?

mfg & danke

Werbeanzeige