Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik Blog

Wo findet man in C# den Ersatz für atoi(), atof()


In C/C++ ist die Umwandlung eines Strings der eine Zahl enthält in eine Zahl ganz einfach: Dafür gibt es die Funktionen atoi() und atof(). atoi() wandelt einen string der einen Integer enthält in den Integer um, atof() tut das gleiche für Fließkommazahlen.

In C# gibt es die beiden Methoden nicht, dafür aber anderen Ersatz: Man kann entweder die ‚Parse()’ Methode des Zieltyps verwenden, oder eine der Methoden aus der Klasse ‚Convert’.

Beispiel anhand eines Integers:

string numberAsString = "42";
int sample1 = Int32.Parse( numberAsString);
int sample2 = Convert.ToInt32( numberAsString);

Bei der Gelegenheit: Man hat einen Enum und will den Integer-Wert? Versuchen Sie es mit dem offensichtlichen Typecast....


Update: Durchlaufträger, Spannbetonträger


Xdur (Durchlaufträger nach DIN 1045, EC2, DIN 1052, DIN 18800 (81) und (90), EC3):

Beim Durchlaufträger-Programm wurde die zulässige Durchbiegung im Fall von Holzträgern mit zweiachsiger Beanspruchung falsch berechnet, wenn die ‚horizontale Feldlänge’ größer der ‚vertikalen Feldlänge’ war. Dieses Problem wurde behoben.

Xvos (Spannbetonträger nach DIN 4227 / A1 und 1045-1 (01):

Beim Spannbetonträger waren die Ergebnisse der Spannungsberechnungen bei DIN-1045-1 im Zustand II etwas zu groß und wurden außerdem graphisch falsch dargestellt. Beide Probleme wurden behoben.


Wie man sich vor eMail Adress-Fälschern schützt


Wir hier beschrieben sind eMail-Adressen leicht zu fälschen, was unter anderem zu sowas führt. Nun will man natürlich nicht das Dritte die eigene Mail-Adresse verwenden - es stellt sich also die Frage: Was kann man dagegen tun?

Bis vor kurzem lautete die Antwort: Gar nichts.

Hier ist aber momentan einiges in Bewegung - so wie es aussieht werden die Spammer das Mittel der Adressfälschung in absehbarer Zeit nicht mehr zur Verfügung haben. Die Lösung: Das Sender Policy Framwork ( SPF ).

Bis zum 25. Mai gab es mehrere konkurrierende Anti-Spam Methoden: Im Wesentlichen aber gab es einen Vorschlag von Microsoft und eben SPF. Am 25. hat man aber eine gemeinsamen Weg gefunden - und damit ist der Durchbruch wohl geschafft: Microsoft wird SPF im Exchange Server integrieren.

Was tut SPF?

Beim SPF handelt es sich um ein Verfahren das komplett auf dem SMTP Server abgehandelt wird - es müssen also kein Mail-Clients (Outlook, Eudora...) angepasst werden. Verschiedene Mailserver unterstützen das System bereits. Bei AOL ist SPF im Betatest, GMX setzt es bereits aktiv ein - und viele andere Betreiber von SMTP-Servern ebenfalls.

Im Wesentlichen ist SPF eine Erweiterung des DNS Systems. Dabei werden zusätzlich zu den normalen DNS-Einträgen Informationen über die gültigen Mailserver einer Domäne im DNS abgelegt. Diese Informationen können von einem SMTP Server der SPF unterstützt abgefragt werden.

Wenn nun also jemand bei der Kommunikation mit einem Mailserver behauptet, er sei 'hari@bo.de', dann kann der Mailserver mit Hilfe der SPF Einträge im DNS überprüfen, ob er tatsächlich gerade mit einem Mailserver von 'bo.de' redet. Ist der andere Rechner kein Mailserver von 'bo.de', dann lügt die Gegenseite und der SMTP Server kann die Verbindung beenden. Resultat: Keine gefälschten Mail-Adressen mehr.

Was tut D.I.E. dafür ?

Wur tun zwei Dinge: Das eine ist bereits heute passiert, das andere passiert (hoffentlich) morgen. Seite heute ist der Mailserver von D.I.E. ein SPF Client: Wir überprüfen also alle eingehenden Mails um festzustellen ob der Absender auch zu der Domänge gehört, zu der er behauptet zu gehören.

Ab morgen sollten dann weiterhin unsere SPF Records im DNS sichtbar sein: Andere SPF Clients können dann überprüfen, ob bei denen eingehende Mails die angeblich von 'die.de' sind, tatsächlich von die.de stammen: Ende der gefälschten Absender XYZ@die.de.

Das Problem

SPF ist noch relativ neu - zwar steigt die Anzahl der SPF-Benutzer momentan sprunghaft an, aber noch längst nicht alle Mailserver unterstützen SPF. Gibt es aber keine SPF Einträge für eine Domäne im DNS, dann muss man Mails die angeblich von dieser Domäne stammen annehmen. Das bedeutet: Die Spammer werden eben auf Domänen ausweichen, die kein SPF benutzen. Solange die nicht zur absoluten Minderheit werden, haben die Spammer weiter freie Hand. Allerdings: Es machen schon relativ viele Institutionen mit: Google, Amazon, GMX, AOL - und wohl auch bald Microsoft.

Was können Sie tun ?

Das kommt darauf an wie Sie Ihre eMail betreiben.

  • Wenn Sie keinen eigenen Mailserver haben, dann drängeln Sie Ihren ISP SPF einzuführen. Schreiben Sie also eine Mail an den Support von t-online, arcor oder wer auch immer sonst für Ihre Mail zuständig ist. Nur wenn Ihr ISP SPF verwendet sind sie davor sicher, das Ihre Mail-Adresse nicht missbraucht wird. (Zugegeben: Das reicht nicht ganz aus, ist aber der wichtigste Schritt.)
  • Wenn Sie eine eigene Domäne haben, aber Mails über den Hoster versenden: Es gilt das gleiche - drängen Sie darauf das der Hoster das SPF unterstützt.
  • Wenn Sie selbst einen Mailserver betreiben (und einige der Kunden von D.I.E. tun das!) - dann stellen Sie sicher das für Ihre Domain SPF Records im DNS eingerichtet werden, und installieren Sie einen Mailserver der ein SPF Client ist.

Wieso eMail-Adressen so leicht zu fälschen sind


In einem anderen Beitrag habe ich bereits darauf hingewiesen das man eine ganze Menge an Virus-Warnungen bekommt, weil der Versender der Mail mit dem Virus eine gefälschte eMail-Adresse verwendet hat. Das bringt natürlich die Frage auf, wie das gemacht wird. Die Sache ist die, das das extrem einfach ist - wie man sieht, wenn man weiss wie eMail zugestellt wird.

So wird eMail zugestellt

Das Protokoll zum weiterleiten von eMail nennt sich SMTP (Simple Mail Transport Protocol) - und dabei handelt es sich um ein extem einfaches Protokoll. So einfach, das Sie auch von Hand mit einem Mail-Server reden können, sofern Sie über ein Programm verfügen das Texte an einen anderen Rechner übertragen kann.

So ein Programm haben Sie. Es heist 'telnet' und ist bei jedem Windows dabei.

Wie man damit Mail zustellt erfahren Sie gleich. Wenn Sie das nachvollziehen wollen - nur zu! Es wäre aber nett wenn Sie Ihren eigenen Mail-Server (bzw. den von Ihrem ISP) verwenden, und die Mails nicht an mich schicken... :-) Im Beispiel verwende ich den Mailserver von D.I.E. und meine eigene Mail-Adresse.

Und so gehts...:

1. Zunächst starten Sie Telnet auf einer Kommandozeile (MS-DOS Eingabeaufforderung). Sie übergeben dabei zwei Parameter an Telnet: Den Namen des Rechners mit dem sich das Programm verbinden soll, und den Namen des Ports mit dem sich das Programm auf diesem Rechner verbinden soll. (Bei älteren Windows müssen Sie die Nummer des SMTP-Ports angeben. Das ist die Nummer 25).

c:\> telnet mail.die.de smtp

Telnet zeigt dann immer die Reaktionen des Servers an. Der meldet sich in etwa wie folgt:

220-die.de ESMTP MDaemon; Server ready

2. Jetzt sagen Sie hallo zum Server. Das startet den Austausch

helo

Der Server beantwortet das meist etwa so:

250 die.de Hello, pleased to meet you

3. Jetzt geben Sie an, von wem die Mail ist: Sie sagen also wer Sie sind:

mail from: hari@bo.de

Das beantwortet der Server etwa wie folgt:

250 hari@bo.de, Sender ok

4. Jetzt geben Sie an, wer der Empfänger der Mail sein soll. (Der Server muss diesen Empfänger kennen.)

rcpt to: tw@die.de

Das beantwortet der Server so:

250 tw@die.de, Recipient ok

5. Nun teilen Sie dem Server mit, das Sie die Nachricht selbst eingeben wollen:

data

Der Server beantwortet das in etwa so:

354 Enter mail, end with <crlf>.<crlf>

6. Sie können dann den Textkörper der Mail eingeben. Wenn der komplette Text eingegeben wurde, drücken Sie einmal Return, dann einen Punkt, und dann wieder Return. Das teilt dem Mailserver mit, das das Ende der Nachricht erreicht wurde. Der Server quittiert das in etwa so:

250 Ok, message saved.

Das wars. Die Mail ist verschickt, und Sie können sich mit 'quit' wieder vom Server abmelden. Das beendet auch die Telnet-Sitzung. Sie haben soeben Ihre erste Mail ganz von Hand verschickt.

Und das Problem liegt...

bei 3.) - Denn da können Sie angeben was immer Sie wollen. Sofern der Mailserver keine weiteren Schritte unternimmt (und das tut fast kein Mailserver) können Sie auf diese Weise vorgeben zu sein, wer immer Sie wollen. Genau das tun auch die Versender von Viren und Spam.

Seit kurzem kann man aber auf der Server-Seite etwas dagegen unternehmen. Wie das geht und was man dazu tun muss kommt in einem späteren Beitrag.


Update: Stütze und Fundament


XKSN (Bemessung und Nachweis von Stützen nach DIN 1045 und EC2):
Beim Ausdruck der Berechnungsergebnisse im Stützenprogramm wurden bei den Auflagerkräften die aus Berechnungen nach Theorie 1. Ordnung stammten die Namen der Auflager nicht mit ausgedruckt. Das ist ab jetzt der Fall.

XFUN (Optimierung und Nachrechnung von Fundamenten):
Beim Fundamentprogramm wurde der Grundriß von randnahen Stützen in einigen Fällen beim nachrechnen vergrößert. Das  unterbleibt jetzt.


Zwei praktische Toolbars in XP


In Windows XP gibt es an allen möglichen Stellen praktische Helfer - die man oft leider nicht ohne weiteres findet. Mit einem Rechtsklick auf den Taskbar kommt man an zwei davon dran: Das Objekt-Menü der Taskleiste hat zwei praktische Befehle unter dem Menü 'Symbolleisten':

1. Desktop
2. Schnellstart

Das Desktop-Kommando
Damit bekommen Sie einen kleinen Doppelpfeil an den rechten Rand des Taskbars. Auf den kann man klicken, und das öffnet dann ein Menü mit den wichtigsten Ordnern (Eigene Dateien...) und allen Links und Programmen die sich auf Desktop befinden. Man kann damit also zum Beispiel ein Programm starten dessen Icon von einem Anwendungsfenster verdeckt ist.

Das Schnellstart-Kommando
Das Kommando gibt Ihnen eine Mini-Toolbar innerhalb des Taskbars: Da kann man Verknüpfungen reinziehen, und damit die wichtigsten Programme besonders einfach finden und besonders schnell starten.


Delegates mit mehreren Return-Werten


In C# kann ein Delegate mehrere Methoden haben die im zugeordnet sind. (Die Methoden werden ja mit += zugewiesen, und nicht mit = ).

Angenommen man hat einen delegate der einen Rückgabewert hat:

delegate int GetResult( int paramerter );

Und weiter angenommen, diesem Delegate sind mehrere Methoden zugeordnet. Welchen Rückhabewert erhält man nun, wenn der Delegate zurückkehrt?

Antwort: Man bekommt den Rückgabewert der zuletzt aufgerufenen Methode des Delegate. Wenn das nicht ausreicht, kann man mit GetInvocationList() alle zugehörigen Methoden ermitteln und diese einzeln aufrufen. Das muss man dann aber manuell machen.

Dank an Eric Gunnerson.