AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Classen in C++

Ein Thema von EWeiss · begonnen am 4. Mär 2014 · letzter Beitrag vom 4. Mär 2014
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#11

AW: Classen in C++

  Alt 4. Mär 2014, 17:57
Ich denke, ich habe das Problem gefunden:

Deine Klassenvariablen hast du nur deklariert, aber nicht definiert. Siehe z.B. diesen Blog-Eintrag.
Andererseits definierst du dir in jeder Datei, die "Language.h" einbindet, die Variable sTextChannelAssignment neu.

Lösung:

Language.cpp
Code:
#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];
}
Language.h
Code:
#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);

};
Ich konnte es leider nicht ausprobieren, da ich unter Windows keinen C++-Compiler installiert habe
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Classen in C++

  Alt 4. Mär 2014, 18:12
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.

Geändert von Namenloser ( 4. Mär 2014 um 18:20 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#13

AW: Classen in C++

  Alt 4. Mär 2014, 19:29
@BUG @Namenloser

Danke euch
Jo ist einiges anders als in Delphi

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Classen in C++

  Alt 4. Mär 2014, 19:35
Wäre klasse wenn ich das teil noch in eine function bekomme
Hab ich es einmal verstanden sollte das kein Problem mehr sein

Code:
   // 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);
Sollte ein Array der Language Files zurück gegeben werden.
Funktioniert ist aber zur zeit nicht als function ausgelegt.

Sollte Teil der language.h sein

gruss
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#15

AW: Classen in C++

  Alt 4. Mär 2014, 20:16
Sollte ein Array der Language Files zurück gegeben werden.
Funktioniert ist aber zur zeit nicht als function ausgelegt.
Soll das eine Funktion werden oder eine Methode von CLanguage?
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.

Sollte Teil der language.h sein
Warum? Soll das eine inline-Funktion werden? Ansonsten gibt es kaum einen guten Grund, warum du die Funktion im Header definieren solltest.


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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

AW: Classen in C++

  Alt 4. Mär 2014, 20:21
Sollte ein Array der Language Files zurück gegeben werden.
Funktioniert ist aber zur zeit nicht als function ausgelegt.
Soll das eine Funktion werden oder eine Methode von CLanguage?
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.

Sollte Teil der language.h sein
Warum? Soll das eine inline-Funktion werden? Ansonsten gibt es kaum einen guten Grund, warum du die Funktion im Header definieren solltest.


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.
hLanguageSubMenu.. JA hatte ich nicht bedacht.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz