|
You last visited: Today at 23:31
Advertisement
[C#]Datei auslesen Fortschirtt
Discussion on [C#]Datei auslesen Fortschirtt within the .NET Languages forum part of the Coders Den category.
06/25/2013, 22:22
|
#1
|
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
|
[C#]Datei auslesen Fortschirtt
Hallo,
ich brauche eure Hilfe, da ich nicht weiß, wie ich z.B. eine *.txt-Datei auslesen kann und dabei eine Progressbar dazu laufen lassen kann.
Ich würde es gerne so machen, dass die Progressbar anzeigt, wie viel von der ganzen Datei bereits gelesen wurde.
Ich hoffe, dass mir jemand dabei helfen kann.
|
|
|
06/25/2013, 23:26
|
#2
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Was genau ist das Problem?
|
|
|
06/26/2013, 00:12
|
#3
|
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
|
Ich habe ersteinmal versucht zeichenweise eine txt-Datei zu lesen (nicht die zeichen zu speichern) und dabei das ganze mit einer Progressbar sichtbar zu machen. Hier kommt aber schon das erste problem, dass es zwar die Datei durch geht, aber die Form hängt (also weder eine Textbox, noch die Progressbar "Aktuallisiert" (bzw. ändert).
Ich weiß außerdem nicht, wie ich dies dann mit Zeilen mache. Es soll also die Anzahl der Zeilen bestimmt werden und anschließend Zeile für Zeile eingelesen werden und der Fortschritt dabei mit der Progressbar angezeigt werden. (sollte es nicht Zeile für Zeile gehen, bin ich auch offen für alternativen).
Im ganzen geht es mir nur darum, dass ich eine Datei lesen will, und den Fortschritt an einer Progressbar sichtbar machen kann (es müssen also genaue x von max. angaben sein).
|
|
|
06/26/2013, 00:20
|
#4
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Wenn das auslesen klappt, würde ich einfach, mit einem neuen Thread die Aufgabe ausführen lassen. Denn dann hängt die Form nicht und sieht auch "schöner" aus.
Gibt auch die unsaubere Möglichkeit eines Backgroundworkers. Macht genau das selbe.
|
|
|
06/26/2013, 08:41
|
#5
|
elite*gold: 5
Join Date: Mar 2008
Posts: 460
Received Thanks: 436
|
1. Zaehlervariable deklarieren
2. Datei einlesen (Streamreader)
3. Zahlervariable hochzählen lassen (Readline)
4. Progressbar den Zähler mitteilen
5. Datei erneut lesen (Readline von vorne)
Das ganze kannst du jetzt natürlich in einem extra Thread (wie Requi schon gesagt hat) machen oder wenn es wirklich nur simpl gemacht werden soll machst du nachdem du der ProgressBar ein neues Value zugewiesen hast ein "Application.DoEvents()" damit aktualisiert sich deine Form, bzw es werden alle Event's was anfallen erledigt und dann geht es nach dem DoEvents wieder weiter. Das ist natürlich unter umständen nicht zu empfehlen, jedoch meist ausreichend.
|
|
|
06/26/2013, 09:53
|
#6
|
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
|
Sauber wäre es aber definitiv in einem eigenen Thread aufgehoben. Via FileInfo kann man sich dann bequem die Länge holen und anhand von CurrentPosition die ProgressBar updaten lassen.
Oder man setzt da einfach auf den Buffer, setzt dem ein Limit wie man lustig ist und updated bei dessen Refresh einfach immer die ProgressBar.
|
|
|
06/26/2013, 13:07
|
#7
|
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
|
Application.DoEvents() ist ein relativ zielstrebiger Weg zu ner Menge Kopfweh :P
Wollt ich nur mal kurz anmerken, ansonsten hat Walter es ja schon praktisch perfekt zusammengefasst.
@Requi was genau findest an nem Backroundworker unsauber ? Wenn ich es nicht falsch im Kopf hab ist es doch einfach nur ein Wrapper um die Threadingklasse ?
|
|
|
06/26/2013, 13:46
|
#8
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Mal so ganz nebenbei, wie groß ist bitte diese Textdatei das du eine Progressbar anzeigen willst?
Ich hab letztens einen Parser für ca 5GB an Textdateien geschrieben, lief keine 5 Minuten und war nicht auf Geschwindigkeit optimiert, eher im gegenteil.
|
|
|
06/26/2013, 13:57
|
#9
|
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
|
Bei 5 Minuten ist doch eine Progressbar gar nicht so schlecht.
|
|
|
06/26/2013, 14:16
|
#10
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Quote:
Originally Posted by qkuh
Bei 5 Minuten ist doch eine Progressbar gar nicht so schlecht.
|
Bei 5 Minuten wäre es eine Option, ich glaube aber kaum das es bei ihm 5GB sein werden. Ein paar MB große Dateien sind fertig bevor der Nutzer die Progressbar überhaupt sieht.
|
|
|
06/26/2013, 17:11
|
#11
|
elite*gold: 4
Join Date: Feb 2008
Posts: 3,854
Received Thanks: 1,268
|
Wie wäre es damit die Datei in Bytes zu lesen und den Progressbar dem entsprechend zu aktualisieren?! Das ist wesentlich einfacher, als das Auslesen der Zeilen, usw. usw.
|
|
|
06/26/2013, 17:36
|
#12
|
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
|
Hm...
Sind ja schon einige Ideen, die gut klingen. Ich werde es mir mal alles ansehen und testen.
PS: Die Dateien sind unterschiedlich groß. Ob ich irgendwann mal eine Datei mit 1-2GB (höher bestimmt nicht) habe, kann ich noch nicht sagen.
Ich bedanke mich für eure bisherige Hilfe.
Sollte ich noch Probleme haben, dann frage ich einfach nach.
|
|
|
06/26/2013, 18:54
|
#13
|
elite*gold: 71
Join Date: May 2013
Posts: 449
Received Thanks: 64
|
Quote:
Originally Posted by Else
Wie wäre es damit die Datei in Bytes zu lesen und den Progressbar dem entsprechend zu aktualisieren?! Das ist wesentlich einfacher, als das Auslesen der Zeilen, usw. usw.
|
eigentlich nicht.
Was spricht gegen Zeilen!?
Und wie auch schon an den oberen Posts entnommen werden kann, ist eine ProgressBar bei einer Datei die kleiner als 100 MB (und ich glaube kaum, dass du eine 100 MB Datei auslesen willst) unnötig.
|
|
|
06/26/2013, 18:54
|
#14
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Quote:
Originally Posted by dready
@Requi was genau findest an nem Backroundworker unsauber ? Wenn ich es nicht falsch im Kopf hab ist es doch einfach nur ein Wrapper um die Threadingklasse ?
|
Ich bevorzuge lieber "With New Thread", da ein Backgroundworker immer so hingeklatscht aussieht.
|
|
|
06/26/2013, 19:31
|
#15
|
elite*gold: 4
Join Date: Aug 2008
Posts: 6,783
Received Thanks: 4,992
|
Quote:
Originally Posted by Requι
Ich bevorzuge lieber "With New Thread", da ein Backgroundworker immer so hingeklatscht aussieht.
|
Hingeklatscht wäre aber eher die Variante über System.Threading.Thread zu gehen. Ein Backgroundworker hat idR den Scope bzw Kontext zur UI somit spart man sich die lästigen Invokes. Die direkte Thread-Klasse sollte man dann eher in Konsolenapplikationen nutzen oder alternativ, wenn man einfach nur Berechnungen durchführt, die mit der UI des Programms nichts zu tun haben.
Ggf auch hier mal schauen
|
|
|
 |
|
Similar Threads
|
[S] Bot Coder [txt.Datei auslesen]
01/12/2013 - elite*gold Trading - 5 Replies
Moin suche jemand der mir einen Bot codet der aus einer
txt Datei Email Addressen in einen Newsletter einträgt
(keine Email bestätigung nötig)
Würde in Elitegold bezahlen - Einfach mal melden.
|
Sql Datei auslesen
01/11/2013 - Technical Support - 1 Replies
erledigt
|
Sql Datei auslesen
01/11/2013 - elite*gold Trading - 1 Replies
Hey, ich möchte eine account tabelle auslesen (in .sql) aber wie mache ich das am besten ?
Muss account name & passwort von 1000 Accounts kopieren.
Gebe dem, der mir die beste antwort giebt 4 €*Gold
Also ich muss ganze Spalten kopieren
MLG Marlo
|
1. | 3. | 5. | Linie usw.. in Datei auslesen
07/15/2011 - AutoIt - 3 Replies
Hey...
Ich wollte von einer Datei die 1. 3. 5. linie usw.. bis 60 Linien auslesen und wiedergeben.. Nur klappt das i-wie nicht.. Ich dachte mir vielleicht kann mir jemand helfen..
$open = FileOpen(@ScriptDir&"\datei.txt")
For $i = 1 To 60
$msg = FileReadLine ($open,$i+1)
MsgBox (0,"",$msg)
Next
Sleep(10)
|
DAtei-Speicherort auslesen
06/15/2010 - AutoIt - 4 Replies
Hallo!
Gibt es in AutoIt einen Befehl oder eine Function um den Dateispeicherort einer Datei rauszufinden? ich brauche den damit ich den BEfehl FileMove() verwenden kann.
mfg
|
All times are GMT +1. The time now is 23:32.
|
|