-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
Soweit richtig. Allerdings hat er auch eine Antwort gefunden. Diese Aufgabe hat rein gar nichts mit dem Hornerschema zu tun. Es ist schön, dass du Fragen beantworten kannst, die niemand gestellt hat, das gehört aber nicht hierher. Es scheint mir, dass du nur schreibst, um Frust abzubauen. Aber auch das gehört nicht hierher. Ich möchte bei deinen zukünftigen Beiträgen etwas mehr Sachlichkeit und etwas mehr Themenbezug erkennen.
-
CComSafeArray überlädt den Subscript-Operator für eindimensionale Arrays. Du kannst also einfach mit m_saErg auf die Elemente zugreifen. Bei mehreren Dimensionen musst du CComSafeArray::MultiDimGetAt benutzen.
-
Kann es sein, dass du für jemanden, der anscheinend die Aufgabe nicht verstanden hat, und trotzdem einen fast 6 Monate alten Thread ausgräbt, in dem eigentlich alles geklärt ist, den Mund ganz schön voll nimmst?
-
Ich wüsste nicht, wie. Dieser Dialog wird intern von SHFileOperation erstellt. Einen fertigen MFC-Wrapper gibt es dafür nicht.
-
SHFileOperation Function ()
-
Warum hast du dann so eine Aufgabe bekommen? Weiß derjenige, der dir die Aufgabe gegeben hat, nicht, was du kannst? Oder ist es so, dass du das eigentlich wissen solltest? Wo genau ist denn das Problem? Sollen wir daraus, dass du die Frage hier und nicht im Java-Forum gestellt hast, folgern, dass nicht die Umsetzung in Java das Problem ist, sondern die Logik an sich? Weißt du, wie eine einfach verkettete Liste funktioniert?
-
"Klappt leider nicht" ist keine ausreichende Fehlerbeschreibung. Wenn du Benutzereingaben auswerten willst, solltest du zunächst mal welche einlesen. Variablen, die diese Eingaben aufnehmen, wären auch keine schlechte Idee. Das kannst du genauso machen wie für den Text selbst (wenn du denn immer noch kein scanf/fgets benutzen willst). Man könnte das dann auch schön in eine Funktion auslagern. Übrigens, mit solchen Kommentaren wie diesem hier: machst du es dir selbst nur unnötig schwer. Dein Code ist übersät mit Kommentaren, die nichts aussagen, zumindest nicht mehr, als der Code selbst. Das ist nicht der Sinn von Kommentaren. Dass hier iSchleife hochgezählt wird, sehe ich selbst, dafür brauche ich keinen Kommentar. Interessant sind Kommentare, wenn sie aussagen, warum etwas passiert, damit man leichter versteht, wie das Programm funktioniert. Deine Kommentare sind nur eine 1:1-Übersetzung des Codes, ohne Zusatzinformation. Sie machen das Ganze nur unübersichtlicher. Es gilt übrigens immer noch: Wenn du ein Wort durch ein eines mit anderer Länge ersetzen willst, ohne ein zweites Array zu benutzen, musst du die Zeichen hinter der Ersetzungsstelle entsprechend verschieben. Daran führt kein Weg vorbei.
-
Doch, das ist so schon OK. Die Zuweisung ist hier gewollt. Das ist zwar stilistisch fragwürdig, funktioniert aber. Du hast hier grundsätzlich einen endlichen Automaten. Deine Abfrage ist nicht zustandslos. Du brauchst also auf jeden Fall eine Variable, die deinen Zustand speichert. Teil des Zustands ist, ob du bereits eine Ziffer eingelesen hast. Davon hängt nämlich ab, wie du mit Whitespace-Zeichen umgehst: Ignorieren (wenn noch keine Ziffer eingelesen wurde), oder die Eingabe als gültig abschließen (wenn schon eine Ziffer eingelesen wurde). Eine Variable für den eingelesenen Wert brauchst du natürlich auch noch.
-
Warum wandelst du nicht einfach beide Strings vor dem Vergleich in Kleinbuchstaben um?
-
Ganz einfach: getchar liefert einen int zurück. Wenn man den Wert sofort in eine char-Variable steckt, kann man nicht mehr auf EOF prüfen. (Dass das hier nicht passiert, ist eine andere Sache )
-
Mach was du willst. Ich bin der Meinung, dass du nicht weit kommen wirst, wenn du deine Vorgehensweise nicht änderst. Ist dir klar, was der Rückgabewert von GetPrivateProfileString bedeutet? Der Rückgabewert ist nicht der eingelesene String, sondern die Anzahl der eingelesenen Zeichen, also (im Erfolgsfall) die Länge des Strings. Das kannst du übrigens in der Dokumentation nachlesen. Auch das solltest du der Dokumentation entnehmen können. Nach etwa einer Minute mit Google glaube ich, dass du <IniFiles.hpp> brauchst. Ohne Gewähr.
-
Sicher. Das ist ja der Sinn von solchen Dateien: Datenaustausch und Persistenz über die Lebenszeit von Prozessen hinweg. Allerdings sieht dein Code sehr nach ziellosem Herumbasteln aus. Falls Drucker.ini die Datei ist, die du mit GetPrivateProfileString einlesen willst, ist es komplett sinnlos, einen ifstream darauf zu öffnen. Und ein memset mit strlen auf ein uninitialisertes Array ist auch ziemlich gefährlich (ganz abgesehen davon, dass es nicht tut, was du offenbar erwartest). Den Rückgabewert von GetPrivateProfileString in der Datenbank abzulegen, ist auch Unsinn. Ich rate dir dringend, deine anscheinend doch recht großen Grundlagenlücken zu schließen, bevor du dich an solche Aufgaben machst. So kommst du IMHO nicht weit. Ach ja: Den Hinweis in dem anderen Thread auf TIniFile hattest du gesehen?
-
Schau mal hier rein: Teach Yourself Borland Delphi 4 in 21 Days -- Ch 18 -- Building Database Applications Das ist zwar für Delphi, aber die Vorgehensweise dürfte ähnlich sein.
-
seto, wenn deine zahlen-Funktion den String sowieso nicht zurückgibt, sondern selbst ausgibt, brauchst du keinen string-Parameter. Dann tut es eine lokale Variable auch. Ich würde den String einfach in den Rückgabewert stecken. Aber wenn man schon einen Parameter draus macht, dann doch bitte als Referenz, nicht als Zeiger. Bei einem Zeiger besteht immer die Gefahr, dass man die Funktion mit NULL aufruft. Bei einer Referenz geht das nicht (so einfach). Die Stringverarbeitung kann man auch noch etwas vereinfachen: #include <iostream> #include <string> using namespace std; string zahlen(short z); int main() { short zahl; while(true) { cout << "Zahl = ? "; cin >> zahl; string zahlentext = zahlen(zahl); cout << zahl << " = " << zahlentext << endl; } return 0; } string zahlen(short z) { if(z<20 || z>39) { return "unbekannt"; } string einer[10] = {"", "einund", "zweiund", "dreiund", "vierund", "fuenfund", "sechsund", "siebenund", "achtund", "neunund"}; string zehner[2] = {"zwanzig","dreissig"}; return einer[z%10] + zehner[z/10-2]; }[/code]
-
Anfangsdatum aus KW auslesen
Klotzkopp antwortete auf Patrick.Karre's Thema in C++: Compiler, IDEs, APIs
Das Datum des Montag KW1 eines beliebigen Jahres kannst du so ermitteln: Ermittle den Wochentag des 1.1. des gewünschten Jahres (mktime -> localtime). Abhängig davon änderst du diesen time_t-Wert: Wochentag des 1. Januar Relative Position des Montag KW1 Sonntag +1 Montag 0 Dienstag -1 Mittwoch -2 Donnerstag -3 Freitag +3 Samstag +2[/code] Wenn der Wochentag 0-basiert mit 0 = Sonntag ist (wie eben bei tm), kannst du die Anzahl der zu addierenden oder subtrahierenden Tage aus dem Wochentag des ersten Januar so ermitteln: Delta_tage = 3 - (wochentag + 2) % 7 -
Anfangsdatum aus KW auslesen
Klotzkopp antwortete auf Patrick.Karre's Thema in C++: Compiler, IDEs, APIs
Füll eine tm-Struktur mit den Daten des Montags der ersten Kalenderwoche (in diesem Fall der 31.12.2007). Wandle das mit mktime in time_t um. Zu diesem time_t addierst du 7 * (kw -1) * 86400 für den Montag und weitere 6 * 86400 für den Sonntag. Diese beiden Werte kannst du dann mit localtime wieder in tm-Strukturen umwandeln. -
Ich sehe da folgende Fehler: Wortlängen über 20 werden gar nicht gezählt. Wortlänge wird nach dem Erhöhen des Feldes in b nicht zurückgesetzt. Die Ausgabeschleife für die # steht an der falschen Stelle. Die Variable z in der i-Schleife ist nirgendwo sonst erwähnt. Du meinst vermutlich Wortlänge.
-
Die andere(n) cpp-Datei(en) musst du natürlich auch kompilieren. Und die dabei erzeugten Objektdateien kannst du dann zusammenlinken. Du musst weder ein Makefile noch eine IDE benutzen. Auf lange Sicht ist es aber mit Sicherheit einfacher.
-
Spiel es doch einfach mal mit einem kleinen Feld (z.B. 1 2 3 4) durch. Vielleicht ein Tip: a <- F[j];F[j] <- F[k]; F[j] <- a ist gleichbedeutend mit einer Vertauschung von F[j] und F[k].
-
Ausgabe in Kommandozeile bei Win32 Project
Klotzkopp antwortete auf Reality's Thema in C++: Compiler, IDEs, APIs
Ab Windows XP kannst du dich mit AttachConsole( ATTACH_PARENT_PROCESS ) an die Konsole des Parent-Prozesses hängen. Dann kannst du mit WriteFile oder den Konsolenfunktionen darauf schreiben. Wenn du ganz normal printf/cout benutzen willst, könnte dieser Artikel für dich interessant sein: Writing to and read from console - From a GUI Application using the same cout/cin and printf/scanf - The Code Project - C++ / MFC -
Ich sehe nicht, wo das Problem ist. Ich dachte zuerst, in dem String wäre der gesamte Inhalt der Ini-Datei. Aber du hast da ja immer nur jeweils einen Wert drin. Warum schreibst du die ganzen Strings nicht in eine Liste, die du dann hinterher in der Schleife abarbeitest? WritePrivateProfileString?
-
Das Forum ist kein Aufgabenlöseservice, auch nicht für "Teilaufgaben". Zeig, was du dir bisher zu dieser Aufgabe überlegt hast, oder stell konkrete Fragen zu deinen Verständnisproblemen.
-
Gleiche Vorgehensweise: In Teilprobleme zerlegen. Wie ist dein String denn aufgebaut?
-
Deine Zerlegung ist noch ziemlich grob... 1a) String in Teile zerlegen 1b) Teile eintragen 2a) Im Steuerelement das Bearbeiten erlauben 2b) Werte auslesen 2c) Werte zusammenfügen 2d) Zusammengefügte Werte in Datei schreiben P.S.: Es kann durchaus sein, dass Borland für manche Teilaufgaben fertige Funktionen anbietet. Davon habe ich keine Ahnung.
-
Zerleg deine Aufgabe in Teilprobleme, und stell dann konkrete Fragen zu Problemen, die du bei der Umsetzung der einzelnen Teile hast. Es wird sich hier niemand hinter dich setzen und dir jeden Handgriff erklären.