MichaK Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Hallo zusammen, ich habe ein kleines Problem in VBasic. Mein Proggi öffnet eine Textdatei und Filtert einzelne Zeilen heraus um Sie dann in eine DB zu schreiben. Die Textdateien sind im schnitt 30MB groß und haben ca. 400'000 Zeilen. Das Umwandeln dauert verdammt lange, ist aber nicht das Problem. Das Problemn ist das dieses Programm 100% Systemauslastung Produziert und meine Speicherverwaltung überlastet. Durch die ständige belastung wird das System an den Maximalwert des virtuellen Speichers gebracht. Es lässt sich also nix mehr bediehnen. Hat jemand eine Idee wie ich dieser Systemauslastung vorbeuge? MfG MichaK Zitieren
developer Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Versuche erstmal ein paar Do Events einzubauen, dann kannst du wenigstens ein wenig weiterarbeiten. Ansonsten könntest du die Textdatei natürlich in kleinere aufteilen und die dann durchsuchen, dass bringt wohl deinen virtuellen Speicher nicht ganz so hoch. Zitieren
MichaK Geschrieben 20. Juni 2003 Autor Geschrieben 20. Juni 2003 Hallo developer, danke für deine Antwort. Do Events? Wo soll ich die einbauen, damit die systemauslastung nicht so hoch ist? Gibt es eine Funktion zum splitten von Dateien? MfG MichaK Zitieren
Antibiotik Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 hallo, du hast do bestimmt ne schleife um die zeilen rauszufiltern?? mach in diese schleife die DO EVENTS rein!! Ciao Antibiotik Zitieren
developer Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Hier nochmal was zu DoEvents aus der MSDN: DoEvents( ) Bemerkungen Die DoEvents-Funktion gibt einen Wert vom TypInteger zurück, der die Anzahl der geöffneten Formulare in eigenständigen Versionen von Visual Basic (z.B. Visual Basic, Professional Edition) repräsentiert. In allen anderen Anwendungen gibt DoEvents Null zurück. DoEvents übergibt die Ablaufsteuerung an das Betriebssystem. Das Programm erhält erst dann die Steuerung wieder zurück, wenn das Betriebssystem alle wartenden Ereignisse verarbeitet hat und alle wartenden Tastenanschläge in der SendKeys-Warteschlange abgearbeitet sind. DoEvents ist für einfache Operationen besonders hilfreich, wenn z.B. einem Benutzer die Möglichkeit gegeben werden soll, einen Prozeß abzubrechen, nachdem er begonnen wurde, beispielweise die Suche nach einer Datei. Bei länger andauernden Vorgängen sollte die Steuerung besser mit Hilfe eines Zeitgebers an den Prozessor abgegeben werden, oder die Aufgabe sollte einer ActiveX-EXE-Komponente übertragen werden. Im zweiten Fall kann die Aufgabe vollkommen unabhängig von Ihrer Anwendung durchgeführt werden, und das Betriebssystem übernimmt das Multitasking und die Zuteilung der Prozessorzeit. Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß dieProzedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert. Eine Fkt zum teilen einer Textdatei? Mhhh... , gute Frage... Ich kenne keine. Zitieren
-roTekuGeL- Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 'sammelst' du etwa die Datensätze in deinem VB prog bevor du sie dann in die DB einträgst? Zitieren
MichaK Geschrieben 20. Juni 2003 Autor Geschrieben 20. Juni 2003 An: |roTekuGeL| - speichern der Zeilen in einem Array - übergabe des Array an die Filter Funktion - übergabe zum speichern in der DB wie würdest du es machen? MfG MichaK Zitieren
developer Geschrieben 20. Juni 2003 Geschrieben 20. Juni 2003 Zeile der Textdatei einlesen Variable an Filter übergeben In Datenbank schreiben Nächste Zeile einlesen ... usw. Bis end of file Zitieren
-roTekuGeL- Geschrieben 21. Juni 2003 Geschrieben 21. Juni 2003 Original geschrieben von developer Zeile der Textdatei einlesen Variable an Filter übergeben In Datenbank schreiben Nächste Zeile einlesen ... usw. Bis end of file *zustimm* das dürfte den Virtuellen Speicher etwas entlasten Zitieren
MichaK Geschrieben 23. Juni 2003 Autor Geschrieben 23. Juni 2003 vielen dank für eure hilfe..... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.