/* INI Class
* Coded by Shawak from Elitepvpers
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Collections;
public class INI
{
public string FileName { get; private set; }
private Dictionary<string, INIValueCollection> sections;
public INI(string filename)
{
FileName = filename;
sections = new Dictionary<string, INIValueCollection>();
parsing = false;
ParseFile(FileName);
}
public INIValueCollection this[string section]
{
get
{
if (sections.ContainsKey(section))
return sections[section];
else
{
var s = new INIValueCollection(this);
sections.Add(section, s);
return s;
}
}
}
private bool parsing;
public void ParseFile(string filename)
{
parsing = true;
using (var reader = new StreamReader(new FileStream(FileName, FileMode.OpenOrCreate), Encoding.UTF8))
{
string line = null;
string lastSection = null;
while ((line = reader.ReadLine()) != null)
{
line = line.Trim();
if (line.StartsWith("#"))
continue;
if (line.StartsWith("[") && line.EndsWith("]"))
{
line = line.Substring(1, line.Length - 2);
lastSection = line.Trim();
}
else if(line.Contains("=") && !String.IsNullOrEmpty(lastSection))
{
var lineSplit = line.Split('=');
var value = lineSplit[1].Trim();
if(value.StartsWith("\"") && value.EndsWith("\""))
value = value.Substring(1, value.Length - 2);
this[lastSection][lineSplit[0].Trim()] = value;
}
}
}
parsing = false;
}
public void Save()
{
if (parsing)
return;
using (var writer = new StreamWriter(new FileStream(FileName, FileMode.Truncate), Encoding.UTF8))
{
foreach (var section in sections)
{
writer.WriteLine("[" + section.Key + "]");
foreach (var value in sections[section.Key].Values)
writer.WriteLine(value.Key + " = " + (value.Value is string ? "\"" : "") + value.Value + (value.Value is string ? "\"" : ""));
writer.WriteLine();
}
}
}
public class INIValue
{
public string Key { get; set; }
public object Value { get; set; }
}
public class INIValueCollection
{
public List<INIValue> Values { get; private set; }
public INI Owner { get; private set; }
public INIValueCollection(INI owner)
{
Owner = owner;
Values = new List<INIValue>();
}
public object this[string key]
{
get
{
var val = Values.FirstOrDefault(e => e.Key == key);
if (val != null)
return val.Value;
return null;
}
set
{
var val = Values.FirstOrDefault(e => e.Key == key);
if (val != null)
val.Value = value;
else
Values.Add(new INIValue() { Key = key, Value = value });
Owner.Save();
}
}
}
}
A lot of people ( maybe ) have sometimes problems with inserting mysql inserts scripts that are using 'DD-MM-YY' date format in their database. But the database only understands 'YY-MM-DD' date format when u are inserting, updating and so on.
So there is a "trick"/solution how to solve this problem without changing any insert code manually (str_to_date in front of every date column)
This is really good for use, if your insert scripts has more than 500+ lines. (Complex insert scripts are meant)
It's using Regular Expressions.
Have Fun
Code:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Starter {
public static void main(String []args){
RandomAccessFile in = null, out = null;
Pattern p = Pattern.compile("'[0-9]{2}-[A-Z]{3}-[0-9]{4}'");
try {
in = new RandomAccessFile("mysql_insert.sql", "r");
out = new RandomAccessFile("out.sql", "rw");
String ts, toReturn = "";
while((ts = in.readLine()) != null) {
Matcher m = p.matcher(ts);
toReturn = ts;
if (m.find()) {
String date = m.group(0);
String newDate = "str_to_date(" + date +", '%d-%b-%Y')";
toReturn = toReturn.replace(date, newDate);
}
out.writeBytes(toReturn +"\n");
}
in.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Heute gibt es mal wieder ein High Quality-Release Release von mir
Dieses mal gibt es einen Thread Checker, welcher Thread(s) von elitepvpers (I dont say :Awesome auf neue Posts überprüft. und einem dem entsprechend informiert.
Das Tool ist momentan nur auf einem Thread begrenzt, da meine "Genehmigung" nur für ein Thread ausreicht.
hatte gestern ne relativ nützliche Idee, eine Art Clipboard Viewer zu bauen, der euch die Zwischenablage in einer listBox anzeigt und nicht überschreibt. Ihr könnt beliebig lange Texte kopieren, durch das rüber gleiten in der listbox zeigt er euch den vollständigen Text an. Durch ein doppelklick kopiert ihr die Zeile und könnt sie beliebig einfügen. Doppelte Einträge werden gefiltert. - Der neuste kopier vorgang wird immer an erster Stelle angezeigt.
Auch besteht die möglichkeit eine Zeile zu löschen, oder mehrere, dazu wählt ihr die Zeile aus. Ein Klick auf löschen und der Inhalt wird geleert.
Der ganze Inhalt kann auch beliebig gespeichert werden, undzwar in eine txt Datei die für euch in C:\ angelegt wird, mit dem Namen Links. Diesen Pfad könnt ihr auch durch einen Button öffnen, durch einen anderen Button löscht ihr den kompletten Inhalt der txt Datei. Solltet ihr das Programm schließen, habt ihr die möglichkeit zu entscheiden ob der Inhalt noch gespeichert werden soll oder nicht. Solltet ihr mal ausversehen den PowerKnopf vom Computer gedrückt haben, wird die gesamte Liste in der ShutDown.txt gespeichert (liegt auch auf C:\) und beim nächsten Programm start ausgelesen.
Bei weiteren Fragen, meldet euch doch bei mir. Auch für Kritik stehe ich zur Verfügung.
Tipps was ich einfügen könnte/sollte? Schreibt mich an.
Wenn es eine große Nachfrage gibt, füge ich noch die Funktion ein den Pfad auszuwählen, eventuell auch soetwas wie Profile. Aber zuerst füge ich das Features ein, das bei jedem "Inhalt löschen" klick eine Kopie erstellt wird, der in dem Ordner erscheint.
EDIT; Pfad Auswahl hinzugefügt, einfach oben bei Datei den Pfad auswählen.
Save Button umgeändert, er fügt nun den Inhalt ein anstatt das er ihn ersetzt.
Hallo Community,
ich biete euch hier meinen AddMeFast Bot für lau an.
Er kann Twitter/YouTube Likes/Abbos auf AddMeFast erzeugen.
Bei Fragen, Problemen oder Wünschen einfach hier schreiben.
Screen:
Download:
Virustotal sagt zwar 5/47 aber der Quellcode ist ja offen .
GNU General Public License (GPL)
Kein Verkauf vom Programm oder Teilen davon.
Leertaste = Spiel pausieren / fortsetzen
Enter = Spiel neu starten ( Wenn tot )
Einstellungsmöglichkeiten:
-Farbe von Schlangenkörper
-Farbe von Schlangenkopf
-Farbe von Hindernissen
-Schwierigkeitsgrad
-Grafikmodus ( Solid oder Gitter )
-Grafikmodus ( Quadrat oder Ellipse )
Infos:
-Die Hindernisse werden beim Spielstart zufällig generiert
-Der Highscore ist nur temporär
Ein etwas unsinniger Release, aber na ja.. Langeweile halt..
Ich habe mich ein wenig mit Python beschäftigt und mit 's HTML Writer für Python einen "Potenz-Rechner" geschrieben, der einfach eine HTML Datei ausgibt mit der ausgewählten Basis und mit dem ausgewählten Exponenten und eben dessen Ergebnis.
Hey, ich stelle euch einen Spammer + Programmöffner vor
Wie es funktioniert.
Es gibt links oben 3 Buttons. Youtube Öffnet Youtube auf eurem StandartBrowser und Facebook öffnet Facebook mit eurem Stanartbrowser.
Minecraft ist leider speziell für meinen PC gecodet, ihr könnt aber euer Minecraft direkt ins C:\ tun, damit ist der Button ebenfalls nützlich.
Was ihr für den Spammer tun müsst, einen Text den ihr gespammt haben wollt einfach in die Textbox links schreiben...
Unter den Start und Beenden Button ist noch eine Textbox da könnt ihr einen Interval eingeben, wenn ihr dort keinen Interval eingegeben habt, dann ist der Standartinterval 40 ( 1000 = 1Sekunde ) also ist das ziemlich schnell.
Rechts oben ist eine weitere Textbox wo ihr Programme öffnen könnt oder sonstiges, schreibt einfach den Pfad rein beachtet bitte das \ (AltGr + ß)
Yoouu Leuts und joaa ich habe gerade ein neues Game geschrieben! Ist nicht sehr aufwändig ist nur ein kleines SpeedyGame
Ihr müsst einfach einen Text eingeben der da steht bevor die Zeit um ist, und dafür bekommt ihr Punkte
• Bestenliste bis 10
• Überlebenszeit!
• Pro und Noob Version
• AdministratorProgramm
• Bestenliste mit Name [Wird noch daran gearbeitet!]