Net-srac Geschrieben 31. Mai 2001 Geschrieben 31. Mai 2001 So, ich wollt mich nun auchmal an den so hochgelobten VC++ machen. Bin allerdings schon bei der leichtesten Aufgabe gescheitert. Gibts es eine Funktion wie bei Borland mit der ich direkt den Wert aus einem Editfeld hole und auch wieder reinstelle? Genau das haben die nÀmlich auch in : "VC++ in 21 Tagen" vergessen. Thnx4Help
toosten Geschrieben 31. Mai 2001 Geschrieben 31. Mai 2001 UpdateData(TRUE); //fenster->variablen //daten Àndern UpdateData(FALSE); //variablen->fenster
Net-srac Geschrieben 31. Mai 2001 Autor Geschrieben 31. Mai 2001 Ăhm und dass dann bitte nochmal in Deutsch? Ich hab doch erst angefangen mit dem Kram. Gibts da ein 3-zeiler Beispielprogramm? Thnx4Help
Hasi Geschrieben 31. Mai 2001 Geschrieben 31. Mai 2001 Du musst deinem Edit Feld eine MemberVariale zuweisen (das machst du im ClassWizard) UpdateData(TRUE); schreibst du jetzt das was in dem EditFeld steht in die variable UpdateData(FALSE); schreibst du dass was in der Variable steht in dein edit Feld Ist eigentlich ganz einfach
Crush1 Geschrieben 6. Juni 2001 Geschrieben 6. Juni 2001 Gehe im Resource-Editor auf den Dialog und wĂ€hle das betreffende Fenster aus. DrĂŒck Strg-W und rufe so den Class-Wizard auf. WĂ€hle dort die Karte "Member-Variables" und klicke auf die entsprechende Control-ID des Fensters. DrĂŒcke "Add Variable" und fĂŒge bei m_ irgenwas dahinter wie z.B. m_Fenster (das m_ steht fĂŒr Member-Variable). WĂ€hle in der Kategorie "Control" aus und BestĂ€tige alles mit "OK". Hiermit ist m_Fenster in Deinem kompletten Source-Code ĂŒber DDX-Funktionen bekannt (Direct-Data-Exchange) und kann ĂŒber den Punkt-Operator alle Funktionen die dem Fenster bereitstehen benutzen. So arbeiten die (faulen) Profis! Viel SpaĂ!!!
Net-srac Geschrieben 6. Juni 2001 Autor Geschrieben 6. Juni 2001 Supi, hab ich jetzt geschnallt. Hab auch schon meinen ersten Rechner gecodet. Aber nochwas, wie mache ich denn, dass der jetzt meine ganzen ergebnisse in einer Datei abspeichert? fopen?fclose? FILE *MeineDatei; MeineDatei = fopen("C:\\temp.txt", "w+"); fputc('H', MeineDatei); fputc('a', MeineDatei); fputc('l', MeineDatei); fputc('l', MeineDatei); fputc('o', MeineDatei); fclose(MeineDatei); soweit ist klar, aber wie binde ich das jetzt in mein jetziges Prog ein? .h? oder .cpp? ich bin noch net so fit in Visual. MuĂ ich mir da nen Button IDC_SPEICHERN machen und dann den kram in OnSPEICHERN legen? Thnx4Help
Crush1 Geschrieben 6. Juni 2001 Geschrieben 6. Juni 2001 MuĂ ich mir da nen Button IDC_SPEICHERN machen und dann den kram in OnSPEICHERN legen? -> WĂ€re so denkbar... Alles was den Dialog betrifft wĂŒrde ich auch da reinsetzen, es sei denn du willst eine universale Speicherfunktion machen, die mĂŒstest Du dann mit #include einbinden also eine eigene .CPP und .h dafĂŒr anlegen.
Net-srac Geschrieben 6. Juni 2001 Autor Geschrieben 6. Juni 2001 Eigene cpp und h? wie kann ich denn das machen? die wird doch dann im Hauptteil included oder? aber doch nur die .h? PS: Das funktioniert! Aber wenn ich fputc(m_ergebniss, MeineDatei); schreibe sagt er das das mit der konvertierung von double zu int nicht möglich. Kann ich denn keine double speichern? Wie könnte ich denn ĂŒberhaupt konvertieren. so Float -> Text? Thnx4Help
Crush1 Geschrieben 6. Juni 2001 Geschrieben 6. Juni 2001 fputc schreibt leider nur ints. Deshalb ist es sinnvoll den double(bei Win98 8 Bytes) in 2 ints(4 Bytes) zu zerlegen. Das geht so: So kann man sehen, wie groĂ int oder doubles sind: int x=sizeof(int); // int anschauen double y=sizeof(double); // alles klar? und jetzt das Beispiel: double m_ergebniss; int xhi,xlo; double*p1=&m_ergebniss; // Zeiger auf double xlo=*(int*)p1; // lo als int auslesen xhi=*((int*)p1+1); // hi als int auslesen leider muĂ man den Pointer definieren, da sonst versucht wird den kompletten double auf int zu kĂŒrzen. Das heiĂt der integer-Wert von m_ergebniss wird in den int ĂŒbertragen und der Exponent in den Gulli geworfen - das wĂ€re falsch (Information geht verloren). Ein double y=5 ist nĂ€mlich byteweise nicht 5 sondern: Hi int Lo int 00 00 00 00 | 00 00 14 40 oder am besten gleich in den fputc setzen: int xhi,xlo; double*p1=&m_ergebniss; fputc(*((int*)p1+1), MeineDatei); // lo fputc(*(int*)p1, MeineDatei); // hi Ich habĂÂŽs jetzt nicht getestet aber der fputc sollte es so fressen ansonsten halt ein int xhi,und ein int xlo einlesen ĂŒber als m_ergebniss abspeichern. Das Einlesen muĂ also auch wieder als xlo und xhi erfolgen und dann muĂ ein double im speicher so gefĂŒllt werden. Klappt 100%ig! Die Methode ist zwar ein wenig brutal, aber so funktionierts bestimmt. P.S.: Bei STL lassen sich CObjects ganz einfach in Dateien streamen - da ist dann wurst obĂÂŽs ints doubles oder strings sind.
Net-srac Geschrieben 7. Juni 2001 Autor Geschrieben 7. Juni 2001 Ăhm sorry, aber das war zu viel. Also das mit dem konvertieren ist klar. Aber welche function,wenn nicht fputc, schreibt denn text in eine Datei? Damit es gleich egal ist was in dem Eingabefeld steht? Thnx4Help
Crush1 Geschrieben 7. Juni 2001 Geschrieben 7. Juni 2001 Ach so, das geht dann so: Mit Strings: fputs, fputws Write a string to a stream. int fputs( const char *string, FILE *stream ); ACHTUNG: Es werden 0-terminierte-Strings geschrieben!!! Man muĂ hier falls nicht vorhanden 0er setzen. Oder so mit unformatierten Daten aller Art: fwrite Writes data to a stream. size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ); Parameters: buffer Pointer to data to be written size Item size in bytes count Maximum number of items to be written stream Pointer to FILE structure Das ist feiner, so kann man die Schreib-LĂ€nge im Aufruf bestimmen. Vielleicht hilft Dir das weiter? Aber auch hier muĂ ein Pointer auf den double gesetzt werden. Da kommt man einfach nicht rum.
Hasi Geschrieben 7. Juni 2001 Geschrieben 7. Juni 2001 versuchs mal hiermit fprintf(deinFileStream,"%d", deinedoublevariable); ist nicht so schoen wie bei crush aber dafuer ziemlich einfach und schnell kapierbar [ 07. Juni 2001: Beitrag editiert von: Hasi ]
Net-srac Geschrieben 7. Juni 2001 Autor Geschrieben 7. Juni 2001 Ăhm, ich habs immernoch nicht verstanden Könnt ihr vielleicht mal nen 3-zeiler schreiben mit nem beispiel, wo oben irgendein Zahlenwert z.B. double reinkommt und der wert dann als text in einer neuen Variable wieder rauskommt? So, mit deklaration und so? Das wĂ€re tierisch guat von euch. Thnx4Help [ 07. Juni 2001: Beitrag editiert von: FaFo ]
Hasi Geschrieben 7. Juni 2001 Geschrieben 7. Juni 2001 magst jetzt deinen double in ne Datei schreiben oder in eine andere Variable? und der wert dann als text in einer neuen Variable wieder rauskommt?
Net-srac Geschrieben 7. Juni 2001 Autor Geschrieben 7. Juni 2001 naja, also am besten in eine Variable, die ich dann spÀter in eine Datei schreibe.
Hasi Geschrieben 7. Juni 2001 Geschrieben 7. Juni 2001 zum schreiben in einen Buffer(char) schau dir das an : #include <stdio.h> void main( void ) { char buffer[200], s[] = "computer", c = 'l'; int i = 35, j; float fp = 1.7320534f; /* Format and print various data: */ j = sprintf( buffer, "\tString: %s\n", s ); j += sprintf( buffer + j, "\tCharacter: %c\n", c ); j += sprintf( buffer + j, "\tInteger: %d\n", i ); j += sprintf( buffer + j, "\tReal: %f\n", fp ); printf( "Output:\n%s\ncharacter count = %d\n", buffer, j ); } zum schreiben des Buffers oder des Double in die datei les mal das: #include <stdio.h> #include <process.h> FILE *stream; void main( void ) { int i = 10; double fp = 1.5; char s[] = "this is a string"; char c = '\n'; stream = fopen( "fprintf.out", "w" ); fprintf( stream, "%s%c", s, c ); fprintf( stream, "%d\n", i ); fprintf( stream, "%f\n", fp ); fclose( stream ); system( "type fprintf.out" ); } OK?
Net-srac Geschrieben 8. Juni 2001 Autor Geschrieben 8. Juni 2001 Supi, hab es heut frĂŒh probiert und es so umgebaut, das es auch wirklich mein ergebniss als char bla[...] speichert. Dankeschön. Auf einen im Netz stehenden Rechner kann man das nicht speichern? oder? ich hab das schonmal probiert, denke aber, dass ich die adresse falsch eingegeben hab. eigentlich mĂŒĂte doch: \\X0529AP\C\temp.txt auch reichen oder? Greetz Carsten
Hasi Geschrieben 8. Juni 2001 Geschrieben 8. Juni 2001 hmm wahrscheinlich muss man mit escape charactern arbeiten, d.h. um einen backslash zu schreiben muss ich zwei machen siehe hier : void main() { cout << "\\ ein Backslash\n"; cout << "\\\\ zwei Backslash"; }
Net-srac Geschrieben 8. Juni 2001 Autor Geschrieben 8. Juni 2001 yep, funtzt, jetzt kann ich schonmal die daten auf einem anderen rechner abspeichern. Danke, denke das wars erstmal. Greetz Carsten
Empfohlene BeitrÀge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto fĂŒr unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden