![]() |
Also "%d" funktioniert nur bei Integer Zahlen, nicht bei floats, die als integer dargestellt werden sollen.
Eine Möglichkeit ist, vorher auf einen anderen Variablentyp umwandeln ("casten") wie Du auch schon gmacht hast, (FLOAT64)val wandelt val (vom Typ FLOAT64) in einen FLOAT64-Wert um, also überflüssig hier. Im Gegensatz dazu wandelt (SINT32) oder (int) eine Zahl in eine Integerzahl um und rundet ab, z.B.: sprintf(pelement->string, "%d", (SINT32)val); Alternativ kannst Du auch ein anderes Format verwenden, z.B.: sprintf(pelement->string, "%.0f", val); Hier wird eine Floatzahl ("%f") ohne Nachkommastelle (".0") in pelement->string geprinted, dabei wird gerundet. Die Formatstrings sind übrigens in C und XML sehr ähnlich !d! (XML) entspricht "%d" (C). Die val!=val bringt wie Du schon bemerkt hast, gar nichts. Ich weiß auch nicht wie das sich mal in die "üblichen" String-Callbacks geschlichen hat. Wie geasgt ist value/=bla eine Abkürzung für val=val/bla. Wie suich das mit einer doppelten Zuweisung in einer Zeile verhält habe ich nicht so im Kopf. So etwas vermeide ich immer, es geht ja auch in zwei Schritten. Ich gehe ziemlich stark davon aus, dass von rechts nach links abgearbeitet wird, aber sicher bin ich mir da nicht. Arne Bartels |
Hallo!
Mensch, bin ich blöd...:mad:
Ich hatte ja sicher ein paar Stunden herumgetan, bevor ich ins FXP gepostet habe. Dabei hatte ich auch schon eine deiner Rechnungen in der .c stehen gehabt. Und trotzdem hatts nicht funktioniert! Und weißt warum? Weil die Batch Datei das Gauge nicht ins Gauge Verzeichnis kopiert hat!!! Aber wie so oft hat da nicht das Programm, sondern der Benutzer schuld:D Trotzdem Danke für die Antworten, waren ja immerhin doch wieder mal ein paar Neuigkeiten für mich dabei! Achja, was könnte der Grund dafür sein, dass meine Batch Datei nicht funktioniert hat? del *.obj del *.lib del *.exp del *.res move *.gau C:\Programme\Microsoft Games\Fs2002\GAUGES Viele Grüße, Harri:cool: |
Vielleicht
move *.gau "C:\Programme\Microsoft Games\Fs2002\GAUGES" ? Wenn Du MS VC++ besitzt kann man auch direkt mit der IDE kompilieren, und nicht per makefile und Kommandozeile. Das Thema ist hier im Forum schon mal (oder öfter) durchgekaut worden. Arne Bartels |
Doch, doch, ich mache meine Gauges schon mit MS VS C++, ist ja immerhin sehr übersichtlich!
Aber im Release Ordner habe ich mir eine .bat erstellt, um nicht jedesmal die .gau ins Gauges Verzeichnis kopieren zu müssen. Viele Grüße, Harri:cool: |
Man kann nämlich gleich in das entsprechende Verzeichnis kompilieren, antstatt "Release\gaugename.gau" den vollständigen Pfad angeben.
Arne Bartels |
Hallo!
Der String, der die VS darstellt, ändert mit Überschreiten eines bestimmten VS-wertes die Farbe.(oder bessergesagt: Es wird ein anderer String verwendet, der eine andere Farbe besitzt!).
Dieser Grenzwert soll von außen her eingestellt werden können. Ich hab die beiden Werte farbe_max und farbe_min genannt. Wenn ich sie oben mit #define eingefügt habe, hat alles funktioniert. Das funktioniert alles perfekt. Aber der I/O funktioniert nicht:heul: Dabei hatte er in Turbo C++ immer so gut funktioniert. Später soll es dann so laufen, dass gecheckt wird, ob die Datei vorhanden ist und ob sie mit Inhalt gefüllt ist.(mit if(!file), wenns denn funktioniert. gibts dann außerdem noch eine Möglichkeit herauszufinden, ob die Datei leer ist? Vielleicht mit if(wert="")). Wenn die Datei leer ist, dann sollte sie mit dem Standardwert 3000 gefüllt werden. Wenn sie bereits gefüllt ist, dann wird der Wert herausgelesen und für die beiden Werte verwendet: Einmal positiv, das andere Mal negativ. mfg harri:cool: #include <stdio.h> #define datei "gauge.txt" FILE *pfile; char wert[4]; pfile=fopen("datei", "r"); fscanf("pfile","%s",wert); farbe_max=wert; farbe_min= - wert; fclose(pfile); //------------------------------------------------------ C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(36) : error C2040: 'pfile' : 'int ' differs in levels of indirection from 'struct _iobuf *' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(36) : error C2099: initializer is not a constant C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(38) : error C2143: syntax error : missing ')' before 'string' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(38) : error C2143: syntax error : missing '{' before 'string' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(38) : error C2059: syntax error : '<Unknown>' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(38) : error C2059: syntax error : ')' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(39) : warning C4047: 'initializing' : 'int ' differs in levels of indirection from 'char *' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(40) : error C2171: '-' : illegal on operands of type 'char [4]' C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(40) : error C2099: initializer is not a constant C:\Programme\Microsoft Visual Studio\MyProjects\vs3\subgauges\vsi_gauge.c(43) : warning C4273: 'fclose' : inconsistent dll linkage. dllexport assumed. |
Du kriegst den Hals wohl auch nicht voll<g>.
Das soll in Turbo C++ funktioniert haben? Da glaube ich nicht ganz dran, mit char[] und dann == geht nicht viel, besser die strcmp(),strlen() Funktionen verwenden. Das heißt in C++ können natürlich die (hinterhältigen) automatischen Konversionen auftauchen mit den versteckten Operatorübelagerungen die == und dergleichen auf char erlauben, aber da muss man dann CString nehmen, oder so. Zum Thema Farbe des Strings: Mit Code:
... Code:
return ... + pelement->fg_color Code:
... Code:
//lokal deklarieren und schon mal vorbesetzen Als letztes kann man natürlich nochmal auf deinen Code eingehen: Probier mal: Code:
#include <stdio.h> Arne Bartels |
Wieso ist eignetlich schon wieder das #include <stdio.h> verdunstet? Grr.
Arne Bartels |
Hallo!
Erst mal Danke für deine Antwort!
Zitat:
Der letzten Code, denn du gepostet hattest, funktioniert leider genauso wenig wie mein Code :( error C2040: 'pfile' : 'int ' differs in levels of indirection from 'struct _iobuf *' Ich habe echt eine Ahnung wie das zu bewerkstelligen ist. Denn das bisschen C, was wir bis jetzt gelernt haben, haben wir in Turbo C++ geschrieben, und da hats auch immer geklappt. Zitat:
Viele Grüße, Harri:cool: P.S.: Nach dem ich den File I/O geschafft habe, ist endgültig Schluß mit dem Gauge. Dann hab ich meinen Hals (vorerst) voll;) |
Hallo!
Ich habe mir zum Abschluss noch eine .exe im Turbo C++ gemacht, die die .txt Datei im Gauges Verzeichnis bearbeiten soll. Das Programm funktioniert sehr gut, wenn man die .txt Datei in C:\ erstellt. Wenn man allerdings einen darunterliegenden Ordner, wie z.B. "C:\\Programme\\Microsoft Games\\FS2002\\Gauges\vsi.txt" angibt, so funktioniert es leider nicht. Es wird weder eine .txt erstellt noch verändert!
Vielleicht fällt dir ja noch was ein zum File IO, vielleicht bekomm ich das Gauge ja dann heute noch fertig. Viele Grüße, Harri:cool: |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag