*txt File öffnen/anzeigen

1234man

Grünschnabel
Hallo zusammen, bin neu hier! Habe aber schon die erste Frage!
Ich versuche als Neueinsteiger in C# ein kleines Programm zu bauen, habe keine Programmiererfahrung allgemein! Nun das Problem, ich habe 12 Dateien als *.txt und sollte nach berechnen einer Zahl von 1-12 die Datein öffnen, wie mache ich das? Bsp. bei Zahl 5 sollte Zahl5.txt angezeigt werden in einem Fenster....

Gruss
 
Basierend auf dein Beispiel:

Du musst den Namespace System.IO einbinden:
Code:
using System.IO;

Dass du an die entsprechende Zahl kommst, setze ich voraus. Als einfaches Beispiel bin ich davon ausgegangen, dass du die Zahl 5 ermittelt hast. Der Rest sieht dann so aus:
Code:
int zahl = 5;
if (File.Exist("Zahl"+zahl.ToString()+".txt") {
    System.IO.StreamReader sr = new StreamReader("Zahl"+zahl.ToString()+".txt");
    string content = sr.ReadToEnd();
    sr.Close();
}
Nun hast du den kompletten Inhalt der Datei Zahl5.txt in der Variable content. Zusätzlich wird abgefragt, ob die Datei überhaupt vorhanden ist. Sicher ist sicher.
 
Danke, aber komme leider nicht weiter

Nochmals zum Problem:

Habe 3 Felder wo ich Zahlen eingeben kann: Sollte ein Datum sein...
Tag mit Scrolldown 1-31
Monat mit Scrolldown 1-12
Jahr als Text ?

Bsp. 12.11.1974
Dann sollte sich die Quersumme errechnen lassen = 26
Dann aus der Qeuersumme 26 >> 2+6 = 8
(Numerologie)

Mit der Zahl 8 sollte dann das Zahl8.txt aufgerufen werden?
(Wäre auch denkbar dass ich die 12Textdateien in den Code schreibe als Case, die Uebersicht wäre noch da)

Wäre um weitere Hilfe sehr froh!

Gruss
 
Naja, ich weiss dass ich an die Zahl kommen muss, aber habe noch nichtmal das geschaft, eigentlich habe ich noch nichts...
 
tja, im prinzip ist das nicht schwierig.
Ich weiß nicht, ob du einen eigenen Algorithmus für das Quersummen berechnen weisst, mir fällt jedoch kein gescheiter ein. Deshalb würde ich alles auf einen String nacheinander speichern.

Dann machst du eine Schleife, die so lange durchläuft, bis die String.Length < 2 ist.
In dieser Schleife speicherst du die Quersumme des aktuellen Strings auf einen Hilfs- Integer.
Das heisst du gehst jeden einzelnen Char im String durch, Convertierst ihn zu Int32 und vermehrst den HilfsInteger immer um diesen Wert. Am Ende der Schleife Convertierst du den IntegerWert wieder auf den String zurück. Wenn der String jetzt nur mehr ein Char gross ist, geht er aus der Schleife, und du hast die fertige Quersumme, wie du danach die Textdatei öffnest, weisst du ja eh schon.

Also hier der Code:
Code:
string sQuersumme = "";
string sQuersumme = Convert.ToString(Convert.ToInt32(Tag.Value));
sQuersumme += Convert.ToString(Convert.ToInt32(Monat.Value));
sQuersumme += Convert.ToString(Convert.ToInt32(Jahr.Text));

int iQuersumme;
do
{
iQuersumme = 0;
for (int i = 0; i < sQuersumme.Length; i ++)   //jeden Char in sQuersumme durchgehen
{
iQuersumme += Convert.ToInt32(sQuersumme[i]);
}
sQuersumme = Convert.ToString(iQuersumme);
} while (sQuersumme.Length > 1);

// iQuersumme ist jetzt die Quersumme
//jetzt die Textdatei mit der Nummer iQuersumme öffnen
//ende des Codes

PS: habs selbst noch nicht probiert, aber müsste soweit funktionieren...
mfg, yan1
 
Ich will jetz keine Haare spalten, aber es geht noch einfacher:

Code:
string sQuersumme;      // Wie in letzter Antwort...
int summe = 0;

foreach (char c in sQuersumme)
{
	summe += (Convert.ToInt32(c) - 48);
}

// Text mit Nr. = summe öffnen

Noch zu dem "-48" in der Schleife: Eine Konvertierung eines Char zu Int erfolgt mithilfe der ASCII Tabelle. Die Zahlen beginnen bei Nr.49.....
 
hmm... das ist auch eine Möglichkeit *g*

aber soweit ich das sehe, löst dieses Beispiel nicht das ganze Problem

wenn sein Geburtsdatum zb 1.1.1999, wird auf den String "111999" gespeichert.
mit der foreach Schleife zählst du jeden Char zusammen , d.H. 1 + 1 + 1 + 9 + 9 + 9
, ist gleich 30. er will aber nicht den Wert 30, sondern den Wert 3, dh. man muss noch ueberpruefen, ob die Quersumme kleiner 10 ist, sonst muss man das gleiche noch mal machen ;)

lg, yanick
 
Zuletzt bearbeitet:
Ich denke die beste Möglichkeit wäre dies Rekursiv zu machen. zB.

Code:
    string sQuersumme;
    int s = 0;
    
    while( sQuersumme.Length > 1 )
    {
    	s = 0;
    	foreach(char c in sQuersumme)
    	{
    		s += (Convert.ToInt32(c) - 48)
    	}
    	sQuersumme = s.toString();
    }

Achtung!: Ungetestet, nur ein Ansatz
 
Zuletzt bearbeitet:
Wow das ging ja schnell mit den Antworten, vielen Dank!
Werde jetzt alles mal ausprobieren und checken obs funktioniert...
Nochmals zur Info:
Datum 03.05.1970 = 0+3+0+5+1+9+7+0 = 25 dann nochmals 2+5 = 7 (grösstmögliche Zahl ist 12), darum habe ich 12txt Files....

Danke nochmals
Gruss
 

Neue Beiträge

Zurück