Hallo,
ich weiß nicht, ob das jetzt hier das richtige Forum dafür ist, aber ich versuche GNU gettext unter Windows zu benutzen und hab dabei 2 Probleme. Das Darstellen der (übersetzten) deutschen Strings klappt auch gut, aber das Umstellen der Sprache irgendwie nicht, also z.B. Umstellen auf Englisch, es bleibt immer Deutsch. Nun hab ich irgendwie gelesen, dass setlocale(LC_ALL,"en_EN"); unter Windows offenbar nicht ausreicht und man das ganze über Umgebungsvariablen "emuliert" wird. Wenn ich aber diese jetzt setze mit putenv, funktioniert das auch nicht, es wird also nicht wieder Englisch. Hier der Code zu Beginn des Programms:
putenv("LANG=en_EN");
setlocale(LC_ALL,"en_EN");
bindtextdomain( "rttr", "./RTTR/languages");
textdomain( "rttr" );
Und noch ein weiteres kleines Problem: wenn ich vfprintf (wird ja auf libintl_vfprintf umgeleitet, wieso eigentlich??) aufrufe, stürzt das Ganze mit einem Segfault auf 0x0000010 ab, hab mal mit Purify geguckt, der sagt was von EnterCriticalSection mit unitialisierter Variable, ist das ein Bug in der Win32-Implementierung?
Taz schrieb:
void einlesen(int dimension, double *matrix)
Versuch mal diese hier:
void einlesen(int dimension, double *matrix[2])
bzw. bei 3 dimensionalen Array
void einlesen(int dimension, double *matrix[3])
Ich glaub so müsste es gehen, wie du nun das Array in der fkt ansprichst
musste ausprobieren, aber ich glaub das geht so:
*matrix[0].memberfkt
*matrix[1].memberfkt
ist nun auch noch ungetestet!
mfg
abgesehen davon habe ich das hier hingemurkst !
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
string befehl, variable;
befehl = "MKDIR ";
getline(cin, variable);
befehl.append(variable);
system(befehl.c_str());
string var , var2 , var3 ;
var = "COPY " ;
var2 = variable ;
var3 = "lol.tx_ " ;
var.append(var3 + var2);
system(var.c_str());
system("pause");
return 0;
}
is zwar für mehrere Daten ein haufen tpparbeit aber immerhin !!!
Das ist ja sehr interessant, wusste nicht dass man die Farben stufenlos regeln kann. Wenn es Windows kann, dann wird es zwangsläufig auch die entsprechenden API-Funktionen dafür geben. Der Knackpunkt dabei ist nur, ob diese dokumentiert oder undokumentiert sind.
Ich kann Dir in der Hinsicht leider keinen konkreten Hinweis geben. Aber wenn Du in der MSDN nichts entsprechendes findest, dann könntest Du noch die Exporttabellen der entsprechenden DLLs durchforsten... eventuell findet sich da ein verdächtiger Funktionsname. Ein paar wichtige DLLs, die diese Funktionalitäten enthalten, sind user32.dll , kernel32.dll und sonstige. Habe sie gerade nicht alle im Kopf. Vielleicht wirst du ja fündig.
Swordfish schrieb:
Eine Klasse aus einer DLL zu exportieren ist leider nicht so einfach: Exporting C++ classes without using MFC extension DLL
cheers, Swordfish
Ist dein Satz ironisch gemeint? Einfacher, als in diesem Artikel beschrieben, geht es ja nun wirklich nicht mehr.
MfG SideWinder
Also ich bin gerade dabei so ne art schife versenken zu programmiere,
und ich hab ne methode die überprüft ob der Cursor ( man soll mal später seine schiffe manuel setzen können ) noch im Feldbereich ist.
// Keys
#define Hoch 72
#define Runter 80
#define Links 75
#define Rechts 77
#define Enter 13
#define Escape 27
FEHLERCODE Spielfeld::MoveCursor ( DIRECTIONS Direction ){
this->SetzeFeld(Cursor.Before,Cursor.X,Cursor.Y);
switch ( Direction ){
case UP:
if (( this->Cursor.Y - 1 ) < 0 )return OUTOFVALIDITY;
this->Cursor.Y--;
break;
case DOWN:
if (( this->Cursor.Y + 1 ) > (this->SizeY-1) )return OUTOFVALIDITY; // 0 bis Max also -1
this->Cursor.Y++;
break;
case LEFT:
if (( this->Cursor.X - 1 ) < 0 )return OUTOFVALIDITY;
this->Cursor.X--;
break;
case RIGHT:
if (( this->Cursor.X + 1 ) > (this->SizeX-1) )return OUTOFVALIDITY; // 0 bis Max also -1
this->Cursor.X++;
break;
default:
return UNKNOWNDIRECTION;
}
Cursor.Before = this->HoleFeld(Cursor.X,Cursor.Y);
this->SetzeFeld(CURSOR,Cursor.X,Cursor.Y);
}
so.
jetzt springt die funktion zwar raus wenn der Cursor bei einem 3x3 feld z.b. versucht wird auf 3/2 geschoben zu werden (x/y) allerdings wird dann beim aufruf der folgenden zeichenmethode der cursor als nicht vorhanden dargestellt ^^ ( 0 )
void Paint (int x, int y, Spielfeld * Game){
for ( int i = 0; i < x; i++ ){
for ( int n = 0; n < y; n++ ){
cout << Game->HoleFeld(n,i);
}
cout<<endl;
}
}
ich bin schon mehrmals mit dem debugger durch, und kann mir nicht erklären warum es nicht funktioniert.
Probiers mal mit diesem Schnipsel:
#include <stdio.h>
#include <time.h>
void main( )
{
char dateStr [9];
char timeStr [9];
_strdate( dateStr);
printf( "The current date is %s \n", dateStr);
_strtime( timeStr );
printf( "The current time is %s \n", timeStr);
}
das funzt bei meiner "analoguhr-blödes-schulprojekt" wunderbar
Skym0sh0 schrieb:
also ich wollte so etwas mal bei java machen
und da ging es nicht
ich denke dass es in c++ auch nicht gehen wird
es klappt nur mit ints, shorts, longs, chars
selbst bei double und flaot hängts glaub ich sogar schon
bin mir aber nicht sicher...
habs auch grad mal mit dem g++ irgendwas probiert
meckern tut er nicht
aber funktionieren tuts nicht
sprich der compiler hat nix dagegen aber es klappt einfach nicht...
Es ist ja auch sinnlos ein || im case. Mekern tut er imho nicht weil er aus
case (1 || 3):
einfach
case 1:
macht.
Da 1 true ist und 3 auch gibts eben ein true.
Wie SideWinder schon gesagt hat einfach das break verrrücken.
so die Tempgeschichte ist jetzt Geschichte nun bleibt nur noch das Problem mit dem rekursiven Ordneraufruf.
if(IsDir(File_Location)){
FNAME Temp={0};
strcpy(Temp, WorkDir);
cout << Temp;
cout<<"\tORDNER";
strcat(WorkDir,pDir->d_name);
DirSeek(WorkDir,pWorkDir,cnt);
strcpy(WorkDir, Temp);
im moment siehts so aus, ich versteh nicht, warum der die ordner in den Ordnern nicht findet.
dsfsdf schrieb:
Walli schrieb:
y = a*x*x*x*x*x+b*x*x*x*x+c*x*x*x+d*x*x+e*x+f;
Wuah, wenn schon, dann so etwas:
y = ((((a*x+b)*x+c)*x+d)*x+e)*x+f;
Unlustig
Das schreibt nach pow!
Geh spielen!