LPTSTR verknüpfen

Operator_Jon

Erfahrenes Mitglied
Hallo alle zusammen!

Ich mache zurzeit einen kleinen Exkurs zu c++ um eine DLL zu erstellen welche zwangsweise in c++ geschrieben sein muss.
Alles funktioniert soweit, doch scheitere ich an einer scheinbar "einfachen" Sache:
Ich habe 3 LPTSTR strings (einen davon als Argument der Funktion übergeben) und möchte nichts anderes tun, als diese in einen LPTSTR zu vereinen...
Man sollte wirklich denken (PHP,VB6,VB.NET) das das kein Problem wäre, aber nein...

Code:
        LPTSTR txt1 = TEXT("Verbinde mich ");
	LPTSTR txt2 = argument;
	LPTSTR txt3 = TEXT(" doch bitte");
	
	lstrcat(txt1,txt1);
	lstrcat(txt1,txt2);
	lstrcat(txt1,txt3);
	
	return txt1;
So funktioniert es leider nicht, es kommt "" als Ergebnis heraus :(!

Bitte helft mir, vielen Dank im vorraus,

schöne Grüße,
Jonathan
 
Hi.

Du hast die Strings falsch deklariert. Stringliterale sind konstant, also muss es so aussehen:
C:
LPCTSTR txt1 = TEXT("Verbinde mich ");
LPCTSTR txt2 = argument; // wie ist argument definiert?
LPCTSTR txt3 = TEXT(" doch bitte");
Konstante Strings kann man allerdings nicht ändern. (versucht man es dennoch - z.B. über einen Umweg wie du - resultiert daraus undefiniertes Verhalten)

Der Zielstring muß also ein änderbarer Strings sein und vor allem muß auch genug Platz reserviert sein damit alle konkatenierten Strings reinpassen (wenn du nicht weißt wie groß das argument max. werden kann, dann mußt du Speicher dynamisch allozieren):
C:
TCHAR txt1[100] = TEXT("Verbinde mich ");
Übrigens konkatenierst du den txt1 mit sich selbst, d.h. das Ergebnis des ersten lstrcat wäre dann String "Verbinde mich Verbinde mich ".

Gruß

PS: Wenn du schon C++ hast, warum verwendest du nicht die string Klasse aus der Standardbibliothek?
 
Zuletzt bearbeitet:
Moin,

genau - nimm entweder 'char*' oder eben gleich 'string' :p

Dies hier funktioniert beides:
Code:
    // char* füllen
    char strData[256];
    strcpy( strData, "Verbinde mich" );
    strcat( strData, " " );
    strcat( strData, "doch bitte !!" );

    // 'string' benutzen
    string strResult = "";
    string strTxt1 = "Verbinde mich";
    string strTxt2 = "doch bitte !!";
    strResult = strTxt1 + " " + strTxt2;

Gruß
Klaus
 
Zuletzt bearbeitet:
Hallo,

vielen Dank euch beiden für die schnellen Antworten!
Die char* variante eignet für mein Vorhaben hervorragend und der Hinweis zu der Stringklasse hilft mir bei anderen Funktionen gut weiter :)!

(Entschuldigt nochmal die etwas dumme Frage, aber c++ ist einfach so viel anders als die Sprachen die ich bislang gelernt habe :( !)

Vielen Dank für eure schnelle und präzise Hilfe!

Schönen Gruß,
Jonathan
 
Zurück