Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Variableninhalt aus mehreren h.Dateien abrufen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.06.2018, 16:15 Uhr
DannyNRW



Hallo zusammen,

ich habe scheinbar ein grundlegendes Problem. Und zwar habe ich das Windows-Verzeichnis ausgelesen und möchte dieses dann in mehreren h-Dateien bzw. Windows Forms auslesen:

String^ WIN;
std::string WIN2;
std::string Datei = ("/xwindata32.dll");
WIN2=getenv("WINDIR");
WIN2 = WIN2 + Datei;
WIN2 = WIN2.erase(2, 1);
WIN2=WIN2.insert(2, "/");

Interessant sind für mich die Variablen WIN (System String) und WIN2(Std::string). Diese muss ich aus mehreren h-Dateien abrufen.

1. Aufruf:
einmal z.B., um die entsprechende Datei zu öffnen:
f.open(WIN2.c_str(), std::ios::in); //Datei öffnen

2. Aufruf:
aus einer anderen h-Datei heraus, um die Datei zu beschreiben:
String^ WIN; //neue lokale Deklaration
WIN = gcnew String(WIN2.c_str());
System::IO::StreamWriter ^textDatei = gcnew System::IO::StreamWriter(WIN);

Nun habe ich es im Moment so, dass der obere große Block in der Start.h (public) liegt und die Variable WIN2 global definiert ist. Die Variable WIN lässt sich ja nicht global definieren.

Es kommt nun bei folgender Zeile zu einem Fehler:
WIN = gcnew String(WIN2.c_str());

Links von c.str() müssen sich in einer Klasse befinden!

Was kann ich nun tun? Eine Funktion erstellen, die beide Variablen als Parameter zurückgibt?
Danke schon mal.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.06.2018, 14:05 Uhr
f.-th.




Zitat von DannyNRW:

...

1. Aufruf:
einmal z.B., um die entsprechende Datei zu öffnen:
f.open(WIN2.c_str(), std::ios::in); //Datei öffnen

...



Musst du diese schreckliche Mischung aus WIN-API, C und C++ so nutzen?

Die C++ Teile sind obendrein noch in einem sehr alten Stil. Man hat etwa vor einem 1/4 Jahrhundert so programmiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.06.2018, 19:11 Uhr
ao

(Operator)


Wenn du kannst, verwende nur eine Sorte string, nicht mehrere durcheinander. Ebenso nur eine Sorte Datei-IO.

Was soll das eigentlich insgesamt werden? Eine Art Dateikopierer?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.06.2018, 10:21 Uhr
DannyNRW



Naja, es bleibt wahrscheinlich nicht aus, dass ich std::strings und sys::strings gleichermaßen nutze, zumindest nach meinem Kenntnisstand nicht. Ich arbeite ja mit Windows forms und dort sind alle strings vom Typ sys::string. Ich hoffe, ich trete jetzt keine Diskussion á la "C++ und Windows Forms macht keinen Sinn".
Das ganze soll ein Passwort-Tresor werden, d.h. es werden mit einem Masterpasswort eine Reihe von Passwörtern geschützt.
Keine leichte Aufgabe für einen Anfänger, das stimmt. Allerdings habe ich schon einige grundlegende Funktionen realisieren können (Login, Dateizugriff, Auslesen von txt-Dateien und übertragen in eine Tabelle -> DataGridView). Würde mich freuen, wenn ich zudem hier auch noch was lernen kann. Man wird ja nur durch viel Übung besser.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.06.2018, 09:38 Uhr
ao

(Operator)



Zitat von DannyNRW:
Naja, es bleibt wahrscheinlich nicht aus, dass ich std::strings und sys::strings gleichermaßen nutze, zumindest nach meinem Kenntnisstand nicht. Ich arbeite ja mit Windows forms und dort sind alle strings vom Typ sys::string.

Naja, .NET mit C++ tut schon ziemlich weh. Das "C++ für .NET" hat auch mit richtigem C++ nicht mehr viel zu tun.

Wenn man Windows Forms machen will, sollte man C# nehmen. Wenn man C++ machen will, sollte man ein anderes GUI-Toolkit nehmen, Qt zum Beispiel.


Zitat:
Ich hoffe, ich trete jetzt keine Diskussion á la "C++ und Windows Forms macht keinen Sinn".

Darüber braucht man keine Diskussion, das steht außer Frage

Das da oben sieht aus, als hättest du in völlig verschiedenen Ecken Codeschnipsel gefunden und würdest jetzt versuchen, die zu einem Programm zusammenzubringen. Findet man häufig bei Anfängern. Das Tückische ist, dass das eine Zeitlang funktioniert. Irgendwann wird aber der Aufwand, die verschiedenen "Paradigmen" (d.h. grundsätzliche Vorstellungen beim Entwerfen und Programmieren) aneinander anzupassen, größer als wenn man sich für *eine* Art und Weise entschieden und die konsequent umgesetzt hätte.

Soll heißen: Wenn du irgendwas mit .NET machen willst (Windows Forms zum Beispiel), dann hol dir auch die Umgebungsvariablen und die Dateien mit .NET-Methoden. Gibts alles. Und nimm die passende Sprache.

Dieser Post wurde am 14.06.2018 um 12:27 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: