tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
930
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MatMagic
    MatMagic MatMagic ist offline 25712 Walk on water
    Registriert seit
    Sep 2004
    Ort
    Schleswig Holstein
    Beiträge
    130
    Hi ersma.....
    Mein Problem ist folgendes:
    Ich lese eine Datei ein "wertung.htm" aus dem Ordner "output"
    mit folgendem Code:

    Dim zeile As String
    Open "output/wertung.htm" For Input As 4
    Do Until EOF(4) = True
    Line Input #4, zeile
    ausleser = ausleser & zeile
    DoEvents
    Loop
    Close 4

    die variable "ausleser" habe ich in einem modul als "string" definiert
    diese variable (so habe ich gehofft) sollte nun den Inhalt der eingelesenen Datei aufnehmen damit ich sie systematisch durchsuchen und auswerten kann.

    unter anderem mit dieser Routine:

    a = Len(ausleser)
    b = InStr(ausleser, "%")
    c = Mid(ausleser, b, a - b)
    treffer = c

    Es funktioniert auch alles einwandfrei......bis zu einem bestimmten Punkt
    Dann scheinen keine Daten mehr in meiner Variable "ausleser" vorhanden zu sein.

    Info:
    Größe der Htm-Datei: ca. 1,5 MB

    Meine Frage(n)
    Wieviel Bytes kann eine Variable aufnehmen? (da ich glaube das es daran liegt)
    Wie kann ich trotzdem diese "grosse" Datei in eine Variable einlesen?
    Darf ich keine Variable verwenden? Wie dann? (ein textfeld funktioniert auch nicht)
    Was mache ich falsch - welcher weg führt mich zum erfolg!?

    Bitte helft mir
    Danke !
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    In einen String passen Zeichenketten in der Länge von 0 bis 2 * 10^9, sollte sich also für dein Vorhaben ausgehen. Der Fehler scheint woanders zu liegen.

    Bist Du Dir sicher, dass die komplette Datei eingelesen wird?

    Weitere Informationen zu Visual Basic und Datentypen (und deren Längen) findest Du hier .
     

  3. #3
    Avatar von MatMagic
    MatMagic MatMagic ist offline 25712 Walk on water
    Registriert seit
    Sep 2004
    Ort
    Schleswig Holstein
    Beiträge
    130
    Hallo danke für die schnelle Antwort!

    Ich bin mir eigentlich ziemlich sicher das die ganze Datei gelesen wird da der ganze Vorgang 2 Minuten dauert .
    Ich habe jetzt nocheinmal eingefügt das man in einem Textfeld sehen kann das jede einzelne Zeile einmal durchläuft (während des einlesens gebe ich die aktuelle Zeile an ein textfeld wo alle durchlaufen)

    Dim zeile As String
    Open "output/wertung.htm" For Input As 4
    Do Until EOF(4) = True
    Line Input #4, zeile
    txtpruef.text = zeile
    ausleser = ausleser & zeile
    DoEvents
    Loop
    Close 4

    Aber die Variable "ausleser" an die ich dann die einzelnen Zeilen übergebe nimmt ab einem bestimmten Zeitpunkt keine Daten mehr auf. Dein Link hilft mir leider nicht weiter. Fällt dir oder jemand anderem noch eine Lösung ein ?

     

  4. #4
    gabrielgsell gabrielgsell ist offline Mitglied Silber
    Registriert seit
    Apr 2004
    Ort
    CH
    Beiträge
    76
    Ciao,
    Also das der String zu klein ist, halte ich für fast unmöglich, denn ich lese ein Textfile ein das ca 66 MByte hat und alles passt in eine Variable.
    Schau dir mal dies an, evtl. hilft dir das weiter:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Dim KNr As Integer
    Dim Inhalt As String
    Dim Zeile() As String
    Dim Datei As String
     
    Datei = "C:\Datei.txt"
    KNr = FreeFile
    Inhalt = Space(FileLen(Datei))
     
    Open Datei For Binary As KNr
    Get KNr, , Inhalt
    Zeile = Split(Inhalt, vbNewLine)
    Close KNr
    Nun kannst du einzelne Zeilen ausgeben:
    Code :
    1
    
    MsgBox Zeile(1)
    oder suchen
    Code :
    1
    
    AnzahlX  = IntStr(Zeile, "X")
    Hoffe konnte dir weiterhelfen.

    Grüsse
     

  5. #5
    Avatar von MatMagic
    MatMagic MatMagic ist offline 25712 Walk on water
    Registriert seit
    Sep 2004
    Ort
    Schleswig Holstein
    Beiträge
    130

    Vielen Dank !
    Es lag nicht daran das die Daten nicht in die Variable passten - sondern das ich versucht habe die Komplette Variable zu durchsuchen. Es war also alles drin nur ich kam nicht ran.
    Mit deiner Lösung ist mein Programm jetzt nicht nur funktionstüchtig (wohl das wichtigste) da ich nun Zeilenweise auswerte sondern auch um ein vielfaches schneller ! Das Einlesen geht jetzt in ca. 10 Sekunden statt vorher ca. 2 Minuten und das auswerten rast je nach Abfragemenge in 10 bis 30 Sekunden durch statt vorher 3 bis 5 Minuten (hatte ja teilweise funktioniert - nur das eben 90% der Daten nicht da waren)

    Ich bin rundum Glücklich, verneige mich in Ehrfurcht und weiss jetzt wo ich mal nachschauen kann wenn ich wieder ein Problem habe.

    Danke an euch beiden für die Hilfe
     

Ähnliche Themen

  1. Downloadskript setzt Leerzeichen in meine Datei
    Von Christian030783 im Forum PHP
    Antworten: 6
    Letzter Beitrag: 28.05.10, 12:37
  2. Preloader für meine .swf datei
    Von joker55 im Forum Flash Plattform
    Antworten: 13
    Letzter Beitrag: 03.04.07, 19:36
  3. [Oracle] Wie gross ist meine Tabelle
    Von m3000 im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 29.09.05, 11:44
  4. Datei berücksichtigt meine ext.CSS nicht
    Von Jan-Frederik Stieler im Forum CSS
    Antworten: 5
    Letzter Beitrag: 17.07.05, 20:42
  5. Wo ist meine .xsession Datei (Suse 9.0) ?
    Von daniel2000 im Forum Linux & Unix
    Antworten: 7
    Letzter Beitrag: 04.05.04, 21:22