FileRead bei Größeren Datein

  • Hallo ich arbeite momentan an ein programm was G-Code in eine CnC sprache übersetzt die ImaWop versteht. Nun mein Problem teilweise sind die G-Code datein echt groß 5mb+ ( Reine TxT dateit)
    Da in der zeit wo ja die datei eingelesen wird das programm still steht wollte ich eine Progessbar einbauen das habe ich auch soweit indem ich erst _Filecount mache und dan Line für Line lese und in einer variable zusammen setze. Meine haupt Frage ist eigentlich ob es eine schnellere Möglichkeit gibt die großen datein einzulesen? Den teilweise braucht Fileread 5-10 minuten und mehr.


    Gruß Sedas

  • Was spricht dagegen die Datei ganz einzulesen also ein simples FileRead() und dann weiter zu arbeiten?
    Bei mir dauert eine 8.79mb Datei gerade mal 0.112s (HDD) dafür eine Progressbar einzubauen scheint mir unnötig.

  • Hunderte MB große Dateien werden per Fileread in Millisekunden komplett in den Speicher eingelesen.

    Den teilweise braucht Fileread 5-10 minuten und mehr.

    Script?

    Ich wette, es hängt wieder mal (wie üblich in solchen Fällen) am völlig falschen programmiertechnischen Konzept und nicht an den Möglichkeiten der Programmiersprache.
    Weiterhin schlägt wieder mal das (auch in diesen Fällen übliche) XY-Problem zu...(siehe Link in meiner Signatur)

  • Es gibt etwas, das nennt sich minimalbeispiel. Bastel doch mal ein solches, in dem du den ganzen für deine Frage unrelevanten Teil aus deinem Script rausnimmst. Ich hab keine Lust fast 1000 Zeilen Code durchzusuchen. Du hast ja nichtmal ne Zeile/Funktion angegeben, wo das einlesen zu finden ist...und kommentiert, dass man weiß wo was passieren soll ist es auch nicht...

    • Offizieller Beitrag

    Naja, wahrscheinlich die Funktion "_last" (Zeile 698...).
    Wie immer der gleiche Fehler: FileReadLine mit Dateinamen, statt die Datei mit FileOpen zu öffnen und das Handle zu benutzen.
    Ersteres ist nun mal grottenlangsam, weil bei jedem FileReadLine erst die Datei geöffnet wird, dann wird bis zu der angegebenen Zeile eingelesen, dann die entsprechende Zeile gelesen und ausgegeben und dann wird die Datei wieder geschlossen.