for (int i = startwert; i <= endwert; ++i) {
System.out.println(((i % 2) == 0) ? (""+i) : "");
}
Definitiv, kommt nur darauf an was du damit machen willst :P
Wenn du nur den Inhalt einer Textdatei auslesen willst reicht das hier vollkommen aus:
String getFileContents(String file) {
FileInputStream ifs = new FileInputStream(new File(file));
Scanner scn = new Scanner(ifs);
StringBuffer buf = StringBuffer();
while (scn.hasNextLine()) buf.append(scn.nextLine());
ifs.close();
return buf.toString();
}
Mit Notepad kannst du eigentlich rein gar nichts an Binärdateien verändern. Wenn du es troztzdem versuchst, stürzt das Programm höchstwahrscheinlich an einer bestimmten Stelle ab oder wird erst gar nicht von Windows geladen.
Eine Ausnahme gibt es allerdings, nämlich Zeichenketten. Die solltest du auch problemlos mit dem Notepad bearbeiten können. Dabei musst du allerdings beachten dass die Zeichenkette nach der Bearbeitung immer noch genau die gleiche Länge haben muss wie vorher.
Wenn du die Datei nicht mit Notepad modifizieren willst, kannst ich dir zum allgemeinen Aufbau von Binärdateien (PE=Portable Executable unter Windows) sagen.
Die allerersten Daten im Programm, also Offset 0, ist immer der sog. DOS-Header, der noch aus alten Zeiten von Microsoft stammt, und ist wie folgt aufgebaut:
typedef struct _IMAGE_DOS_HEADER
{
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;
WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew; // Zeiger auf neuen (NT-)header
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
Die Variable e_lfanew ist eine Art Zeiger auf den Windows-NT-Header, der einiges mehr über die Datei aussagt. Eigentlich nicht direkt ein Zeiger, aber es gilt dafür folgendes:
PVOID ImageBase;
IMAGE_DOS_HEADER *hdr = (IMAGE_DOS_HEADER*)ImageBase;
IMAGE_OPTIONAL_HEADER *hdrNT = (IMAGE_OPTIONAL_HEADER*)((DWORD)ImageBase + hdr->e_lfanew);
der IMAGEOPTIONALHEADER sieht dann so aus:
typedef struct _IMAGE_OPTIONAL_HEADER {
WORD Magic;
BYTE MajorLinkerVersion;
BYTE MinorLinkerVersion;
DWORD SizeOfCode;
DWORD SizeOfInitializedData;
DWORD SizeOfUninitializedData;
DWORD AddressOfEntryPoint;
DWORD BaseOfCode;
DWORD BaseOfData;
DWORD ImageBase;
DWORD SectionAlignment;
DWORD FileAlignment;
WORD MajorOperatingSystemVersion;
WORD MinorOperatingSystemVersion;
WORD MajorImageVersion;
WORD MinorImageVersion;
WORD MajorSubsystemVersion;
WORD MinorSubsystemVersion;
DWORD Win32VersionValue;
DWORD SizeOfImage;
DWORD SizeOfHeaders;
DWORD CheckSum;
WORD Subsystem;
WORD DllCharacteristics;
DWORD SizeOfStackReserve;
DWORD SizeOfStackCommit;
DWORD SizeOfHeapReserve;
DWORD SizeOfHeapCommit;
DWORD LoaderFlags;
DWORD NumberOfRvaAndSizes;
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;
Ist zwar vielleicht nicht ganz das, wonach du gefragt hast, aber ich hoffe ich konnte ein Paar Leuten helfen.
Jo das kenne ich auch ..
Ich löse das immer indem ich ca. jede 3/4h mein Handgelenk, naja ich sage mal wieder einrenke :D Aber nach einer weile CS:GO gewöhnt man sich dran ^^
Und stell sicher dass du DPI auf ca. 400 hast (kommt auf deine Auflösung an); EPP ausgeschaltet hast und Mausgeschwindigkeit auf 6/11
C++ ist zwar oft ein Garant für Geschwindigkeit, aber halt nicht immer (Minecraft z.B. läuft in der Java-VM) ^^
Ich persönlich würde mit Java anfangen (z.B. http://lwjgl.org/, bisschen mit OpenGL / OpenAL experimentieren ; dort gibt es auch tutorials) Später vielleicht C++/DirectX :)
Die muss man in manchen Situationen einfach mal ignorieren. Irgendwann werden sie anfangen es zu merken.