INI-Editor

Mit einer INI-Library können Daten in einem Programm einfach in einer Datei zur Konfiguration gelesen oder gespeichert werden. Dazu erstellt man einfach eine neue Klasse mit dem Namen INILibrary mit dem unten Aufgeführten Inhalt. Der Kommentar über dem Konstruktor zeigt, wie man ein neues Objekt der Klasse erzeugt. Der Aufruf der Entsprechenden Methode führt dann zum Ziel.

Quellcode der INILibrary-Klasse

Option Strict On
Option Explicit On
Public Class INILibrary
    Public pfad As String
    ' Konstruktor fuer setzen des Pfades
    '   Dim Inipfad As String
    '   Dim ini As New INIDatei(Inipfad)
    Sub New(ByVal INIPfad As String)
        pfad = INIPfad
    End Sub

    ' DLL-Funktionen zum LESEN der INI
    Private Declare Ansi Function lesen Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
        ByVal lpApplicationName As String, ByVal lpSchluesselName As String, ByVal lpDefault As String, _
        ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
    'DLL-Funktion zum SCHREIBEN in die INI
    Private Declare Ansi Function schreiben Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
        ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, _
        ByVal lpFileName As String) As Integer
    'DLL-Funktion zum LoeSCHEN einer ganzen Sektion
    Private Declare Ansi Function loeschen Lib "kernel32" Alias "WritePrivateProfileStringA" ( _
        ByVal Section As String, ByVal NoKey As Integer, ByVal NoSetting As Integer, _
        ByVal FileName As String) As Integer

    Public Function WertLesen(ByVal Sektion As String, ByVal Schluessel As String, Optional ByVal Standardwert As String = "", Optional ByVal BufferSize As Integer = 1024) As String
        Dim sTemp As String = Space(BufferSize)
        Dim Length As Integer = lesen(Sektion, Schluessel, Standardwert, sTemp, BufferSize, pfad)
        Return Left(sTemp, Length)
    End Function

    Public Sub WertSchreiben(ByVal sektion As String, ByVal schluessel As String, ByVal wert As String)
        schreiben(sektion, schluessel, wert, pfad)
    End Sub

    Public Sub SchluesselLoeschen(ByVal sektion As String, ByVal schluessel As String)
        schreiben(sektion, schluessel, Nothing, pfad)
    End Sub

    Public Sub SektionLoeschen(ByVal Sektion As String)
        loeschen(Sektion, 0, 0, pfad)
    End Sub

    Public Sub BackupAnlegen(ByVal zielpfad As String)
        IO.File.Copy(pfad, zielpfad)
    End Sub

    Public Sub DateiLoeschen()
        IO.File.Delete(pfad)
    End Sub
End Class

Initiierung der Klasse und Methodenaufruf

Dim inipfad As String = "C:\test.ini"
Dim ini As New INILibrary(inipfad)
WertSchreiben("sektion", "schluessel", "wert")

E-Mail senden

Benötigte Imports

Imports System.Net.Mail

Quellcode

Private Sub Mail_senden()      
    Dim Msg As New MailMessage
    Dim myCredentials As New System.Net.NetworkCredential
    myCredentials.UserName = "E-MAIL-ADRESSE"
    myCredentials.Password = "E-MAIL-PASSWORT"

    Msg.IsBodyHtml = False

    Dim mySmtpsvr As New SmtpClient()
    mySmtpsvr.EnableSsl = True
    mySmtpsvr.Host = "HOST (ZUM BEISPIEL 'gmail.com')"
    mySmtpsvr.Port = 25

    mySmtpsvr.UseDefaultCredentials = False
    mySmtpsvr.Credentials = myCredentials

    Try
        Msg.From = New MailAddress("SENDER-E-MAIL")
        Msg.To.Add("E-MAIL-EMPFÄNGER")
        Msg.Subject = "BETREFF"
        Msg.Body = "NACHRICHT"
        mySmtpsvr.Send(Msg)
        MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
    Catch ex As Exception
        MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString)
    End Try
End Sub

Bubblesort

Mit dem folgenden Programm, kann auf einfachste Art und Weise ein Array sortiert werden. Hierbei wird das Verfahren „Bubblesort“ angewandt. Grob beschrieben, vergleicht die Methode „Bubblesort“ im Array jeden Wert mit dem benachbarten. Dann wird so lange getauscht, bis das Array komplett sortiert ist.

Quellcode

#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;

void Bubblesort(int *array, int length);
int arr[5] = { 8, 4, 3, 5, 9 };

int _tmain(int argc, _TCHAR* argv[])
{
    bubblesort(arr, 5);
    for (int i = 0; i < 5; i++)
    {
        cout << arr[i];
    }
    _getch();
    return 0;
}

void Bubblesort(int *array, int length)
{
    int i, j;
    for (i = 0; i < length - 1; ++i)
    {
        for (j = 0; j < length - i - 1; ++j)
        {
            if (array[j] > array[j + 1])
            {
                int tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
        }
    }
}

INI-Editor

Mit einer INI-Library können Daten in einem Programm einfach in einer Datei zur Konfiguration gelesen oder gespeichert werden. Dazu erstellt man einfach eine neue Klasse mit dem Namen INI mit dem unten Aufgeführten Inhalt. Der Kommentar über dem Konstruktor zeigt, wie man ein neues Objekt der Klasse erzeugt. Der Aufruf der Entsprechenden Methode führt dann zum Ziel.

Quellcode

using System.Runtime.InteropServices;
using System.Text;

class INI
{
    public string iniPath;

    [DllImport("kernel32")]
    static extern long WritePrivateProfileString(string section, string key, string Value, string filePath);
    [DllImport("kernel32")]
    static extern int GetPrivateProfileString(string section, string key, string Default, StringBuilder RetVal, int Size, string FilePath);

    public INI(string iniPath)
    {
        this.iniPath = iniPath;
    }

    public string ReadValue(string section, string key)
    {
        StringBuilder RetVal = new StringBuilder(255);
        GetPrivateProfileString(section != null ? section : iniPath, key, "", RetVal, 255, iniPath);
        return RetVal.ToString();
    }

    public void WriteValue(string section, string key, string Value)
    {
        WritePrivateProfileString(section != null ? section : iniPath, key, Value, iniPath);
    }

    public void Deletekey(string section, string key)
    {
        WriteValue(section != null ? section : iniPath, key, null);
    }

    public void Deletesection(string section)
    {
        WriteValue(section, null, null);
    }

    public bool KeyExists(string section, string key)
    {
        return ReadValue(section, key).Length > 0 ? true : false;
    }

    public void Backup(string path)
    {
        System.IO.File.Copy(iniPath, path);
    }

    public void DeleteINI()
    {
        System.IO.File.Delete(iniPath);
    }
}

ListView sortieren

Die Folgende Klasse kann verwendet werden, um den Inhalt von einer ListView zu sortieren. Dazu legt man eine neue Klasse mit dem Namen ListViewColumnSorter an. Im Programm selber wird die unten aufgeführte Methode SortColumns() aufgerufen, um die ListView zu sortieren.

Quellcode

using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Windows.Forms;

class ListViewColumnSorter : IComparer
{
    private int ColumnToSort = 0;
    private SortOrder OrderOfSort = SortOrder.Ascending;
    private NumberCaseInsensitiveComparer ObjectCompare = new NumberCaseInsensitiveComparer();
    private ImageTextComparer FirstObjectCompare = new ImageTextComparer();

    public int Compare(object x, object y)
    {
        int compareResult;
        ListViewItem listviewX, listviewY;

        listviewX = (ListViewItem)x;
        listviewY = (ListViewItem)y;

        if (ColumnToSort == 0)
            compareResult = FirstObjectCompare.Compare(x, y);
        else
            compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);

        if (OrderOfSort == SortOrder.Ascending)
            return compareResult;
        else if (OrderOfSort == SortOrder.Descending)
            return (-compareResult);
        else
            return 0;
    }

    public int SortColumn
    {
        set { ColumnToSort = value; }
        get { return ColumnToSort; }
    }

    public SortOrder Order
    {
        set { OrderOfSort = value; }
        get { return OrderOfSort; }
    }
}

public class ImageTextComparer : IComparer
{
    private NumberCaseInsensitiveComparer ObjectCompare = new NumberCaseInsensitiveComparer();

    public int Compare(object x, object y)
    {
        int image1, image2;
        ListViewItem listviewX, listviewY;

        listviewX = (ListViewItem)x;
        image1 = listviewX.ImageIndex;
        listviewY = (ListViewItem)y;
        image2 = listviewY.ImageIndex;

        if (image1 < image2)
            return -1;
        else if (image1 == image2)
            return ObjectCompare.Compare(listviewX.Text, listviewY.Text);
        else
            return 1;
    }
}

public class NumberCaseInsensitiveComparer : CaseInsensitiveComparer
{
    public new int Compare(object x, object y)
    {
        if ((x is System.String) && IsWholeNumber((string)x) && (y is System.String) && IsWholeNumber((string)y))
            return base.Compare(System.Convert.ToInt32(x), System.Convert.ToInt32(y));
        else
            return base.Compare(x, y);
    }

    private bool IsWholeNumber(string strNumber)
    {
        Regex objNotWholePattern = new Regex("[^0-9]");
        return !objNotWholePattern.IsMatch(strNumber);
    }
}

Aufruf der Methode in der Klasse ListViewColumnSorter im Programm

private void SortColumns()
{
    ListView lv = (ListView)sender;

    if (e.Column == lvwColumnSorter.SortColumn)
    {
        if (lvwColumnSorter.Order == SortOrder.Ascending)
            lvwColumnSorter.Order = SortOrder.Descending;
        else
            lvwColumnSorter.Order = SortOrder.Ascending;
    }
    else
    {
        lvwColumnSorter.SortColumn = e.Column;
        lvwColumnSorter.Order = SortOrder.Ascending;
    }
    lv.Sort();
}

Caesar-Chiffre

Im Folgenden finden Sie den Quellcode von 2 Methoden, mit denen man einen String mit Hilfe des Caesar-Chiffre-Verfahrens verschlüsseln kann. Um die jeweilige Methode aufzurufen, übergibt man ihr den zu verschlüsselnden/entschlüsselnden Text als String und den Schlüssel ebenfalls als String. Die Methode gibt den entschlüsselten oder verschlüsselten Text zurück.

Beispiel zum Verschlüsseln eines Textes

MessageBox.Show(Encrypt(„Dieser Text soll verschlüsselt werden!“, „KEY“));

Verschlüsseln

public string Encrypt(string text, string key)
{
    if (key != string.Empty)
    {
        string encrypted = string.Empty;             
        int keyindex = 0;

        foreach (char c in text)
        {
            int asciinr = (int)c;
            asciinr += (int)key[keyindex];

            if (asciinr > 255)
                asciinr -= 255;
          
            encrypted += (char)asciinr;

            keyindex++;
            if (keyindex > key.Length - 1)
                keyindex = 0;
        }
        return encrypted;
    }
    else
        return text;
}

Beispiel zum Entschlüsseln eines Textes

MessageBox.Show(Decrypt(„Dieser Text soll entschlüsselt werden!“, „KEY“));

Entschlüsseln

public string Decrypt(string text, string key)
{
    if (key != string.Empty)
    {
        string decrypted = string.Empty;             
        int keyindex = 0;

        foreach (char c in text)
        {
            int asciinr = (int)c;
            asciinr -= (int)key[keyindex];

            if (asciinr < 0)
                asciinr = 255 + asciinr;

            decrypted += (char)asciinr;
            keyindex++;
            if (keyindex > key.Length - 1)
                keyindex = 0;
        }
        return decrypted;
    }
    else
        return text;
}

UTF8-Verschlüsselung

Im Folgenden finden Sie den Quellcode von 2 Methoden, mit denen man einen String mit Hilfe der UTF8-Verschlüsselung verschlüsseln kann. Um die jeweilige Methode aufzurufen, übergibt man ihr den zu verschlüsselnden/entschlüsselnden Text als String und den Schlüssel ebenfalls als String. Die Methode gibt den entschlüsselten oder verschlüsselten Text zurück.

Beispiel zum Verschlüsseln eines Textes

MessageBox.Show(Encrypt(„Dieser Text soll verschlüsselt werden!“, „KEY“));

Verschlüsseln

public string Encrypt(string plainMessage, string password)
{
    TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
    des.IV = new byte[8];
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
    des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
    MemoryStream ms = new MemoryStream(plainMessage.Length * 2);
    CryptoStream encStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
    byte[] plainBytes = Encoding.UTF8.GetBytes(plainMessage);
    encStream.Write(plainBytes, 0, plainBytes.Length);
    encStream.FlushFinalBlock();
    byte[] encryptedBytes = new byte[ms.Length];
    ms.Position = 0;
    ms.Read(encryptedBytes, 0, (int)ms.Length);
    encStream.Close();
    return Convert.ToBase64String(encryptedBytes);
}

 

Beispiel zum Entschlüsseln eines Textes

MessageBox.Show(Decrypt(„Dieser Text soll entschlüsselt werden!“, „KEY“));

Entschlüsseln

public string Decrypt(string encryptedBase64, string password)
{
    TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
    des.IV = new byte[8];
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
    des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
    byte[] encryptedBytes = Convert.FromBase64String(encryptedBase64);
    MemoryStream ms = new MemoryStream(encryptedBase64.Length);
    CryptoStream decStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
    decStream.Write(encryptedBytes, 0, encryptedBytes.Length);
    decStream.FlushFinalBlock();
    byte[] plainBytes = new byte[ms.Length];
    ms.Position = 0;
    ms.Read(plainBytes, 0, (int)ms.Length);
    decStream.Close();
    return Encoding.UTF8.GetString(plainBytes);
}

XML-Editor

Benötigte Controlls

  • Button „btn_oeffnen“
  • Button „btn_speichern“
  • dataGridView „dataGridView1“
  • openFileDialog „openFileDialog1“
  • saveFileDialog „saveFileDialog1“

Quellcode

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;

namespace XML_Editor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        void Clear_all()
        {
            dataGridView1.Columns.Clear();
        }

        void ReadXML(String file)
        {
            Clear_all();
            DataSet myDataSet = new DataSet();
            myDataSet.ReadXml(file);
            dataGridView1.DataSource = myDataSet.Tables[0].DefaultView;
        }

        private void btn_oeffnen_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            ReadXML(openFileDialog1.FileName);
        }

        void SaveXML(String file)
        {
            DataTable dt = new DataTable("Adresse");

            for (int i = 0; i < dataGridView1.ColumnCount; i++)
            {
                dt.Columns.Add(dataGridView1.Columns[i].Name, typeof(System.String));
            }

            DataRow myrow;
            int icols = dataGridView1.Columns.Count;

            foreach (DataGridViewRow drow in this.dataGridView1.Rows)
            {
                if (drow.Cells[0].Value != null)
                {
                    myrow = dt.NewRow();
                    for (int i = 0; i < icols; i++)
                    {
                        myrow[i] = drow.Cells[i].Value;
                    }
                    dt.Rows.Add(myrow);
                }
            }

            dt.WriteXml(file);
        }

        private void btn_speichern_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ShowDialog();
            SaveXML(saveFileDialog1.FileName);
        }
    }
}

Beispielinhalt einer .xml-Datei

<DocumentElement>
   <Adresse>
      <Name>Nachname1</Name>
      <Vorname>Vorname1</Vorname>
      <Postleitzahl>12345</Postleitzahl>
      <Hausnummer>22</Hausnummer>
   </Adresse>
   <Adresse>
      <Name>Nachname2</Name>
      <Vorname>Vorname2</Vorname>
      <Postleitzahl>38496</Postleitzahl>
      <Hausnummer>12</Hausnummer>
   </Adresse>
   <Adresse>
      <Name>Nachname3</Name>
      <Vorname>Vorname3</Vorname>
      <Postleitzahl>48375</Postleitzahl>
      <Hausnummer>15</Hausnummer>
   </Adresse>
   <Adresse>
      <Name>Nachname4</Name>
      <Vorname>Vorname4</Vorname>
      <Postleitzahl>38294</Postleitzahl>
      <Hausnummer>21</Hausnummer>
   </Adresse>
</DocumentElement>

CSV-Editor

Benötigte Controlls

  • Button „btn_oeffnen“
  • Button „btn_speichern“
  • dataGridView „dataGridView1“
  • openFileDialog „openFileDialog1“
  • saveFileDialog „saveFileDialog1“

Quellcode

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace CSV_Editor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        void Clear_all()
        {
            dataGridView1.Columns.Clear();
        }

        void ReadCSV(String file)
        {
            Clear_all();
            String rowValue;
            string[] cellValue;

            if(System.IO.File.Exists (file))
            {
                StreamReader streamReader = new StreamReader (file);
                rowValue = streamReader.ReadLine();
                cellValue = rowValue.Split(';');

                for (int i = 0; i <= cellValue.Count() - 1; i++)
                {
                    DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();

                    column.Name = cellValue[i];
                    column.HeaderText = cellValue[i];
                    dataGridView1.Columns.Add(column);
                }

                while (streamReader.Peek() != -1)
                {
                    rowValue = streamReader.ReadLine();
                    cellValue = rowValue.Split(';');
                    dataGridView1.Rows.Add(cellValue);
                }

                streamReader.Close();
            }
        }

        void SaveCSV(String file)
        {
            StreamWriter streamWriter = new StreamWriter(file);
            string strHeader = "";

            for (int i = 0; i < dataGridView1.Columns.Count; i++)
            {
                strHeader += dataGridView1.Columns[i].HeaderText + ";";
            }

            strHeader = strHeader.TrimEnd(';');

            streamWriter.WriteLine(strHeader);

            for (int m = 0; m < dataGridView1.Rows.Count - 1; m++)
            {
                string strRowValue = "";

                for (int n = 0; n < dataGridView1.Columns.Count; n++)
                {
                    strRowValue += dataGridView1.Rows[m].Cells[n].Value + ";";
                }
                strRowValue = strRowValue.TrimEnd(';');
                streamWriter.WriteLine(strRowValue);
            }
            streamWriter.Close();
        }

        private void btn_oeffnen_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            ReadCSV(openFileDialog1.FileName);
        }

        private void btn_speichern_Click(object sender, EventArgs e)
        {
            saveFileDialog1.ShowDialog();
            SaveCSV(saveFileDialog1.FileName);
        }

    }
}

Beispielinhalt einer .csv-Datei

Name;Vorname;Postleitzahl;Hausnummer
Name1;Vorname1;12345;32
Name2;Vorname2;17496;8

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close