![]() |
AW: Classen in C++
Ich denke, ich habe das Problem gefunden:
Deine Klassenvariablen hast du nur deklariert, aber nicht definiert. Siehe z.B. diesen ![]() Andererseits definierst du dir in jeder Datei, die "Language.h" einbindet, die Variable sTextChannelAssignment neu. Lösung: Language.cpp
Code:
Language.h
#include "stdafx.h"
#include "Language.h" char *sTextChannelAssignment[MAX_CHANNELASSIGNMENT_STRINGS] = {"Off", //0 "Top", //1 "Right", //2 "Bottom", //3 "Left", //4 "Combined", //5 }; CString CLanguage::sText[MAX_CHANNELASSIGNMENT_STRINGS]; char CLanguage::szCurrentDir[MAX_PATH]; char CLanguage::szFileINI[MAX_PATH]; char CLanguage::szLang[MAX_PATH]; char CLanguage::szTemp[512]; char CLanguage::Buffer[1024]; char CLanguage::szParam[32]; CLanguage::CLanguage(void) { } CLanguage::~CLanguage(void) { } char CLanguage::GetCurrentDir() { int i = GetCurrentDirectory(255, (char*)szCurrentDir); if (szCurrentDir[i - 1] == '\\') szCurrentDir[i - 1] = 0; return szCurrentDir[i]; }
Code:
Ich konnte es leider nicht ausprobieren, da ich unter Windows keinen C++-Compiler installiert habe :mrgreen:
#pragma once
#include "atlstr.h" #define MAX_CHANNELASSIGNMENT_STRINGS 6 extern char *sTextChannelAssignment[MAX_CHANNELASSIGNMENT_STRINGS]; class CLanguage { private: public: static CString sText[MAX_CHANNELASSIGNMENT_STRINGS]; static char szCurrentDir[MAX_PATH]; static char szFileINI[MAX_PATH]; static char szLang[MAX_PATH], szTemp[512], Buffer[1024], szParam[32]; static char GetCurrentDir(); CLanguage(void); virtual ~CLanguage(void); }; |
AW: Classen in C++
Interessant. Ich hatte unter C++ selber bisher nur mit statischen Methoden zu tun, aber nicht mit statischen Variablen. Wieder was gelernt...
Es sind immer solche Momente – wenn es plötzlich ungewohnt Low-Level wird – in denen man C++ anmerkt, dass es eigentlich doch nur ein Aufsatz für C ist. |
AW: Classen in C++
@BUG @Namenloser
Danke euch;) Jo ist einiges anders als in Delphi :) gruss |
AW: Classen in C++
Wäre klasse wenn ich das teil noch in eine function bekomme
Hab ich es einmal verstanden sollte das kein Problem mehr sein ;)
Code:
Sollte ein Array der Language Files zurück gegeben werden.
// Find available Language Files
void *hSearch; WIN32_FIND_DATA wfd; char szFile[MAX_PATH]; hSearch = FindFirstFile("*.lng", &wfd); GetPrivateProfileString("Common", "Language", "English", szLang, 256, szFileINI); nCurrentLanguage = MENUID_FIRST_LANGUAGE; AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE, "&English"); nLanguages = 1; if (hSearch != INVALID_HANDLE_VALUE) { do { strcpy(szFile, wfd.cFileName); szFile[strlen(szFile) - 4] = 0; if (!strcmp(szFile, "English")) continue; if (!strcmp(szFile, szLang)) nCurrentLanguage = MENUID_FIRST_LANGUAGE + nLanguages; AppendMenu(m_hLanguageSubMenu, MF_STRING, MENUID_FIRST_LANGUAGE + nLanguages, szFile); nLanguages++; } while (FindNextFile(hSearch, &wfd)); } FindClose(hSearch); Funktioniert ist aber zur zeit nicht als function ausgelegt. Sollte Teil der language.h sein gruss |
AW: Classen in C++
Zitat:
Ich könnte mir vorstellen, das szLang die Klassenvariable von CLanguage ist. Aber wo kommt m_hLanguageSubMenu her? Das gleiche gilt für nLanguages und nCurrentLanguage. Zitat:
BTW: Wenn du weiter mit C++ arbeiten willst, solltest du dir die Standard-Library angucken. Nahe an den Betriebssystemfunktionen mögen Character-Buffer noch sinnvoll sein, ansonsten ist die Klasse std::string um Welten angenehmer. Auch die Container-Klassen sind ziemlich nützlich. |
AW: Classen in C++
Zitat:
Denke muss die abfrage dann wohl in der aktuellen Funktion belassen. Ist aber nicht weiter tragisch da ich diese nur einmal aufrufe um im Ordner die Sprachdateien zu finden. Man will es immer besonders gut machen und schlechten code will ich nicht gerade abliefern ;) Danke für die zusätzlichen Infos werden bestimmt mal nützlich sein. Ach so.. Danke nochmal im nachhinein für mein Geburtstags Geschenk! :) Die Classe läuft jetzt so wie sie soll. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz