![]() |
![]() |
|
![]() |
![]() |
|
Designer Forum Treffpunkt für Gedankenaustausch von Simmern, die selbst |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#11 |
Jr. Member
![]() Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
![]() 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 |
![]() |
![]() |
![]() |
#12 |
Inventar
![]() |
![]() Mensch, bin ich blöd...
![]() 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 ![]() 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 ![]()
____________________________________
MEINE FLIEGERSEITE XML Gauges Programmierung für Anfänger Panel Design für Anfänger |
![]() |
![]() |
![]() |
#13 |
Jr. Member
![]() Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
![]() 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 |
![]() |
![]() |
![]() |
#14 |
Inventar
![]() |
![]() 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 ![]()
____________________________________
MEINE FLIEGERSEITE XML Gauges Programmierung für Anfänger Panel Design für Anfänger |
![]() |
![]() |
![]() |
#15 |
Jr. Member
![]() Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
![]() Man kann nämlich gleich in das entsprechende Verzeichnis kompilieren, antstatt "Release\gaugename.gau" den vollständigen Pfad angeben.
Arne Bartels |
![]() |
![]() |
![]() |
#16 |
Inventar
![]() |
![]() 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 ![]() 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 ![]() #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 : ' 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.
____________________________________
MEINE FLIEGERSEITE XML Gauges Programmierung für Anfänger Panel Design für Anfänger |
![]() |
![]() |
![]() |
#17 |
Jr. Member
![]() Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
![]() Du kriegst den Hals wohl auch nicht voll
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:
... if(...<...) pelement->fg_color=RGB(x,x,x); else pelement->fg_color=RGB(y,y,y); ... Code:
return ... + pelement->fg_color Code:
... //global deklarieren und schon mal vorbesetzen SINT32 maxvspd=3000; .... //das hier im gauge callback case PANEL_SERVICE_POST_INSTALL: if(pgauge==NULL) break; if(pgauge->parameters==NULL) break; if(strlen(pgauge->parameters)==0) break; maxvspd=atoi(pgauge->parameters); break; .... Code:
//lokal deklarieren und schon mal vorbesetzen SINT32 maxvspd=3000; ... if(pelement) if(pelement->gauge_header) if(pelement->gauge_header->parameters) if(strlen(pelement->gauge_header->parameters)>0) maxvspd=atoi(pelement->gauge_header->parameters); Als letztes kann man natürlich nochmal auf deinen Code eingehen: Probier mal: Code:
#include Arne Bartels |
![]() |
![]() |
![]() |
#18 |
Jr. Member
![]() Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90
|
![]() Wieso ist eignetlich schon wieder das #include <stdio.h> verdunstet? Grr.
Arne Bartels |
![]() |
![]() |
![]() |
#19 | ||
Inventar
![]() |
![]() 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 ![]() 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 ![]()
____________________________________
MEINE FLIEGERSEITE XML Gauges Programmierung für Anfänger Panel Design für Anfänger |
||
![]() |
![]() |
![]() |
#20 |
Inventar
![]() |
![]() 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 ![]()
____________________________________
MEINE FLIEGERSEITE XML Gauges Programmierung für Anfänger Panel Design für Anfänger |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|