Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 22:10

  • Please register to post and access all features, it's quick, easy and FREE!

 

[C#]Datei auslesen Fortschirtt

Reply
 
Old   #16

 
elite*gold: 0
The Black Market: 123/0/0
Join Date: Feb 2008
Posts: 3,503
Received Thanks: 1,185
Quote:
Originally Posted by AT0MiX View Post
eigentlich nicht.

Was spricht gegen Zeilen!?
Z.b., wenn es sich um NICHT Text-Dateien handelt? Mit einem Byte-Array bist Du auf jedem Weg flexibler. ;-)



Else is offline  
Old   #17
 
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
Quote:
Originally Posted by Else View Post
Z.b., wenn es sich um NICHT Text-Dateien handelt? Mit einem Byte-Array bist Du auf jedem Weg flexibler. ;-)
Ich werde immer nur Dateien lesen, die ich zeilenweise brauche.
Trotzdem guter Hinweis.


GodHacker is offline  
Old   #18
failing on a final level
 
elite*gold: 45630
Join Date: Jun 2009
Posts: 28,548
Received Thanks: 24,650
Quote:
Originally Posted by AT0MiX View Post
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.
Naja für dieses konkrete Problem sind Zeilen in der Tat schwieriger. Die Größe der Datei in Bytes kannst du leicht abfragen, aber frag mal die Zeilenanzahl ab, die du für die Fortschrittsanzeige brauchtest.
MrSm!th is offline  
Old   #19
 
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
Quote:
Originally Posted by MrSm!th View Post
Naja für dieses konkrete Problem sind Zeilen in der Tat schwieriger. Die Größe der Datei in Bytes kannst du leicht abfragen, aber frag mal die Zeilenanzahl ab, die du für die Fortschrittsanzeige brauchtest.
Genau das ist mein Problem.


GodHacker is offline  
Old   #20
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 783
Quote:
Originally Posted by MrSm!th View Post
aber frag mal die Zeilenanzahl ab, die du für die Fortschrittsanzeige brauchtest.
Auch kein Problem, nur müsste man vorher die Datei durchgehen,
um zu wissen wieviele Zeilen es gesamt sind. -> Toll für die Performance
.SkyneT. is offline  
Old   #21

 
elite*gold: 0
The Black Market: 123/0/0
Join Date: Feb 2008
Posts: 3,503
Received Thanks: 1,185
D.h. Bytes auslesen => Ruhe.
Else is offline  
Old   #22
 
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
Quote:
Originally Posted by .SkyneT. View Post
Auch kein Problem, nur müsste man vorher die Datei durchgehen,
um zu wissen wieviele Zeilen es gesamt sind. -> Toll für die Performance
Würde auch ziemlich blöd sein, weil wenn ich sie einmal durchgehe, dann kann ich sie auch direkt lesen. Sollte ja nicht doppelt duchlaufen werden.

Quote:
Originally Posted by Else View Post
D.h. Bytes auslesen => Ruhe.
Ich gebe dir gerne ein Beispiel, damit du verstehst, warum ich ZEILEN möchte.
Ich habe eine *.txt-Datei, welche ca. 2,6MB groß ist und ungefähr 136000 Proxys beinhaltet. Hier ist es natürlich viel schöner, wenn ich einfach Zeile für Zeile in eine List<> speichere (jedenfalls ist das meine Meinung).
Jetzt gib mir mal einen Beispiel Code, wie ich dies mit einer Progressbar mache.
GodHacker is offline  
Old   #23

 
elite*gold: 0
The Black Market: 243/0/0
Join Date: Dec 2012
Posts: 12,891
Received Thanks: 7,936
Quote:
Originally Posted by [email protected]
Würde auch ziemlich blöd sein, weil wenn ich sie einmal durchgehe, dann kann ich sie auch direkt lesen. Sollte ja nicht doppelt duchlaufen werden.
Er meinte, im Programm die datei durchgehen. So gesehen, die Zeilen zählen

In AutoIt:
Code:
Func _FileCountLines($sFilePath)

	Local $hFile = FileOpen($sFilePath, $FO_READ)
	If $hFile = -1 Then Return SetError(1, 0, 0)
	Local $sFileContent = StringStripWS(FileRead($hFile), 2)
	FileClose($hFile)
	Local $aTmp
	If StringInStr($sFileContent, @LF) Then
		$aTmp = StringSplit(StringStripCR($sFileContent), @LF)
	ElseIf StringInStr($sFileContent, @CR) Then
		$aTmp = StringSplit($sFileContent, @CR)
	Else
		If StringLen($sFileContent) Then
			Return 1
		Else
			Return SetError(2, 0, 0)
		EndIf
	EndIf
	Return $aTmp[0]
EndFunc   ;==>_FileCountLines
Requi is online now  
Old   #24
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
So aus dem stehgreif hast wohl folgende Optionen.

a)
Du brauchst für 2,6 mb keine Progressbar .. blend in deiner gui ein das es läd bis das ganze durch is, seh bei 2,6mb ehrlichgesagt keinen Großen Sinn darin.

b) Lad die Datei als Bytearray, dort ist es trivial eine Progressbar zu machen, danach arbeitest du mit den Daten im Bytearray. Perfomancetechnisch sicher nicht optimal, aber nachdem die Datei erstmal im Speicher ist dürfte das nurnoch bei wirklich extrem Perfomancenkritischen Sachen nen Problem geben, wofür C# eh nich so super geeigenet wäre.

c) Bau dir ein Mini Dateiformat das eine Saubere Struktur hat.
Sorg dafür das die Ipadressen immer die selbe Menge an Bytes einnehmen, danach ist es trivial sie eine nach der Anderen auszulesen und den Prozentualen Fortschritt zu errechnen.

Gibt sicher noch unmengen andere Wege.

Source bekommst von mir aber nicht, das ganze ist ne schöne Grundlagenübung, gibt man hier den Code raus wird eh nur c&p, wovon am ende keiner was hat, das ganze ist einfach nicht so komplex das man Codebeispiele zum erklären bräuchte.
dready is offline  
Old   #25
 
elite*gold: 273
Join Date: Sep 2010
Posts: 1,831
Received Thanks: 783
Quote:
Originally Posted by GodHacker View Post
[...]
Hier ist es natürlich viel schöner, wenn ich einfach Zeile für Zeile in eine List<> speichere (jedenfalls ist das meine Meinung).
[...]
Du gehst die Datei durch, währenddessen aktualisierst du nach
jedem Byte die Progressbar, und nach jeder Zeile schreibst du nen
neuen Eintrag in deine Liste.
So hast du ne Progressbar die sich füllt während die Datei
durchlaufen wird.

Quote:
Originally Posted by dready View Post
[...]
c) Bau dir ein Mini Dateiformat das eine Saubere Struktur hat.
Sorg dafür das die Ipadressen immer die selbe Menge an Bytes einnehmen, danach ist es trivial sie eine nach der Anderen auszulesen und den Prozentualen Fortschritt zu errechnen.
[...]
Dann müsste er jede Liste in sein Dateiformat "konvertieren", was Schwachsinn ist.
.SkyneT. is offline  
Old   #26
failing on a final level
 
elite*gold: 45630
Join Date: Jun 2009
Posts: 28,548
Received Thanks: 24,650
Quote:
b) Lad die Datei als Bytearray, dort ist es trivial eine Progressbar zu machen, danach arbeitest du mit den Daten im Bytearray. Perfomancetechnisch sicher nicht optimal, aber nachdem die Datei erstmal im Speicher ist dürfte das nurnoch bei wirklich extrem Perfomancenkritischen Sachen nen Problem geben, wofür C# eh nich so super geeigenet wäre.
Eigentlich sollte es sogar schneller sein, die Datei im Ganzen zu lesen und dann mit dem Speicher zu arbeiten, als jede Zeile einzeln zu lesen.

Btw. wenn es unbedingt Zeile für Zeile sein soll, kann man es ja auch folgendermaßen machen:
Die Größe der Datei in bytes ist leicht abzufragen. Du liest die Datei in Zeilen aus, addierst die Längen in Bytes jeder Zeile auf und hast dann halt das Verhältnis dieser Summe zur Gesamtgröße als Fortschritt. Wird trotzdem ziemlich schnell auf 100 sein.
MrSm!th is offline  
Old   #27
 
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
Ich werds mal mit bytes testen und sehe ja dann, ob es gut geht.
GodHacker is offline  
Old   #28
 
elite*gold: 100
Join Date: Aug 2005
Posts: 595
Received Thanks: 208
@Skynet, jub hast recht, hab mich bescheiden ausgedrückt, wollte es mit Anmerken da es die Einzige Option ist wenn er mit der Tatsächlichen Menge an eingelesenen Ip´s arbeiten will, wenn aber wer ne bessere option hat, her damit


dready is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
[S] Bot Coder [txt.Datei auslesen]
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) ...
5 Replies - elite*gold Trading
Sql Datei auslesen
erledigt
1 Replies - Technical Support
Sql Datei auslesen
Hey, ich möchte eine account tabelle auslesen (in .sql) aber wie mache ich das am besten ? Muss account name & passwort von 1000 Accounts...
1 Replies - elite*gold Trading
1. | 3. | 5. | Linie usw.. in Datei auslesen
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...
3 Replies - AutoIt
DAtei-Speicherort auslesen
Hallo! Gibt es in AutoIt einen Befehl oder eine Function um den Dateispeicherort einer Datei rauszufinden? ich brauche den damit ich den BEfehl...
4 Replies - AutoIt



All times are GMT +1. The time now is 22:10.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.