Habs ein paar mal mit 20 Keys a' 40 Zeichen in 5-er Abschnitten getestet...die letzten beiden waren immer exakt gleich, sonst gab es aber keine duplikate.
Welchen hast du denn jetzt ausprobiert?
Ich verwende ja die Funktionen von Awesome.
Habs ein paar mal mit 20 Keys a' 40 Zeichen in 5-er Abschnitten getestet...die letzten beiden waren immer exakt gleich, sonst gab es aber keine duplikate.
Welchen hast du denn jetzt ausprobiert?
Ich verwende ja die Funktionen von Awesome.
Hm, Also ich glaube eine genaue Antwort kann man nicht geben.
Mir wurde einst gesagt, dass wenn man GUI-Anwendungen programmieren will, dann C#/Java.
Ich finde Persönlich .NET aber schöner. Mittlererweile gibt es so viele Java Entwickler, dass ich es zwar auch gelernt habe,
aber eben dennoch lieber mit C#/WPF arbeite.
Es sind aber zur Zeit auch start die Mobile-Platformen am kommen, also Android/iOS demnach Java oder Objectiv C.
Web-Plattformen HTML5, CSS3, jQuery, ...
Wenn du gut bist, versuche ABAP zu lernen. http://de.wikipedia.org/wiki/ABAP
Interessanter weise auch noch häufig gesucht und vorallem gut bezahlt. SAP halt.
Aber da man heut zutage eh fast alles Kombinieren kann... nun was soll man sagen :p
Lerne das was dir Spaß macht. Zwinge dir nicht etwas auf, was du vielleicht gar nicht wirklich lernen willst.
Persönliche einschätzung:
(1 sehr gut, 2 gut,...6 ungenügend)
C#/WPF mit Visual Studio 2010+: 2+
C# mit MonoDevelop: 3+
Java mit NetBeans: 2+
Java mit Eclipse: 3
JavaFx mit NetBeans: 2+
PHP mit Aptana Studio: 2
Android mit Android Studio: 2+
Android mit Eclipse: 4
C++/C mit Visual Studio 2012+: 2
Ist nicht ganz sauber und funktioniert auch noch nicht so ganz. Viele Keys sind doppelt weil random zu langsam xD
Ist in WPF mit .NET 4
Hallo alle zusammen,
ich fände es super wenn es mehrere Syntax highlighter gäbe.
Aktuell gibt es ja:
- "SQL"
- PHP
- AutoIt
Toll wäre es, wenn wenigstens noch die Programmiersprachen aus "Andere Programmiersprachen"
vertreten wären. Häufig zu sehen:
- C/C++
- Java
- C#
Mit freundlichen grüßen
BuFF
Danke für die nette Funktion. [ ... ]
Auf alle Fälle eine nützliche Funktion um kleinen Programmen schnell ein nettes Menü zu verpassen!
Danke. Endlich mal ein Feedback zu meinen Quellcodes Sonst werden wie nur still gedownloadet mehr nicht.
Aber freut mich wenn es dir hilft. Oder auch anderen. War auch nur so dahin geschrieben. Eigentlich achte ich mittlererweile sehr auf ungarische notation und programmiere auch fast nur noch auf englisch. Aber das war eben einfach nur fürs Studium damit es schöner aussieht
Ein Update.
Es muss ein NULL als letzter Parameter übergeben werden, damit das Programm nicht abstürzt.
Menü-Kapslung funktioniert dann auch.
Hallo Leute,
ich habe im Studium einfach mal ein einfach anzuwendenes Menü für die Konsole in C geschrieben.
Und ist komplett dynamisch.
[Blockierte Grafik: http://lvps178-77-72-233.dedicated.hosteurope.de/~ron/temp/Unbenannt.png]
Das Menü ist einfach anzuwenden:
showMenu(
&aufgabe_1, "Aufgabe 1: Doller<->Euro Umrechner",
&aufgabe_2, "Aufgabe 2: printTable",
&aufgabe_3, "Aufgabe 3: Datum Kontrolle",
&zusatzAufgabe_TageBisWeihnachten, "Zusatzaufgabe Tage bis Weihnachten",
&zusatzAufgabe_DatumsDifferenz, "Zusatzaufgabe Tages Differenz",
&zusatzAufgabe_Ostersonntag, "Zusatzaufgabe Ostersonntag",
&zusatzAufgabe_TageBisWeihnachtenKontrolle,"Zusatzaufgabe Tage bis Weihnachten Kontrolle",
&zusatzAufgabe_DatumsDifferenzKontrolle, "Zusatzaufgabe Tages Differenz Kontrolle",
&zusatzAufgabe_OstersonntagKontrolle, "Zusatzaufgabe Ostersonntag Kontrolle",
NULL
);
Also die Funktionen wie bsp.: aufgabe_1 ist eine: void aufgabe_1(void)
void showMenu(void(*function)(void), ...)
Also immer eine Funktion dann der Text. Das beliebig oft in Kombination.
Ich füge nur die Quelldatei ein, den Header kann man sich ja selbst schreiben. Wer nicht weiß wie:
Prototypen
http://de.wikibooks.org/wiki/C-Programmierung:_Funktionen
Quelltext der Funktion
#include "Hilfen.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#define HILFEN_AUSGABE
#define HILFEN_EXITMENU
void readDouble(double *dValue,char *szText)
{
int bIsEingabeOk = 1; //Als boolean behandeln
do
{
if (bIsEingabeOk == 0)
{
printf_s("\nFalsches Format bitte nur Zahlen und Punkt verwenden. (x.xx)\n");
fflush(stdin); //Eingabe Puffer l�schen.
}
printf_s("\n%s ", szText);
bIsEingabeOk = scanf_s("%lf", dValue);
} while (bIsEingabeOk == 0);
}
void readInt(int *nValue, char *szText)
{
int bIsEingabeOk = 1; //Als boolean behandeln
do
{
if (bIsEingabeOk == 0)
{
printf_s("\nFalsches Format bitte nur Zahlen verwenden. (x)\n");
fflush(stdin); //Eingabe Puffer l�schen.
}
printf_s("\n%s ", szText);
bIsEingabeOk = scanf_s("%i", nValue);
} while (bIsEingabeOk == 0);
}
void showMenu(void(*function)(void), ...)
{
/*Ausgabe*/ //Nicht Zwingend notwendig ist der Rahmen
/*Einfach #define HILFEN_AUSGABE Auskommentieren um Rahmen zu entfernen*/
/*Einfach #define HILFEN_EXITMENU Auskommentieren um das Beenden des Men�s zu deaktivieren*/
va_list argptr;
char* strArgs;
int nZaehler = 0;
int nEingabe = 0;
int nPointer = 0;
int nMenuSize = 1;
int nClearScreen = 0;
int nExitMenue = 0;
int nExitProgramm = 0;
void(*newFunction)(void);
do
{
nZaehler = 1;
nEingabe = 0;
nPointer = 2;
nMenuSize = 1;
nClearScreen = 0;
nExitMenue = 0;
nExitProgramm = 0;
va_start(argptr, function);
strArgs = va_arg(argptr, char*);
#ifdef HILFEN_AUSGABE
/*Ausgabe*/printf_s("\n%c", 218);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 191);
/*Ausgabe*/printf_s("%c", 195);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 180);
/*Ausgabe*/printf_s("%c%27cMen\x81%29c%c\n", 179, 32, 32, 179);
/*Ausgabe*/printf_s("%c", 195);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 180);
#endif
while (strArgs != NULL)
{
#ifdef HILFEN_AUSGABE
printf_s("%c %3i - %-53s%c\n", 179, nZaehler++, strArgs, 179);
#else
printf_s("%3i - %-53s\n",nZaehler++, strArgs);
#endif
newFunction = va_arg(argptr, void*);
if (newFunction == NULL)
break;
strArgs = va_arg(argptr, char*);
};
va_end(argptr);
#ifdef HILFEN_AUSGABE
/*Ausgabe*/printf_s("%c", 195);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 180);
#endif
nClearScreen = nZaehler;
#ifdef HILFEN_AUSGABE
printf_s("%c %3i - %-53s%c\n", 179, nClearScreen, "Bildschirm leeren", 179);
#else
printf_s("%3i - %-53s\n", nClearScreen, "Bildschirm leeren");
#endif
#ifdef HILFEN_EXITMENU
nExitMenue = nClearScreen + 1;
#ifdef HILFEN_AUSGABE
printf_s("%c %3i - %-53s%c\n", 179, nExitMenue, "Men\x81 beenden", 179);
#else
printf_s("%3i - %-53s\n", nExitMenue, "Men\x81 beenden");
#endif
nExitProgramm = nExitMenue + 1;
#else
nExitProgramm = nClearScreen + 1;
#endif
#ifdef HILFEN_AUSGABE
printf_s("%c %3i - %-53s%c\n", 179, nExitProgramm, "Programm beenden", 179);
#else
printf_s("%3i - %-53s\n", nExitProgramm, "Programm beenden");
#endif
#ifdef HILFEN_AUSGABE
/*Ausgabe*/printf_s("%c", 195);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 180);
/*Ausgabe*/printf_s("%c", 192);
/*Ausgabe*/for (nMenuSize = 1; nMenuSize <= 60; nMenuSize++) printf_s("%c", 196);
/*Ausgabe*/printf_s("%c\n", 217);
#endif
readInt(&nEingabe, "Ihre Auswahl:");
if (nEingabe < 1 nEingabe > nExitProgramm)
{
printf_s("Keine g\x81ltige Eingabe!\nBitte einen Men\x81punkt zwischen 1 und %i ausw\x84hlen!", nExitProgramm);
continue;
}
printf_s("\n");
if (nEingabe == nExitMenue)
return;
if (nEingabe == nExitProgramm)
exit(EXIT_SUCCESS);
if (nEingabe == nClearScreen)
system("cls");
if (nEingabe == 1)
{
function();
continue;
}
va_start(argptr, function);
strArgs = va_arg(argptr, char*);
for (nPointer; nPointer < nZaehler; nPointer++)
{
newFunction = va_arg(argptr, void*);
strArgs = va_arg(argptr, char*);
if (nEingabe == nPointer)
{
newFunction();
break;
}
}
va_end(argptr);
} while (1);
}
EDIT: Habe nun noch hinzugefügt,dass bei Release Konfiguration (wenn bei showMenu der letzte Parameter "NULL" ist) das Programm nicht mehr abstürtzt. Hatte nur bei den **char Variablen auf NULL geprüft. Gefixt.
Hallo Leute,
nach langer Zeit mal, dachte ich, ich schreibe mal wieder
Ich habe MoveTo geschrieben, weil ich immer wieder meinen Desktop mit Daten voll haue.
Am Ende geht es dann "Alle makieren -> Andere Festplatte -> Ordner -> \"Desktop_jahr_monat_tag\" -> Alles einfügen.
Weil ich aber zu faul bin das immer zu machen, habe ich nun das Programm geschrieben, weil es das selber macht.
Mögliche Variablen sind {year}, {month}, {day} und {name}.
Wobei bei {name} in dem Fall abgefragt wird wie denn der Name des Ordners sein soll. (Habe allerdings nicht auf nur Systempfad zeichen geachtet)
Nun denn wer sich das mal ansehen möchte oder vielleicht auch gebrauchen kann.
Man kann sich irgendwo einen Ordner erstellen, das Programm rein ziehen. Umbenennen.
Umbenennen muss man ggf. da dadurch das Programm "geändert" wird.
Kann man gut für shell:SendTo verwenden. Bedeutet das die Verknpüfung dann bei "Senden an" auftaucht.
Bsp.:
MoveTo.exe -> MoveTo.mt
in MoveTo.mt -> Editor -> Pfad eingeben
DesktopBackup.exe -> DesktopBackup.mt
in DesktopBackup.mt -> Editor -> Pfad eingeben
Das Programm erstellt die Datei aber selber mit einem Default Pfad: AktuellerPfad\Backup_{year}_{month}_{day}\
Quellcode/Projekt/Release als Download.
Main
using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Linq;
namespace MoveTo{ class Program { static void Main(string[] args) { string strPath = Environment.CurrentDirectory + @"\Backup_{0}_{1}_{2}"; string strFilePath = string.Format(strPath, DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); string strSettingPath = Process.GetCurrentProcess().ProcessName + ".mt"; if (File.Exists(strSettingPath)) { strFilePath = File.ReadAllText(strSettingPath); if (string.IsNullOrWhiteSpace(strFilePath)) { Console.WriteLine("Please edit config file!"); Console.WriteLine("\n\nPress any key to exit..."); Console.ReadKey(); return; } if (strFilePath.Contains("{name}")) { ConsoleKeyInfo consoleKeyInfo; string strTemp; do {
Console.WriteLine("Please enter a folder name that should create.\r\nYou can use: {year},{day},{month}\r\n"); strTemp = Console.ReadLine(); Console.WriteLine("You choose {0}, is this right?\r\nY/y = yes and N/n = no or Q/q = quit\r\n", strTemp); consoleKeyInfo = Console.ReadKey(false); } while (consoleKeyInfo.Key == ConsoleKey.N consoleKeyInfo.Key == ConsoleKey.Q); if (consoleKeyInfo.Key == ConsoleKey.Q) return;
strFilePath = strFilePath.Replace("{name}", strTemp); } strFilePath = strFilePath.Replace("{year}", DateTime.Now.Year.ToString()); strFilePath = strFilePath.Replace("{day}", DateTime.Now.Day.ToString()); strFilePath = strFilePath.Replace("{month}", DateTime.Now.Month.ToString()); strFilePath = strFilePath[strFilePath.Length - 1] == '\\' ? strFilePath : strFilePath + ""; } else { Console.WriteLine("Config file not found. Create new one."); File.Create(strSettingPath).Close(); File.WriteAllText(strSettingPath, Environment.CurrentDirectory + @"\Backup_{year}_{month}_{day}"); Console.WriteLine("Please edit! You can use: {year},{day},{month},{name}"); Console.WriteLine("\n\nPress any key to exit..."); Console.ReadKey(); return; } List<FileBackupModel> listFileBackupModel = new List<FileBackupModel>(); List<FolderBackupModel> listFolderBackupModel = new List<FolderBackupModel>(); if (!System.IO.Directory.Exists(strFilePath)) { System.IO.Directory.CreateDirectory(strFilePath); Console.WriteLine("\r\nCreate directory...\r\n{0}", strFilePath); } Console.WriteLine();
for (int i = 0; i < args.Length; i++) { try { if (Directory.Exists(args[i])) { DirectoryInfo directoryInfoOld = new DirectoryInfo(args[i]); DirectoryInfo directoryInfoNew = new DirectoryInfo(GetUniquePathname(strFilePath + directoryInfoOld.Name));
listFolderBackupModel.Add(new FolderBackupModel() { NewPath = directoryInfoNew.FullName, OldPath = directoryInfoOld.FullName }); Console.WriteLine("Add directory...\r\n{0}", args[i]); } else if (System.IO.File.Exists(args[i])) { System.IO.FileInfo fileInfoOld = new System.IO.FileInfo(args[i]); System.IO.FileInfo fileInfoNew = new System.IO.FileInfo(GetUniqueFilename(strFilePath + fileInfoOld.Name));
listFileBackupModel.Add(new FileBackupModel() { OldFile = fileInfoOld.Name, OldPath = fileInfoOld.DirectoryName, NewFile = fileInfoNew.Name, NewPath = fileInfoNew.DirectoryName }); Console.WriteLine("Add file...\r\n{0}", args[i]); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } Console.WriteLine();
#region FileBackup try { for (int i = 0; i < listFileBackupModel.Count; i++) { try { System.IO.File.Copy(listFileBackupModel[i].getOldFilepath(), listFileBackupModel[i].getNewFilepath()); Console.WriteLine("Copy file...\r\n{0}", listFileBackupModel[i].OldFile); } finally { if (System.IO.File.Exists(listFileBackupModel[i].getNewFilepath())) listFileBackupModel[i].IsCopy = true; } } Console.WriteLine(); if (listFileBackupModel.Count(p => p.IsCopy == true) != listFileBackupModel.Count) Console.WriteLine("Not all files are copied?!"); Console.WriteLine(); for (int i = 0; i < listFileBackupModel.Count; i++) { System.IO.FileInfo fileInfoOld = new System.IO.FileInfo(listFileBackupModel[i].getOldFilepath()); System.IO.FileInfo fileInfoNew = new System.IO.FileInfo(listFileBackupModel[i].getNewFilepath()); Console.WriteLine("Check file by byte...{0} old {1} <-> new {2}", fileInfoOld.Name, fileInfoOld.Length, fileInfoNew.Length); if (fileInfoNew.Length.Equals(fileInfoOld.Length)) { fileInfoOld.Delete(); Console.WriteLine("Delete old file...{0}", fileInfoOld.Name); } } } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } #endregion
#region FolderBackup try { for (int i = 0; i < listFolderBackupModel.Count; i++) { try { DirectoryCopy(listFolderBackupModel[i].OldPath, listFolderBackupModel[i].NewPath,true); Console.WriteLine("Copy file...\r\n{0}", listFolderBackupModel[i].OldPath); } finally { if (System.IO.Directory.Exists(listFolderBackupModel[i].NewPath)) listFolderBackupModel[i].IsCopy = true; } } Console.WriteLine(); if (listFolderBackupModel.Count(p => p.IsCopy == true) != listFolderBackupModel.Count) Console.WriteLine("Not all directories are copied?!"); Console.WriteLine(); for (int i = 0; i < listFolderBackupModel.Count; i++) { System.IO.DirectoryInfo fileInfoOld = new System.IO.DirectoryInfo(listFolderBackupModel[i].OldPath); System.IO.DirectoryInfo fileInfoNew = new System.IO.DirectoryInfo(listFolderBackupModel[i].NewPath); Console.WriteLine("Check directory by files...{0} old {1} <-> new {2}", fileInfoOld.Name, fileInfoOld.GetFiles().Count(), fileInfoNew.GetFiles().Count()); if (fileInfoNew.GetFiles().Count().Equals(fileInfoOld.GetFiles().Count())) { fileInfoOld.Delete(true); Console.WriteLine("Delete old directory...{0}", fileInfoOld.Name); } } } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } #endregion
Console.WriteLine("\n\nPress any key to exit..."); Console.ReadKey(); }
public static string GetUniqueFilename(string fullPath) { if (!Path.IsPathRooted(fullPath)) fullPath = Path.GetFullPath(fullPath); if (File.Exists(fullPath)) { String filename = Path.GetFileName(fullPath); String path = fullPath.Substring(0, fullPath.Length - filename.Length); String filenameWOExt = Path.GetFileNameWithoutExtension(fullPath); String ext = Path.GetExtension(fullPath); int n = 1; do { fullPath = Path.Combine(path, String.Format("{0}_{1}{2}", filenameWOExt, (n++), ext)); } while (File.Exists(fullPath)); } return fullPath; }
public static string GetUniquePathname(string fullPath) { if (!Path.IsPathRooted(fullPath)) fullPath = Path.GetFullPath(fullPath); if (Directory.Exists(fullPath)) { String filename = Path.GetFileName(fullPath); String path = fullPath.Substring(0, fullPath.Length - filename.Length); String filenameWOExt = Path.GetFileNameWithoutExtension(fullPath); String ext = Path.GetExtension(fullPath); int n = 1; do { fullPath = Path.Combine(path, String.Format("{0}_{1}{2}", filenameWOExt, (n++), ext)); } while (File.Exists(fullPath)); } return fullPath; } public static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) { DirectoryInfo dir = new DirectoryInfo(sourceDirName); DirectoryInfo[] dirs = dir.GetDirectories();
if (!dir.Exists) { throw new DirectoryNotFoundException( "Source directory does not exist or could not be found: " + sourceDirName); }
if (!Directory.Exists(destDirName)) { Directory.CreateDirectory(destDirName); }
FileInfo[] files = dir.GetFiles(); foreach (FileInfo file in files) { string temppath = Path.Combine(destDirName, file.Name); file.CopyTo(temppath, false); }
if (copySubDirs) { foreach (DirectoryInfo subdir in dirs) { string temppath = Path.Combine(destDirName, subdir.Name); DirectoryCopy(subdir.FullName, temppath, copySubDirs); } } } }}
FileModel
namespace MoveTo{ public class FileBackupModel { private string oldFile;
public string OldFile { get { return oldFile; } set { oldFile = value; } } private string newFile;
public string NewFile { get { return newFile; } set { newFile = value; } } private string oldPath;
public string OldPath { get { return oldPath; } set { oldPath = value; } } private string newPath;
public string NewPath { get { return newPath; } set { newPath = value; } }
private bool isCopy = false;
public bool IsCopy { get { return isCopy; } set { isCopy = value; } }
public string getOldFilepath() { return string.Format("{0}\\{1}",oldPath,oldFile); }
public string getNewFilepath() { return string.Format("{0}\\{1}", newPath, newFile); } }}
FolderModel
namespace MoveTo{ public class FolderBackupModel { private string oldPath;
public string OldPath { get { return oldPath; } set { oldPath = value; } } private string newPath;
public string NewPath { get { return newPath; } set { newPath = value; } } private bool isCopy = false;
public bool IsCopy { get { return isCopy; } set { isCopy = value; } } }}
Nehme allerdings keine Verantwortung für verloren gegangene Daten.
Prüfe schon ob Byte Anzahl oder Dateianzahl über einstimmen und dann lasse ich die sachen erst löschen.
Bisher gab es keine Probleme!
Meine Maus zappelt immer weil ich da Katzenhaare drin habe -.- ....
Großes Problem bei einer DLL ist immer: Jeder hans und franz kann eine DLL Programmieren, wenn der Rückgabewert der DLL 1 für ist okay und 0 für ist nicht okay ist, kann man einfach eine DLL schreiben mit dem Funktionsnamen und return 1; dort reinschreiben.
Ja darüber habe ich mir auch schon gedanken gemacht...
Und ja hatte eben an einen komplexeren rückgabewert wie eine Zahlenkombo oder so gedacht.
Ist gar nicht so leicht sich dazu etwas zu überlegen, gel?
Also es ist klar dass alles irgendwo knackbar ist es geht ja um den Normal-User der Programme über eine Lizenz freischaltet und dann eben meint er könnte einfach den Programmordner kopieren und verteilen.
Jetzt kommt nicht an mit "Dann schreibe in die Registy" Das wäre doch zu einfach :p
Ist natürlich klar das wenn jemand unbedingt etwas Freischalten will, und das gewisse Know-how hat das umgehen kann.
Aber eben die Standard-User nicht.
Okay. Hat denn wer noch Ideen wie man es noch besser schützen kann?
Natürlich ist nie etwas 100% sicher, aber ich möchte einfach einen hohen schutz haben.
Also wenn jemand Ideen oder anregungen hat es zu verbessern bitte her damit
Vll. hat er nicht gesehen dass die Hilfe und Unterstützung nur für AutoIt gedacht ist, und sowas ins Offtopic gehört.
Richtig. Kann ich das verschieben oder muss das ein Mod machen?
Hallo Leute,
da ich mal wieder etwas in C programmiere und in letzter Zeit öfter gelesen habe, das Menschen ihre Programme schützen wollen,
bin ich zu dem Entschluss gekommen dies mal in C umzusetzen.
Nun folgenes:
Lizenzen werden von deinem Server bereitgestellt ggf. via Mail versand.
-> Benutzer erwirbt Lizenz
-> Benutzer gibt diese im Programm ein
-> Programm prüft auf gültigkeit
-> Programm schreibt Binär gewisse Daten wie Mainboard Seriennummer an die *.dll an
-> Programm startet am registrierten Rechner
-> Programm prüft ob die Seriennummer übereinstimmt und startet das Programm bzw. führt es fort
-> Programm wird an einem nicht registrierten Rechner gestartet
-> Programm prüft ob die Seriennummer übereinstimmt -> Schlägt fehl -> Gibt Fehlermeldung aus -> Beendet das Programm
Findet ihr den Gedankengang richtig?
Oder habt ihr bessere Ideen?
Lasst es mich wissen
Heißt es nicht "AutoIt"? Anstatt "AutoIT"?
Hier vielleicht kannst du damit was anfangen. Ist zwar C++ aber sollte auch in Autoit umsetzbar sein.
Nicht wundern einige includes sind zuviel
Header
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#include <math.h>
using namespace std;
/*
Funktionen:
una (Unärsystem)
bin (Binärsystem)
tri (Ternärsystem)
qua (Quaternärsystem)
qui (Quinärsystem)
sen (Senärsystem)
sep (Septenärsystem)
non (Nonärsystem)
vig (Vigesimalsystem)
allsys (binär -> k.A.)[2er->36ersystem]
;===============================================================================
;
; Funktions Name: una
; Zahlensystem:1
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to una)
; Parameter(s): unsigned int dec_zahl
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: bin
; Zahlensystem:2
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to bin)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: tri
; Zahlensystem:3
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to tri)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: qua
; Zahlensystem:4
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to qua)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: qui
; Zahlensystem:5
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to qui)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: sen
; Zahlensystem:6
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to sen)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: sep
; Zahlensystem:7
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to sep)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: non
; Zahlensystem:9
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to non)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: vig
; Zahlensystem:20
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to vig)
; Parameter(s): unsigned int dec_zahl ; [unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
;===============================================================================
;
; Funktions Name: allsys
; Zahlensystem:2-36
; Beschreibung: Gibt einen String mit umgewandelter Decimalzahl wieder (dec to ??)
; Parameter(s): unsigned int dec_zahl ; unsigned short int zahlen_system ;[unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): String
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
Hinweis: Jeder der Funktionen ist auch als "void" verfügbar einfach ein "v" vor dem funktionsnamen fügen
bspw. vbin(12); //gibt die zahl mittels cout sofort aus.
Hinweis: Funktionen mit "_" sind eigentlich interner nutzung allerdings werden hier zahlen zurückgegeben
die anschließend ausgewertet werden bei bedarf kann man diese auch nutzen dies gilt für alle "_" funktionen:
;===============================================================================
;
; Funktions Name: _bin
; Zahlensystem:2
; Beschreibung: Gibt den rest einer teilung wieder (sofern eine stelle abgegeben wurde)
; Parameter(s): unsigned int dec_zahl ;[unsigned int stellen]
; Vorraussetztung(en): Keine.
; Rückgabewert(e): unsigned int
; Autor: BuFF (Ron Welzel)
;
;===============================================================================
die funktion "letter(unsigned short int nummer) gibt den Buchstaben ab 10 wieder wegen 0-9 decimalzahlen >9 buchstaben
*/
#ifndef _zahlensystem_h_
#define _zahlensystem_h_
//interne nutzung
std::string convertInt(unsigned int zahl);
std::string letter(unsigned short int nummer);
//unär 1 system
void vuna(unsigned int number);
std::string una(unsigned int number);
//binär 2ersystem
unsigned int _bin(unsigned int zahl,unsigned int stelle=0);//intern
void vbin(unsigned int zahl);
std::string bin(unsigned int zahl,unsigned int stellen=8);
//trinär 3ersystem
unsigned int _tri(unsigned int x,unsigned int stelle=0);//intern
std::string tri(unsigned int zahl,unsigned int stellen=8);
void vtri(unsigned int zahl);
//Quarternär 4ersystem
unsigned int _qua(unsigned int x,unsigned int stelle=0);//intern
std::string qua(unsigned int zahl,unsigned int stellen=8);
void vqua(unsigned int zahl);
//Quinär 5ersystem
unsigned int _qui(unsigned int x,unsigned int stelle=0);//intern
std::string qui(unsigned int zahl,unsigned int stellen=8);
void vqui(unsigned int zahl);
//Senär 6ersystem
unsigned int _sen(unsigned int x,unsigned int stelle=0);//intern
std::string sen(unsigned int zahl,unsigned int stellen=8);
void vsen(unsigned int zahl);
//Septenär 7ersystem
unsigned int _sep(unsigned int x,unsigned int stelle=0);//intern
std::string sep(unsigned int zahl,unsigned int stellen=8);
void vsep(unsigned int zahl);
//Nonär 9ersystem
unsigned int _non(unsigned int x,unsigned int stelle=0);//intern
std::string non(unsigned int zahl,unsigned int stellen=8);
void vnon(unsigned int zahl);
//Vigesimal 20ersystem
unsigned int _vig(unsigned int x,unsigned int stelle=0);//intern
std::string vig(unsigned int zahl,unsigned int stellen=8);
void vvig(unsigned int zahl);
//allsystem 2-36
unsigned int _allsys(unsigned int x,unsigned short int zsystem,unsigned int stelle=0);//intern
std::string allsys(unsigned int zahl,unsigned short int zsystem,unsigned int stellen=8);
void vallsys(unsigned int zahl,unsigned short int zsystem);
#endif
Alles anzeigen
CPP
#include <iostream>
#include <iomanip>
#include <string>
#include <windows.h>
#include <math.h>
#include "zahlensystem.h"
/////////////////////////////////////////////////////////////////////////// Interne nutzung
std::string convertInt(unsigned int number)
{
if (number == 0)
return "0";
std::string temp="";
std::string returnvalue="";
while (number>0)
{
temp+=number%10+48;
number/=10;
}
for (unsigned int i=0;i<temp.length();i++)
returnvalue+=temp[temp.length()-i-1];
return returnvalue;
}
std::string letter(unsigned short int nummer)
{
switch(nummer)
{
case 10: return "A"; break;
case 11: return "B"; break;
case 12: return "C"; break;
case 13: return "D"; break;
case 14: return "E"; break;
case 15: return "F"; break;
case 16: return "G"; break;
case 17: return "H"; break;
case 18: return "I"; break;
case 19: return "J"; break;
case 20: return "K"; break;
case 21: return "L"; break;
case 22: return "M"; break;
case 23: return "N"; break;
case 24: return "O"; break;
case 25: return "P"; break;
case 26: return "Q"; break;
case 27: return "R"; break;
case 28: return "S"; break;
case 29: return "T"; break;
case 30: return "U"; break;
case 31: return "V"; break;
case 32: return "W"; break;
case 33: return "X"; break;
case 34: return "Y"; break;
case 35: return "Z"; break;
default: return convertInt(nummer);
}
}
////////////////////////////////////////////////////////////////////////////unär
void vuna(unsigned int number)
{
std::cout<<una(number);
}
std::string una(unsigned int number)
{
std::string ruck="";
for(unsigned int i=1;i<=number;i++)
{
ruck+="\x7c";
if(i%5==0) ruck+=" ";
}
return ruck;
}
/////////////////////////////////////////////////////////////////////////// binär
unsigned int _bin(unsigned int x,unsigned int stelle)
{
unsigned short int bin[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
bin[e++]=x%2;
x=x/2;
}
temp[0]=e;
while(e)
{
temp[i++]=bin[--e];
}
return temp[stelle];
}
void vbin(unsigned int x)
{
for(unsigned int i=1;i<=_bin(x);i++)
std::cout<<_bin(x,i);
}
std::string bin(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_bin(x);i++)
tenp+=convertInt(_bin(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// trinär
unsigned int _tri(unsigned int x,unsigned int stelle)
{
unsigned short int tri[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
tri[e++]=x%3;
x=x/3;
}
temp[0]=e;
while(e)
{
temp[i++]=tri[--e];
}
return temp[stelle];
}
void vtri(unsigned int x)
{
for(unsigned int i=1;i<=_tri(x);i++)
std::cout<<_tri(x,i);
}
std::string tri(unsigned int x,unsigned stellen)
{
if(x<0) return "ERROR nicht kleiner 0";
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_tri(x);i++)
tenp+=convertInt(_tri(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Quarternär
unsigned int _qua(unsigned int x,unsigned int stelle)
{
unsigned short int qua[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
qua[e++]=x%4;
x=x/4;
}
temp[0]=e;
while(e)
{
temp[i++]=qua[--e];
}
return temp[stelle];
}
void vqua(unsigned int x)
{
for(unsigned int i=1;i<=_qua(x);i++)
std::cout<<_qua(x,i);
}
std::string qua(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_qua(x);i++)
tenp+=convertInt(_qua(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Quinär
unsigned int _qui(unsigned int x,unsigned int stelle)
{
unsigned short int qui[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
qui[e++]=x%5;
x=x/5;
}
temp[0]=e;
while(e)
{
temp[i++]=qui[--e];
}
return temp[stelle];
}
void vqui(unsigned int x)
{
for(unsigned int i=1;i<=_qui(x);i++)
std::cout<<_qui(x,i);
}
std::string qui(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_qui(x);i++)
tenp+=convertInt(_qui(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Senär
unsigned int _sen(unsigned int x,unsigned int stelle)
{
unsigned short int sen[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
sen[e++]=x%6;
x=x/6;
}
temp[0]=e;
while(e)
{
temp[i++]=sen[--e];
}
return temp[stelle];
}
void vsen(unsigned int x)
{
for(unsigned int i=1;i<=_sen(x);i++)
std::cout<<_sen(x,i);
}
std::string sen(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_sen(x);i++)
tenp+=convertInt(_sen(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Septenär
unsigned int _sep(unsigned int x,unsigned int stelle)
{
unsigned short int sep[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
sep[e++]=x%7;
x=x/7;
}
temp[0]=e;
while(e)
{
temp[i++]=sep[--e];
}
return temp[stelle];
}
void vsep(unsigned int x)
{
for(unsigned int i=1;i<=_sep(x);i++)
std::cout<<_sep(x,i);
}
std::string sep(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_sep(x);i++)
tenp+=convertInt(_sep(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Nonär
unsigned int _non(unsigned int x,unsigned int stelle)
{
unsigned short int non[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
non[e++]=x%9;
x=x/9;
}
temp[0]=e;
while(e)
{
temp[i++]=non[--e];
}
return temp[stelle];
}
void vnon(unsigned int x)
{
for(unsigned int i=1;i<=_non(x);i++)
std::cout<<_non(x,i);
}
std::string non(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_non(x);i++)
tenp+=convertInt(_non(x,i));
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
///////////////////////////////////////////////////////////////////////////////////////////// Vigesimal
unsigned int _vig(unsigned int x,unsigned int stelle)
{
unsigned short int vig[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
vig[e++]=x%20;
x=x/20;
}
temp[0]=e;
while(e)
{
temp[i++]=vig[--e];
}
return temp[stelle];
}
void vvig(unsigned int x)
{
for(unsigned int i=1;i<=_vig(x);i++)
{
switch(_vig(x,i))
{
case 10: std::cout<<"A"; break;
case 11: std::cout<<"B"; break;
case 12: std::cout<<"C"; break;
case 13: std::cout<<"D"; break;
case 14: std::cout<<"E"; break;
case 15: std::cout<<"F"; break;
case 16: std::cout<<"G"; break;
case 17: std::cout<<"H"; break;
case 18: std::cout<<"I"; break;
case 19: std::cout<<"J"; break;
default: std::cout<<_vig(x,i); break;
}
}
}
std::string vig(unsigned int x,unsigned stellen)
{
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_vig(x);i++)
{
switch(_vig(x,i))
{
case 10: tenp+="A"; break;
case 11: tenp+="B"; break;
case 12: tenp+="C"; break;
case 13: tenp+="D"; break;
case 14: tenp+="E"; break;
case 15: tenp+="F"; break;
case 16: tenp+="G"; break;
case 17: tenp+="H"; break;
case 18: tenp+="I"; break;
case 19: tenp+="J"; break;
default: tenp+=convertInt(_vig(x,i)); break;
}
}
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
//////////////////////////////////////////////////////////////////////////////// allsys zahlensysteme von 2-36
unsigned int _allsys(unsigned int x,unsigned short int zsystem,unsigned int stelle)
{
unsigned short int allsys[32];
unsigned short int temp[33];
unsigned short int e=0;
unsigned short int i=1;
while(x>0)
{
allsys[e++]=x%zsystem;
x=x/zsystem;
}
temp[0]=e;
while(e)
{
temp[i++]=allsys[--e];
}
return temp[stelle];
}
void vallsys(unsigned int x,unsigned short int zsystem)
{
for(unsigned int i=1;i<=_allsys(x,zsystem);i++)
{
std::cout<<letter(_allsys(x,zsystem,i));
}
}
std::string allsys(unsigned int x,unsigned short int zsystem,unsigned stellen)
{
if(zsystem<2 || zsystem>36) return "Error Zahlensystem nicht kleiner 2 und h\x94her 36!";
std::string tenp="";
std::string Nullstr="";
std::string ruck="";
for(unsigned int i=1;i<=_allsys(x,zsystem);i++)
{
tenp+=letter(_allsys(x,zsystem,i));
}
if(tenp.length()<stellen)
{
for(unsigned int e=tenp.length();e<stellen;e++) Nullstr+="0";
ruck=Nullstr;
ruck+=tenp;
}
else
{
ruck=tenp;
}
return ruck;
}
Alles anzeigen
Er will einfach nur diese beiden inputs noch in die ini schreiben/auslesen. mehr nicht.
heute morgen als ich den code nur so überflogen habe würde ich sagen er muss es in die funktion _generatecontrols mit rein packen. da von dort aus das 2d array entstanden ist.
Weiß eine den Pfad in der Registry der den "Geheimen" Kontexteintrag: "Als Pfad kopieren" findet?
Ich finde die Sachen für "Eingabeaufforderung hier öffnen" ohne probleme nur das eben nicht.
Für die, die es nicht wissen, über Shift+Rechtsklich wird ein ich nenne es mal "Erweitertes Kontext" angezeigt wo eben diese Inhalte stehen.
Wenn jemand den Pfad kennt in der Reg bitte sagen
Ja hatte ich schon gelöst aber danke