Hilfe bei Übersetzung C in PB

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Speedy
Beiträge: 16
Registriert: 02.01.2008 22:19

Hilfe bei Übersetzung C in PB

Beitrag von Speedy »

ich bräuchte Hilfe bei der Übersetzung des Programmcodes in PB 6.12

Main.cpp
========

Code: Alles auswählen

#define MegaBytes 128
#define MemoryPageSize 1020

#define IDM_EINSTELLUNGEN	100
#define IDM_START			101
#define IDM_STOPP			102
#define IDM_BEENDEN  	        103
#define IDM_HILFE			104
#define IDT_UPDATE			105

#define IDD_START			200
#define IDD_ENDE			201
#define IDD_SCHRITT			202
#define IDD_TEXT1			203
#define IDD_TEXT2			204
#define IDD_TEXT3			205
#define IDD_OK				206

#include <windows.h>
#include <time.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <stdio.h>

LRESULT CALLBACK HauptFensterCallBack(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK EinstellungenCallBack(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

HINSTANCE hInst;
int TestStart, TestStop, TestSchritt;
bool Tgestartet, Tanhalten;
long TLesenMS, TLesenKB, TSchreibenMS, TSchreibenKB, Tfortschritt;
char Tstatus1[256];
char Tstatus2[256];
char Tstatus3[256];
HMENU hMenu;

class Memory
{
private:
	char *Data;
public:
	Memory();
	~Memory();
	void Anlegen();
	void Freigeben();
	void Schreiben(char NewData);
	int Pruefen(char Data2);
	int Pruefen(int Art);
};

Memory::Memory()
{
	Data=NULL;
}

Memory::~Memory()
{
	if (Data!=(void*)0)
		delete Data;
}

void Memory::Anlegen()
{
	Data=new char[MemoryPageSize];
}

void Memory::Freigeben()
{
	delete Data;
	Data=(char*)0;
}

void Memory::Schreiben(char NewData)
{
	for (int i=0;i<MemoryPageSize;i++)
		Data[i]=NewData;
}

int Memory::Pruefen(char Data2)
{
	for (int i=0;i<MemoryPageSize;i++)
		if (Data[i]!=Data2)
			return -1;
	return 0;
}

int Memory::Pruefen(int Art)
{
	if (Data!=(void*)0)
	{
		switch (Art)
		{
		case 0:
			Schreiben((char)0);
			break;
		case 1:
			if (Pruefen((char)0)!=0) return -1;
			break;
		case 2:
			Schreiben((char)85);
			break;
		case 3:
			if (Pruefen((char)85)!=0) return -1;
			break;
		case 4:
			Schreiben((char)170);
			break;
		case 5:
			if (Pruefen((char)170)!=0) return -1;
			break;
		case 6:
			Schreiben((char)255);
			break;
		case 7:
			if (Pruefen((char)255)!=0) return -1;
			break;
		default:
			printf("FEHLER!");
		}
	}
	return 0;
}

DWORD WINAPI test(LPVOID nix)
{
	long i;
	int Fehlerzahl=0;
	_timeb tstruct;
	unsigned int temptime;
	Memory *Stuff;

	for (int size=TestStart;size<TestStop;size+=TestSchritt)
	{
		TLesenMS=0;
		TLesenKB=0;
		TSchreibenMS=0;
		TSchreibenKB=0;
		Tfortschritt=size;
		long ende=1024*size;
		
		sprintf(Tstatus1, "Lege   %3dMB Speicher an...                                                  ", size);
		sprintf(Tstatus2, "                                                                                ");
		Stuff= new Memory[ende];
		for (i=0;i<ende;i++)
			Stuff[i].Anlegen();


		for (int PruefTyp=0;PruefTyp<8;PruefTyp++)
		{
			for (i=0;i<ende;i++)
			{
				//Zeit Messung starten
				_ftime( &tstruct );
				temptime=tstruct.millitm+1000*tstruct.time;
				
				if (Stuff[i].Pruefen(PruefTyp)!=0)
				{
					sprintf(Tstatus3, "SPEICHERFEHLER! (%d)                                                  ", ++Fehlerzahl);
				}
				
				//Zeit Messung beenden
				_ftime( &tstruct );
				if (PruefTyp%2==0)
				{
					TSchreibenKB++;
					TSchreibenMS+=tstruct.millitm+1000*tstruct.time-temptime;
				}
				else
				{
					TLesenKB++;
					TLesenMS+=tstruct.millitm+1000*tstruct.time-temptime;
				}
				if (i%1024==1023)
				{
					if (PruefTyp%2==0)
					{
						sprintf(Tstatus1, "Schreibe %3dMB Speicher...[%d] (%.2fMB/s)                                      ", i/1024+1, PruefTyp/2+1, (float)TSchreibenKB/(float)TSchreibenMS);
						sprintf(Tstatus2, "                                                                                ");
					}
					else
					{
						sprintf(Tstatus1, "                                                                                ");
						sprintf(Tstatus2, "Lese %3dMB Speicher...[%d] (%.2fMB/s)                                           ", i/1024+1, PruefTyp/2+1, (float)TLesenKB/(float)TLesenMS);
					}
				}

				if (Tanhalten)
				{
					for (i=0;i<ende;i++)
						Stuff[i].Freigeben();
					sprintf(Tstatus1, "                                                                                ");
					sprintf(Tstatus2, "Test beendet.                                                                 ", size);
					Tanhalten=false;
					Tgestartet=false;
					EnableMenuItem(hMenu, IDM_START, MF_ENABLED);
					EnableMenuItem(hMenu, IDM_STOPP, MF_GRAYED);
					EnableMenuItem(hMenu, IDM_EINSTELLUNGEN, MF_ENABLED);
					return 0;
				}
			}
		}
		
		sprintf(Tstatus1, "                                                                                ");
		sprintf(Tstatus2, "\nGebe   %3dMB Speicher frei...                                                  ", size);
		for (i=0;i<ende;i++)
			Stuff[i].Freigeben();
	}
	sprintf(Tstatus1, "                                                                                ");
	sprintf(Tstatus2, "Test beendet.                                                                 ", size);
	Tgestartet=false;
	EnableMenuItem(hMenu, IDM_START, MF_ENABLED);
	EnableMenuItem(hMenu, IDM_STOPP, MF_GRAYED);
	EnableMenuItem(hMenu, IDM_EINSTELLUNGEN, MF_ENABLED);
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	HWND hWnd;
	MSG message;
	HACCEL hAccel;

	WNDCLASS wc;

	wc.style=CS_SAVEBITS;
	wc.lpfnWndProc=(WNDPROC)HauptFensterCallBack;
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hInstance=hInstance;
	wc.hIcon=LoadIcon(NULL,IDI_ERROR);
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
	wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName="Leer";
	wc.lpszClassName="HauptFenster";

	if (!RegisterClass(&wc)) exit (1);

	hMenu=LoadMenu(hInstance, "HauptMenu");

	hWnd=CreateWindow ("HauptFenster", "Testprogramm mit Win32", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 165, NULL, hMenu, hInstance, NULL);

	ShowWindow(hWnd, nCmdShow);

	hAccel=LoadAccelerators(hInstance, "Tasten");
	hInst=hInstance;
	TestStart=1;
	TestStop=512;
	TestSchritt=1;
	Tgestartet=false;
	Tanhalten=false;
	TLesenMS=0;
	TLesenKB=0;
	TSchreibenMS=0;
	TSchreibenKB=0;
	Tfortschritt=-1;
	Tstatus1[0]='\0';
	Tstatus2[0]='\0';
	Tstatus3[0]='\0';
	EnableMenuItem(hMenu, IDM_STOPP, MF_GRAYED);

	SetTimer(hWnd, 1234, 125, NULL);

	while (GetMessage(&message, NULL, 0, 0))
	{
		if (!TranslateAccelerator(hWnd, hAccel, &message))
		{
			TranslateMessage(&message);
			DispatchMessage(&message);
		}
	}

	if (Tgestartet==true)
	{
		Tanhalten=true;
		while (Tgestartet==true) Sleep(500);
		Sleep(500);
	}

	return message.wParam;
}

LRESULT CALLBACK HauptFensterCallBack(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	HDC hdc;
	char puffer[256];

	switch (message)
	{
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDM_EINSTELLUNGEN:
			if (Tgestartet==true)
			{
				MessageBox(hWnd, "Die Einstellungen funktionieren nur, wenn gerade nicht getestet wird!", "Startfehler", MB_OK);
			}
			else
			{
				DialogBox(hInst, "Einstellungen", hWnd, (DLGPROC)EinstellungenCallBack);
			}
			return 0;
		case IDM_START:
			if (Tgestartet==true)
			{
				MessageBox(hWnd, "Der Test kann nur einmal gestartet werden!", "Startfehler", MB_OK);
			}
			else
			{
				CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)test, NULL, 0, 0);
				Tgestartet=true;
				EnableMenuItem(hMenu, IDM_START, MF_GRAYED);
				EnableMenuItem(hMenu, IDM_STOPP, MF_ENABLED);
				EnableMenuItem(hMenu, IDM_EINSTELLUNGEN, MF_GRAYED);
			}
			return 0;
		case IDM_STOPP:
			if (Tgestartet==true)
			{
				Tanhalten=true;
			}
			else
			{
				MessageBox(hWnd, "Der Test kann nur angehalten werden, wenn er auch gestartet wurde!", "Startfehler", MB_OK);
			}
			return 0;
		case IDM_BEENDEN:
			PostQuitMessage(0);
			return 0;
		case IDM_HILFE:
			MessageBox(hWnd, "Dieses Programm alloziert einfach ein bisschen Speicher, dann ein bisschen mehr und testet damit das System, ob fehler im Arbeitsspeicher vorliegen.\nDas Programm ist v llig frei von irgendwelchen zw ngen,  bernimmt aber auch keine Verantwortung f r nix und so.\n\nViel Spa  damit!", "Information", MB_OK);
			return 0;
		}
		break;
	case WM_TIMER:
		hdc=GetDC(hWnd);
		if (Tgestartet)
		{
			sprintf(puffer, "Aktuelle Testgr sse: %dMB (%d-%d)", Tfortschritt, TestStart, TestStop);
			TextOut(hdc, 5, 5, puffer, strlen(puffer));
		}
		TextOut(hdc, 5, 25, Tstatus1, strlen(Tstatus1));
		TextOut(hdc, 5, 45, Tstatus2, strlen(Tstatus2));
		TextOut(hdc, 5, 65, Tstatus3, strlen(Tstatus3));
		ReleaseDC(hWnd, hdc);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}

	return DefWindowProc(hWnd, message, wParam, lParam);
}

BOOL CALLBACK EinstellungenCallBack(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	char puffer[32];

	switch (message)
	{
	case WM_INITDIALOG:
		itoa(TestStart, puffer, 10);
		SetDlgItemText(hWnd, IDD_START, puffer);
		itoa(TestStop, puffer, 10);
		SetDlgItemText(hWnd, IDD_ENDE, puffer);
		itoa(TestSchritt, puffer, 10);
		SetDlgItemText(hWnd, IDD_SCHRITT, puffer);
		return 1;
	case WM_COMMAND:
		switch (LOWORD(wParam))
		{
		case IDD_OK:
			GetDlgItemText(hWnd, IDD_START, puffer, 32);
			TestStart=atoi(puffer);
			GetDlgItemText(hWnd, IDD_ENDE, puffer, 32);
			TestStop=atoi(puffer);
			GetDlgItemText(hWnd, IDD_SCHRITT, puffer, 32);
			TestSchritt=atoi(puffer);
			EndDialog(hWnd, 0);
			return 1;
		}
	}
	return 0;
}
Speddy
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hilfe bei Übersetzung C in PB

Beitrag von NicTheQuick »

Das ist kein C-Code. Das ist C++. Das sieht man daran, dass Klassen verwendet werden. Eine 1:1-Übersetzung nach PureBasic wird da schwierig, aber man kann die Klasse entweder als Interface modellieren oder ganz einfach als simple Struktur und normalen Procedures statt Methoden.

Knapp 400 Zeilen zu übersetzen ist aber schon nicht wenig. Außerdem scheint der Code speziell für Windows gedacht zu sein, womit ich schon mal rausfalle, da ich nur Linux besitze und somit nichts unter Windows entwickeln oder testen kann.

Brauchst du Hilfe an einer bestimmten Stelle oder ist deiner Erfahrung mit dem Lesen von C++-Code bei Null?
Axolotl
Beiträge: 265
Registriert: 31.12.2008 16:34

Re: Hilfe bei Übersetzung C in PB

Beitrag von Axolotl »

Eine 1:1 Übersetzung macht a.m.S. keinen Sinn.
Das Programm belegt speicherblöcke und prüft auf speicherfehler mit verschiedenen Tests.
Die gesamte UI schreibt man in PB in 0,NIX.
Ich bin gerade am tablet und kann nicht helfen.
Fang doch mal an und bei detaillierten fragen würde ich weiterhelfen.
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
Speedy
Beiträge: 16
Registriert: 02.01.2008 22:19

Re: Hilfe bei Übersetzung C in PB

Beitrag von Speedy »

Sorry, hatte wohl das ++ nach dem C vergessen. Meine Überlegung war das ganze über
mehrere Prozeduren zu steuern. Möglich das PB nicht besonders dazu geeignet ist.
Habe hier im Forum bisher nichts gefunden um einen RAM zu testen. Trotzdem erstmals
Danke an Euch.
Speddy
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hilfe bei Übersetzung C in PB

Beitrag von NicTheQuick »

Blöde Frage: Warum willst du selbst den RAM testen? Der Code oben ist dafür nicht wirklich geeignet. Dafür braucht es viel mehr und komplexere Tests, am besten noch über mehrere Cores verteilt. Und außerdem kannst du ja nie den Teil des RAMs testen, der gerade schon benutzt wird.
Es gibt doch schon genau dafür kostenlose Test-Tools.

Oder geht es eher um's Lernen? Dann versteh ich das.
Benutzeravatar
Speedy
Beiträge: 16
Registriert: 02.01.2008 22:19

Re: Hilfe bei Übersetzung C in PB

Beitrag von Speedy »

Es gibt keine blöden Fragen. Ich wollte nur mal wissen oder verstehen, ob mit PB es möglich ist solche Test zu programmieren. Natürlich geht auch Programm runterladen und RAM testen.
Speddy
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Hilfe bei Übersetzung C in PB

Beitrag von Macros »

Das kann auch dein Programm oben nicht richtig. Die Sache ist folgende: Wenn das Betriebssystem startet lädt es den Kernel in den Arbeitsspeicher. Dann Treiber und Programme. Jedes Programm hat nur Zugriff auf den Speicher dem das Betriebssystem ihm zuweist. Und das aus guten Grund.

Stell dir vor ein anderes Programm läuft und ist gerade dabei einen Sprung an Codestelle A zu machen. Nun läuft währenddessen dein Test und macht aus A B, das Programm landet ganz wo anders und stürzt ab. Würde ein Programm im Speicher eines Treibers oder gar im Kernelspeicher schreiben, stürzt dir der ganze PC ab. Früher ging das mal halbwegs einfach mit Adminrechten, inzwischen wird das aus gutem Grund auch dann eingeschränkt.

Dein Testprogramm holt sich also nur einen Teil des Arbeitsspeichers den es vom Betriebssystem zugewiesen kriegt (Zeile Data=new char[MemoryPageSize];) und testet den. Fehler in anderen Speicherbereichen testet es nicht. Es schaut nicht mal, wo im Speicher der ihm zugewiesene Bereich liegt. Es kann gut 10 mal der gleiche getestet werden (das ist sogar wahrscheinlich)

Deshalb machen seriöse Testprogramme (wie MemTest86) es so: Sie liefern ein eigenes Mini-Betriebssystem. Das dient dann nur für den Speichertest, und wenn es den Speicher testen will, in dem der Kernel liegt, dann bewegt es seinen Kernelcode im Speicher an eine andere Stelle und testet dann die wo er vorher lag. Das geht, weil kein anderes Programm läuft.
Bild
Axolotl
Beiträge: 265
Registriert: 31.12.2008 16:34

Re: Hilfe bei Übersetzung C in PB

Beitrag von Axolotl »

So zurück am PC.
C++ ist nur die Memory-Klasse. Alles andere ist plain-C für Window.
Das Program macht (nicht wirklich) Sinn. Aber ich kenne auch nicht den Hintergrund des Programms, deshalb keine Kritik aber das Ergebnis hat eine (eher bescheidene) Aussagekraft zum Arbeitsspeicher.
Für Speichertests empfehle ich mal nach "galpat test" zu suchen. Ich kenne das aus dem Bereich funktionale Sicherheit, da ist aber selten ein OS wie Windows im Spiel.

Die Oberfläche würde ich anhand Screenshot nachbauen und nicht nachkodieren, da vieles in C in PB nicht gebraucht wird.
BTW: Der Einstellungsdialog fehlt m.M.n. (Meist eine *.rc Datei)?
Wobei da Werte für Start, Stop und Schrittweite eingegeben werden s.a. EinstellungenCallBack().

Das Hauptfenster hat ein Menu: Einstellungen, Start, Stopp, Beenden und Hilfe.
Des weiteren werden 3 Statuszeilen direkt auf den Client Bereich des Fensters geschrieben.

Über einen Thread wird dann test() gestartet.....

Hier mal als Start der Nachbau der Oberfläche .....

Code: Alles auswählen

EnableExplicit 

Enumeration EWindow 1 
  #WND_Main 
EndEnumeration 

Enumeration EGadget 1
  #Gdt_txtStatus1 
  #Gdt_txtStatus2 
  #Gdt_txtStatus3 
EndEnumeration 

Enumeration EMenu 1
  #MNU_Main
EndEnumeration 
Enumeration EMenuItem 1
  #MNU_Settings 
  #MNU_Start 
  #MNU_Stop 
  #MNU_Close 
  #MNU_Help 
EndEnumeration 


Procedure Main() 
  Protected a 

  If OpenWindow(#WND_Main, 0, 0, 400, 112, "Fake RAM Tester", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)  
    StickyWindow(#WND_Main, 1) ; I like this 

    If CreateMenu(#MNU_Main, WindowID(#WND_Main)) 
      MenuTitle("Haupt Menü") 
      MenuItem(#MNU_Settings, "Einstellungen") 
      MenuItem(#MNU_Start, "Start") 
      MenuItem(#MNU_Stop, "Stopp") 
      MenuBar() 
      MenuItem(#MNU_Close, "Close") 
      MenuTitle("Help") 
      MenuItem(#MNU_Help, "Help") 
    EndIf 
    SetWindowColor(#WND_Main, #White) 

    TextGadget(#Gdt_txtStatus1, 8,  8, 384, 20, "<Status Text 1>")    
    TextGadget(#Gdt_txtStatus2, 8, 32, 384, 20, "<Status Text 2>")    
    TextGadget(#Gdt_txtStatus3, 8, 56, 384, 20, "<Status Text 3>")    
    
    ; main loop 
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow 
          Break ; bye 

       ;Case #PB_Event_Gadget 

        Case #PB_Event_Menu  
          Select EventMenu() 
            Case #MNU_Settings 
              ; Open Dialog ... 
				      MessageRequester("Startfehler", "Die Einstellungen funktionieren nur, wenn gerade nicht getestet wird!", #PB_MessageRequester_Ok) 
              
            Case #MNU_Start 
              ; start thread with test() 

            Case #MNU_Stop 
              ; stop thread 

            Case #MNU_Close 
              Break ; bye 

            Case #MNU_Help 

          EndSelect 
      EndSelect 
    ForEver  
  EndIf 
  ProcedureReturn 0 
EndProcedure 

End Main() 

; BoF 
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Axolotl
Beiträge: 265
Registriert: 31.12.2008 16:34

Re: Hilfe bei Übersetzung C in PB

Beitrag von Axolotl »

Speedy hat geschrieben: 10.07.2025 16:07 Es gibt keine blöden Fragen. Ich wollte nur mal wissen oder verstehen, ob mit PB es möglich ist solche Test zu programmieren. Natürlich geht auch Programm runterladen und RAM testen.
Okay, wenn das die Frage ist:
Ja, man kann auch mit PB solche Programme schreiben. Allerdings nicht so einfach wie oben dargestellt.
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
Speedy
Beiträge: 16
Registriert: 02.01.2008 22:19

Re: Hilfe bei Übersetzung C in PB

Beitrag von Speedy »

Man wenn ich gewusst hätte das dieses so ein Aufreger wird. Aber schön das man sich mal damit beschäftigt. Danke für den schnellen Antworten
Also den Code denn ich hier reingesetzt habe ist eine Open Source Code. Da gibt es noch verschiedene Dateien, wie du erwähnt hast eine

Resource.rc

Code: Alles auswählen

#include "Header.h"

Leer MENU
{
	MENUITEM "nix", IDM_HILFE
}

HauptMenu MENU
{
	POPUP "&Menu"
	{
		MENUITEM "&Einstellungen\tSTRG+E", IDM_EINSTELLUNGEN
		MENUITEM "Test &starten\tSTRG+S", IDM_START
		MENUITEM "Test &beenden\tSTRG+B", IDM_STOPP
		MENUITEM "&Beenden\tALT+F4", IDM_BEENDEN
	}
	MENUITEM "&Hilfe", IDM_HILFE
}

Tasten ACCELERATORS
{
	"^E", IDM_EINSTELLUNGEN
	"^S", IDM_START
	"^B", IDM_STOPP
}

Einstellungen DIALOG 0, 0, 300, 120
CAPTION "Einstellungen zum Testen"
{
	CTEXT "Startgrösse für Speichertest (in MB)", IDD_TEXT1, 20, 20, 180, 16
	EDITTEXT IDD_START, 200, 20, 80, 16
	CTEXT "Zielgrösse für Speichertest (in MB)", IDD_TEXT2, 20, 40, 180, 16
	EDITTEXT IDD_ENDE, 200, 40, 80, 16
	CTEXT "Schrittweite für Speichertest (in MB)", IDD_TEXT3, 20, 60, 180, 16
	EDITTEXT IDD_SCHRITT, 200, 60, 80, 16
	PUSHBUTTON "OK", IDD_OK, 50, 80, 50, 20
}

eine header.h
eine TestprogrammWin32.dsw
eine TestprogrammWin32.dsp

# Microsoft Developer Studio Project File - Name="TestprogrammWin32" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** NICHT BEARBEITEN **

# TARGTYPE "Win32 (x86) Application" 0x0101

CFG=TestprogrammWin32 - Win32 Debug
!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
!MESSAGE 
!MESSAGE NMAKE /f "TestprogrammWin32.mak".
!MESSAGE 
!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
!MESSAGE 
!MESSAGE NMAKE /f "TestprogrammWin32.mak" CFG="TestprogrammWin32 - Win32 Debug"
!MESSAGE 
!MESSAGE Für die Konfiguration stehen zur Auswahl:
!MESSAGE 
!MESSAGE "TestprogrammWin32 - Win32 Release" (basierend auf  "Win32 (x86) Application")
!MESSAGE "TestprogrammWin32 - Win32 Debug" (basierend auf  "Win32 (x86) Application")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe

!IF  "$(CFG)" == "TestprogrammWin32 - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386

!ELSEIF  "$(CFG)" == "TestprogrammWin32 - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept

!ENDIF 

# Begin Target

# Name "TestprogrammWin32 - Win32 Release"
# Name "TestprogrammWin32 - Win32 Debug"
# Begin Group "Quellcodedateien"

# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File

SOURCE=.\Main.cpp
# End Source File
# Begin Source File

SOURCE=.\Resource.rc
# End Source File
# End Group
# Begin Group "Header-Dateien"

# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File

SOURCE=.\Header.h
# End Source File
# End Group
# Begin Group "Ressourcendateien"

# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
viel Code für wenig Test...

Edit by NicTheQuick: Code-Tags gesetzt
Speddy
Antworten