[Visual Basic]

UnBreakable

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
477
Hallo,

ich hab ein Programm geschrieben, welches nacheinander Verschiedene Textdateien in eine Variable einliest.
Das einlesen dieser Dateien hat sich allerdings als sehr komplex dargestellt, wenn ich dieses mittels des Dateinamens mache.

Ist es möglich, dass ich irgendwie alle Dateien nacheinander einlese, die sich in einem bestimmten Ordner befinden? (In der Reihenfolge des Erstellungsdatums)
 
hm danke für deine Antwort.
Erstmal: ich bin Anfänger in sachen VB.

Als nächstes: mit deiner Antwort kann ich nicht allzuviel anfangen.

Ich habe im Web dazu schon folgende Methode gefunden:

Directory.GetFiles(path)

allerdings hab ich probleme diese anzuwenden. Ich bräuchte dazu evt. ne erklärung in "deutsch"
 
also ich hab mir das ganze ungefähr so vorgestellt:

Dim pfad As String
Dim dateien(0 to 100) as Sring
Dim i As Integer

i = 0
pfad = "X:\XX\X\X\XXX"

For Each Directory.GetFiles(pfad)
dateien(i) = Directory.GetFiles(pfad)
System.Console.WriteLine(dateien(i))
i = i + 1
Next


dass es so nicht funktioniert ist klar, nur wie kann ich das irgendwie so Anwenden?
 
Guck dir mal in der Doku die Foreach schleife an.

Dann könntest du es selber hinbekommen.

Und benutz bei nächstenmal die Edit-Funktion anstatt zweit Posts zu erstellen

MFG

tewes
 
Ok, sorry mach ich beim nächsten mal..

zum Thema:
es geht mir nicht darum, wie eine Foreach schleife Funktioniert.
Das könnte ich selber auch rausfinden.

Ich weiß ja nicht, wie ich eine Liste von Datensätzen oder was auch immer
erstellen kann, die beinhaltet welche Dateien sich in einem Ordner befinden.

Also eben nach der Systematik.
Aber ich denke nicht, dass das hier z.B. funktioniert:

dateien(i) = Directory.GetFiles(pfad)

Edit:

Ok, ich habs jetzt so gelöst:

For Each dateien in Directory.GetFiles(pfad)

Jetzt will ich das erstellungsdatum der einzelnen Dateien auslesen.
Wie mach ich das? Ich hab da was gelesen von CreationTime.
Aber wie wende ich das an?
 
Zuletzt bearbeitet:
Sry, aber auch hier meine Antwort guck in die Doku.

Wenn du nicht weisst wie etwas angewendet wird steht es dort immer mit beispiel und Erklärung. Was will man mehr?

MFG

tewes
 
Also erstmal: ich benutze nicht Vivsual Studio! sonder SharpDevelop
Darum bräuchte ich die Online Version.
Wie finde ich raus welche VB Version ich hab?
Aber das ist jetzt erstmal 2. Ranging.

Ich habe das mit dem CreationTime auch gelöst, ich habe jetzt folgendes Problem:
Also erstmal zum Code:

For Each dateien in Directory.GetFiles(pfad)

dateien = Directory.GetFiles(pfad)
Dim fFile As New FileInfo(dateien(i))

If dateien(i) Like "*jit_pab_A520*" and ffile.CreationTime > Date.Today() Then

So überprüf ich, ob die Datei die ich haben will den gewünschten namen und das richtige erstellungsdatum, das funktioniert auch.

Nur mein Problem ist, dass in dem Ordner sich sehr viele Dateien befinden und es desshalb sehr lange braucht, bis ich zu den gewünschten dateien komme, weil die anderen erst alle überprüft werden müssen.

Wie kann ich das abkürzen, dass er gleich bei denen beginnt, die das erstellungsdatum von heute haben?
Jemand eine Idee?
 
Für die Doku brauchst du kein Visual Studio.
Wenn du VB.Net hast brauchts du um deine Programme zu starten das .NetFramework.

Da du mit SharpDevelop programmierst vermute ich Programmierst du in VB.Net.

Wie viele Datein Überprüfst du denn wenn das so lange dauert?
Und wie groß sind die im schnitt?

MFG

tewes
 
Also mommentan sind es 7019 Dateien, die auf einem Netzlaufwerk liegen (was das hauptproblem ist, denk ich mal)
Diese Dateien werden allerdings mehr (genauergesagt, täglich ca 100 Stück)
Die Größe der Dateien sind nur etwa 1-2 KB

ja, ich programmiere VB.Net
 
Mh dann wird es wohl an der Menge der Daten liegen und wie du sagtest das die im Netzlaufwerkliegen.

Was eventuelle eine Möglichkeit wär die aufgabe in verschiedene Thread aufzuteilen.
Ich weiss aber nicht wie weit VB.NET mit Threads umgehen kann.

Das müsstest du dann eventuell die Sprache wechseln.

MFG

tewes
 
Ich hab mir eh schon überlegt evt. auf C# umzusteigen.

aber ich müsste glaub ich, es irgendwie so lösen:

For Each dateien in Directory.GetFiles(pfad) where ffile.CreationTime > Date.Today()

aber keine Ahnung ob bzw. wie das möglich ist.
 
Als ich kann dir nur empfehlen auf C# umzusteigen.
Da sollte es auch auf jeden fall gehen mehrere Dateien gleichzeitig zu bearbeiten.

Code:
For Each dateien in Directory.GetFiles(pfad) where ffile.CreationTime > Date.Today()

Ich bezweifel das dass Funktioniert.
Wenn dann so:
Code:
For Each dateien in Directory.GetFiles(pfad) 
IF ffile.CreationTime > Date.Today() THEN
 'Do something
END IF
Den code habe ich jetzt nicht getestet. So sollte es aber gehen.


MFG

tewes
 
so sieht ja mommentan der Code aus, damit hab ich aber eben die Performence Probleme.
Weil er ja jede Datei in dem Verzeichnis auf das Datum überprüfen muss.
 
Deswegen solltest du auf Threads umsteigen.
Damit könnten dann z.B. 6 Datein gleichzeitig überprüfen.

Kann dir jetzt aber keinen Code geben, hab damit auch noch nich richtig gearbeitet.

MFG

tewes
 
was aber auch wieder ein Problem wird, weil ich die dateien nacheinander verarbeiten muss!

Ich muss einen Teil dieser Datei mit einem Teil der nächsten Datei vergleichen...
 
Mhh da könntest du ja mit den Threads die Datein in einer Liste speichern und dann in einem Thread die Datein vergleichen(oder wie auch immer weiter verarbeiten.)

MFG

tewes
 
ok, aber es muss doch mit VB irgendwie möglich sein, nur Dateien mit bestimmten kriterien in ein array einzulesen und nicht alle mit

For Each dateien in Directory.GetFiles(pfad)

z.B.

For Each dateien like "irgendwas" in Directory.GetFiles(pfad)

oder irgendwie sowas!
Oder ohne einer For Each schleife dafür mit einer anderen...

hat du bzw. sonst irgendjemand keine Idee?
 
Zurück
Oben