#include "crt.bi" #define ArgC ((*__p___argc())-1) #ifndef False Const False=0, True=Not False #EndIf #undef GoTo 'Jojo hat Recht, danke ;-)) '+-----------------------------------------------------------------------------------+ '| Header: Bestimmen der Übergabeparameter | '| AnzeigeCheck:|Il1 sind:Alt-0124, Großes i, kleines L, Eins „ä”öüáߎę֚Üñ±ø°¸©| Const Autor="BitWise-d.bas v1.1 ¸2012 by ytwinky, MD"' | '| (Tastenkombination: keine) | '| Zweck : Umrechner für die verschiedenen Zahlensystem die FreeBASIC beherrscht | '| Getestet mit dem aktuellen fbc und FBEdit | '+-----------------------------------------------------------------------------------+ '(Anmerkung zu den Sonderzeichen: zuerst steht das DOS-Zeichen, danach das Windowszeichen) Const Esc=!"\27", Lf=!"\n", F1=!"\255;", light=8, red=4 Function ReadKey(s As String="") As String If s<>"" Then Print s; s="" Do s=UCase(InKey) Sleep(1) Loop Until s<>"" Return s End Function Function GetVal(byVal Which As String, byVal Value As Integer) As Integer Var w="" Print "Neuer Wert von " &Which &":"; Input "", w If w<>"" Then Return ValInt(w) Return Value End Function Function MenuChar(byVal s As String, byVal First As Integer=1, byVal nFG As Integer=light+red)As String Var cFG=LoWord(Color) If First<>1 Then Print Left(s, First-1); Color nFG Print Chr(s[First-1]); Color cFG Return Mid(s, First+1) End Function Function ShowVar(byVal Which As Integer) As String Var FInt=Str(Which) FInt=String(11-Len(FInt), " ") &FInt Return FInt &" " & Bin(Which, 32) &" " & Hex(Which, 8) &" " & Oct(Which, 12) End Function Var m="", n="", i=0, fun="SHR", b=18687, v=8, r=0 Cls Print Autor &Lf &"32-Bit Integer(+|-)" &Space(18) &"Bin" &Space(18) &"Hex" &Space(7) &"Oct" Do For i=0 To 6 Locate 9+i, 1 Print String(79, " ") 'Eingabe löschen.. Next Locate 3, 1' Menü aufbauen.. Print MenuChar(" Basis:", 6) &ShowVar(b) Print MenuChar(" Wert:", 7) &ShowVar(v) Select Case fun Case "AND" : r=b AND v Case "ANDALSO" : r=b ANDALSO v Case "OR" : r=b OR v Case "ORELSE" : r=b ORELSE v Case "XOR" : r=b XOR v Case "EQV" : r=b EQV v Case "IMP" : r=b IMP v Case "SHL" : r=b SHL v Case "SHR" : r=b SHR v End Select Print " Ergebnis:" &ShowVar(r) Print " Aktuell:Ergebnis=Basis " &fun &" Wert " Print "Funktionen:"; MenuChar("NOT "); MenuChar("AND "); MenuChar("ANDALSO ", 3); MenuChar("OR "); MenuChar("ORELSE ", 5); Print MenuChar("XOR ");MenuChar("EQV "); MenuChar("IMP "); MenuChar("SHL ", 3); MenuChar("SHR ", 3); Print MenuChar("Toggle "); MenuChar("Hilfe(F1)");!"\nAuswahl(Esc beendet..): \b\b"; Do m=ReadKey() Loop Until Instr("BWNAOXEILRTHDS" &F1 &Esc, m) If m=F1 Then m="F1" Print m Select Case m Case "N" Print MenuChar("Not Basis oder Not ", 5); MenuChar("Wert:"); Do n=ReadKey() Loop Until Instr("BW" &Esc, n) If n="B" Then b=Not b If n="W" Then v=Not v Case "A" : fun="AND" Case "D" : fun="ANDALSO" Case "O" : fun="OR" Case "S" : fun="ORELSE" Case "X" : fun="XOR" Case "E" : fun="EQV" Case "I" : fun="IMP" Case "R" : fun="SHR" Case "L" : fun="SHL" Case "T" Input "Welches Bit in Basis umschalten?Bit-Nr.:", i If i>=0 And i<32 Then b Xor=2^i Else Print "Wissen Sie wirklich, was Sie tun?^^"; GetKey EndIf Case "B" : b=GetVal("Basis", b) Case "W" : v=GetVal("Wert", v) Case "H", "F1" n=!"Dies ist ein einfaches Programm zum Spielen mit Bit-Operationen\n" n &=!"Nur Basis, Wert eingeben und die gewnschte Funktion w„hlen, das war's..\n" n &=!"Die gew„hlte Funktion wird angezeigt, wenn beide Zahlen betroffen sind.\n" n &=!"Erlaubte (Menu-)Buchstaben sind rot, so lassen sie sich leicht erkennen..\n" n &=!"Beachte: auch Eingaben per &H.., &B.. und &O.. sind erlaubt..\n" n &=!"Im Eingabe-Modus: Ein Druck auf Enter „ndert nichts ;-))\n" Print n &!"Argumente von der Befehlszeile werden nicht ausgewertet!"; GetKey End Select Loop Until m=Esc End