Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 85
|
Verfasst am: 23.06.2024, 18:17 Titel: Sprung ans Ende einer Datei |
|
|
Hallo liebes Forum !
Ich habe ein kurzes Anliegen.
Ist es direkt möglich, den letzten Eintrag aus einer Datei zu bekommen ?
Bsp.
1
2
3
4
5
Direkt die 5 zu bekommen, ohne bis zum Ende auszulesen ?
Gut, man könnte alles mit einem Schlag als String einlesen und geeignet (sofern formatierter Inhalt) am Ende nachlesen..aber gehts auch anders ?
Gruß _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
|
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 78
|
Verfasst am: 23.06.2024, 20:03 Titel: |
|
|
Siehe in der Referenz LOF (=> Ende der Datei) und SEEK. Als Dateimodus musst du allerdings wohl BINARY nehmen.
Außerdem geht es mit GET#, da musst du nur den Index übergeben, ab dem du einlesen willst. Der beginnt mit 1 und letztes Byte ist daher auch gleich der Dateilänge ergo LOF(). |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4672 Wohnort: ~/
|
Verfasst am: 23.06.2024, 20:37 Titel: |
|
|
Sinnvoll umsetzbar natürlich nur, wenn du weißt, wie lang der letzte Eintrag ist. Wenn es sich um die letzte Zeile einer Textdatei mit unbekannten Zeilenlängen handelt, fällt mir als Lösung (außer von vorn alles einzulesen) nur ein, dich von hinten byteweise nach vorn zu tasten und ein Zeilenumbruchzeichen zu suchen. Oder mit größeren Blöcken arbeiten und in den eingelesenen Daten mit INSTRREV dem Zeilenumbruch suchen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Zuletzt bearbeitet von nemored am 23.06.2024, 20:42, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
pzktupel
Anmeldungsdatum: 07.07.2020 Beiträge: 85
|
Verfasst am: 23.06.2024, 20:39 Titel: |
|
|
Danke !
Ich habe noch eine effektive Lsg gefunden.
Vorab, alle Einträge als Zeile haben die gleiche Länge X, außer der provozierte kürzere letzte Eintrag mit Länge Y.
Ich checke nun FILELEN(Datei) MOD X = Y
Geht ganz gut...
LG _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2522 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 24.06.2024, 21:32 Titel: |
|
|
Für dieses Problem müsste man direkt den Quellcode vom Linux-Befehl studieren, denn tail reagiert bekanntlich auch bei riesigen Logdateien sehr schnell (=muss diese auch nicht erst durchlesen) und die Logdateien müssen überhaupt nicht gleich lange Zeilen besitzen.
Ohne diesen Quellcode zu kennen: Ich würde es hier evtl. damit versuchen, ein Block von einigen KB am Schluss zu lesen (OPEN BINARY und SEEK sind dafür schon einmal die Basis) und dort im RAM nach Zeilenend-Kennzeichen (=CHR$(13)/CHR$(10) bzw. !"\r" und !"\n") suchen, und zwar rücckwärts. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
|