Autor |
Nachricht |
|
FlyingGekko Globaler Moderator

Anmeldedatum: 01.06.2003 Beiträge: 4521 Wohnort: Linz/ Urfahr
|
Verfasst am: 30.09.2012, 17:52 • Titel: |
|
|
Mir ist gerade was aufgefallen. Für den Fall das EOF bereits am Ende der letzten Zeile (und nicht wie üblich in einer neuen Leerzeile) steht muss der obige Text noch um ein paar Zeilen erweitert werden, da sonst die letzte Zeile ignoriert wird.
Code: |
if(flag==1) {
cnt++;
} |
mfg Stephan |
|
Nach oben |
|
 |
Cody227 CULT-Urgestein

Anmeldedatum: 03.05.2011 Beiträge: 1217 Wohnort: Hamburg
|
Verfasst am: 30.09.2012, 22:21 • Titel: |
|
|
Und woher weiss getchar() auf welche datei es zugreifen muss? Kommt davor noch eine funktion, die die datei "öffnet" oder so ähnlich?
Ich hab jetzt ne methode die funktioniert, aber ich muss noch das problem lösen, dass ich nur die erste zeile der datei ausgelesen bekomme. |
|
Nach oben |
|
 |
FlyingGekko Globaler Moderator

Anmeldedatum: 01.06.2003 Beiträge: 4521 Wohnort: Linz/ Urfahr
|
Verfasst am: 30.09.2012, 22:56 • Titel: |
|
|
Ich habe vorausgesetzt, dass du die Datei bereits geöffnet hast. getchar() stellt also nur eine Pseudofunktion (quasi ein Platzhalter) für deine Lösung dar. Der Code soll dir ja auch nur die Idee vermitteln. |
|
Nach oben |
|
 |
FlyingGekko Globaler Moderator

Anmeldedatum: 01.06.2003 Beiträge: 4521 Wohnort: Linz/ Urfahr
|
Verfasst am: 02.10.2012, 13:40 • Titel: |
|
|
Gehts voran? Wenn nicht kannst du ja hier mal den bereits erstellten Code posten.
mfg Stephan |
|
Nach oben |
|
 |
Cody227 CULT-Urgestein

Anmeldedatum: 03.05.2011 Beiträge: 1217 Wohnort: Hamburg
|
Verfasst am: 02.10.2012, 14:01 • Titel: |
|
|
Hab noch nicht viel weiter gemacht. aber ich kann ja mal posten was ich schon so habe:
main.cpp:
Zitat: |
#ifndef _WIN32_WINNT //////////////////////////////////////
#define _WIN32_WINNT 0x0500 //muss definiert sein, damit neuere funktionen zur verfügung stehen undzwar VOR <windows>
#endif //////////////////////////////////////
#include <windows>
#include "header.h"
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)
{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */
/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);
/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = MAKEINTRESOURCE(IDR_MENU) ; /* das menü */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;
/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
800, /* The programs width */
600, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);
/* Make the window visible on the screen */
ShowWindow (hwnd, nFunsterStil);
/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}
/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}
/* This function is called by the Windows function DispatchMessage() */
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_CREATE:
hintergrundBMP = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_HINTERGRUNDBMP)); //Hintergrund-Bitmap laden
hButton = CreateWindow("button",
"Tipp Des Tages", //Text auf dem Button
WS_CHILD | WS_VISIBLE, //Eigenschaften
330, 290, 130, 30, //Position und Größe
hwnd, (HMENU)ID_BUTTON, //oder NULL
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
break;
case WM_QUIT:
break;
case WM_PAINT:
hDC = BeginPaint(hwnd, &ps);
SelectObject(hDCbitmap, hintergrundBMP); //Die Bitmap auswählen und in das extra angelegte Bitmap-DC laden
BitBlt (hDC, 0, 0, 800, 600, hDCbitmap, 0, 0, SRCCOPY); //Bitmap aufs BufferDC malen - DIE BITMAP BRAUCHT TROTZDEM EIN EIGENES DC!!!
ReleaseDC(hwnd, hDCbitmap);
ReleaseDC(hwnd, hDC); //DC wieder freigeben
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hintergrundBMP); //HintergrundBitmap am ende wieder löschen !WICHTIG!
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
case WM_COMMAND:
switch( LOWORD( wParam ) )
{
case ID_BUTTON:
//hier kommt der ganze Kram zum auswählen des Tipps hin
MessageBox(hwnd, "bla bla", "Tipp des Tages", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
break;
}
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
|
header.h
Zitat: |
#include <windows>
#include <string>
#include <fstream>
using namespace std;
HBITMAP hintergrundBMP;
HINSTANCE hInst;
HWND hwnd; /* This is the handle for our window */
PAINTSTRUCT ps;
HDC hDC = GetDC(hwnd);
HDC hDCbitmap = CreateCompatibleDC(hDC); //Die bitmap braucht erstmal ein eigenes DC bevor das richtige benutzt wird
HFONT Schriftart = CreateFont(156, 91, 0, 00, //Schriftart erstellen und größe der Buchstaben festlegen
FW_NORMAL,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, //normale Schriftqualität
DEFAULT_PITCH | FF_ROMAN, //Times New Roman
"Times New Roman");
const char* HintergrundText = "Das hier ist ein Text";
char AusgewaehlterTipp;
char TippsAusDerTXT;
ifstream file("Tipps.txt"); //Datei öffnen
static HWND hButton; //handle für den Button
string FileBuffer = "test"; //string zum speichern des Inhalts der Datei
int AnzahlDerZeilenumbrueche;
int index; //start index wo IndexOfAny anfangen soll zu suchen
#define IDB_HINTERGRUNDBMP 1
#define ID_INFO 2
#define IDR_MENU 3
#define ID_BUTTON 4
|
ressource.rc
Zitat: |
#include <windows>
#include "header.h"
IDB_HINTERGRUNDBMP BITMAP "Hintergrund.bmp" //die bitmap für den Hintergrund
/////////////////////////////////////////////////////////
IDR_MENU MENU
BEGIN
MENUITEM "Info", ID_INFO //infos über den Author usw.
END
/////////////////////////////////////////////////////////
|
und das hier hab ich noch ausprobiert:
Zitat: |
int a = 0;
int b = 0;
while(a < 16)
{
if(filebuffer[a] == '2'){ //filebuffer = text aus der datei
b++; //b = anzahl der zweien im Text
}
a++; //a = index
} |
//EDIT: 16 war die länge des teststrings den ich benutzt habe |
|
Nach oben |
|
 |
FlyingGekko Globaler Moderator

Anmeldedatum: 01.06.2003 Beiträge: 4521 Wohnort: Linz/ Urfahr
|
Verfasst am: 02.10.2012, 14:34 • Titel: |
|
|
Ehm was soll ich jetzt sagen. Kann es sein das du große Teile des Codes kopiert hast, ohne genau zu wissen was dieser bewirkt?
Für die gewünschte Anwendung wirkt das alles schon sehr groß aufgeblasen. Aber vielleicht denk ich hier einfach auch zu simpel. |
|
Nach oben |
|
 |
Cody227 CULT-Urgestein

Anmeldedatum: 03.05.2011 Beiträge: 1217 Wohnort: Hamburg
|
Verfasst am: 02.10.2012, 14:43 • Titel: |
|
|
Nein, das ist alles quasi aus dem Nichts entstanden. Also, ich hab mir die Funktionen die ich brauchte aus nem anderen Programm raus kopiert, dass ich früher mal gecoded habe. Das hat mir das nachgucken erspart, (ich kenn die ganzen Parameter der Funktionen ja nicht auswendig) und teilweise auch ein bisschen Schreibarbeit, weil ich hier vieles gleich machen musste wie im anderen Programm. Kann aber sein, dass vereinzelt noch Code-Fragmente vom double-buffering des anderen Programms da sind, die ich vergessen hab zu löschen. Aber aus dem Internet kopiert ist es definitiv nicht, denn das andere Programm hab ich ja auch aus dem nichts heraus selber geschrieben.
EDIT: jetzt sind mir grad auch noch ein paar variablen aufgefallen, die aus dem anderen Programm mit übrig geblieben sind :/ |
|
Nach oben |
|
 |
FlyingGekko Globaler Moderator

Anmeldedatum: 01.06.2003 Beiträge: 4521 Wohnort: Linz/ Urfahr
|
Verfasst am: 02.10.2012, 14:46 • Titel: |
|
|
Gut, dann wirst du da vermutlich auch Recht haben. Ist vermutlich ein anderer Zugang. |
|
Nach oben |
|
 |
aaron Administrator

Anmeldedatum: 15.01.2003 Beiträge: 15344
|
|
Nach oben |
|
 |
Cody227 CULT-Urgestein

Anmeldedatum: 03.05.2011 Beiträge: 1217 Wohnort: Hamburg
|
Verfasst am: 02.10.2012, 19:34 • Titel: |
|
|
Wie gesagt, was ich schon fertig hab kannst du ja oben sehen. Mir fehlt im prinzip nur noch ne funktion um die komplette datei in einen string zu packen und dann müsste ich mit einer random-funktion eine zeile auswählen.
Aber ich will erstmal versuchen heute noch ein Update für das Fahrzeiten-Management-Programm im RC-Glashaus zu machen, da wird nämlich morgen die neue Onroad-strecke eröffnet.  |
|
Nach oben |
|
 |
|