Autor Thema: Suche Weg die letzte Zeile einer Datei zu finden  (Gelesen 1771 mal)

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Suche Weg die letzte Zeile einer Datei zu finden
« am: 20.03.07 - 13:31:06 »
Hallo,

vor dem Import einer csv Datei muss ich prüfen ob in einer Spalte zwei Werte stehen.
Der Wert steht in der fünften Spalte.
Wie komme ich am schnellsten an die letzte Zeile (ca. 30 000 Datensätze)?

Gruss
Boris

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #1 am: 20.03.07 - 13:56:48 »
Kopiers in ein Excel Tabellenblatt und sortiere nach der 5. Spalte absteigend.
Thomas von der IuK

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #2 am: 20.03.07 - 16:13:00 »
Versuchs mal so:
Code
	Dim excelobj As Variant
	Dim xlsheet As Variant	
	'Die Nr. der Rückgabespalte:
	col= 5
                'Beliebige Datei (Semikolon getrennt):
	fileName$ = "c:\meinedatei.csv"
	Set excelobj= createObject("Excel.Application")	
	Call excelobj.Workbooks.OpenText(fileName$,,,,,,,True)
	Set xlsheet = excelobj.Workbooks(1).Worksheets(1)
	With xlsheet		
		lastrow= .Cells.SpecialCells(11).Row	
		lastval= .cells(lastrow,col).value
	End With
	Set excelobj=Nothing
	Msgbox lastval
Das Script gibt den letzten Wert in Spalte 5 der Semikolon getrennten Datei "c:\meinedatei.csv" zurück.
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #3 am: 20.03.07 - 16:39:27 »
Ich wollte das mit so wenig wie möglich Code erledigen und wenn möglich ohne Umwege (Excel).
Mein Ansatz war/ist die Datei komplett einzulesen
HoleFile = Input(Lof(i_FileNum), i_FileNum)   
Dann mit strrightback...an den Anfang der Zeile.

Nur wie erkenne ich den Anfang??

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #4 am: 20.03.07 - 18:01:58 »
Ich würde es mal so versuchen:

Dim InputStr As String
fileNum% = Freefile()
   fileName$ = "d:\import1.txt"

Open fileName$ For Input As fileNum%

Do While Not Eof(fileNum%)
      Line Input #1,  InputStr$
      Loop

In InputStr$ sollte nun der Inhalt der letzten Zeile stehen.

Ist aus einem von meinen Importagenten rausgeklaut und ohne Anpassung o.ä.
Geht wahrscheinlich auch eleganter. Evt. kann das Line Input auch hinter den Loop

Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #5 am: 20.03.07 - 18:34:40 »
Sub Click(Source As Button)
   Dim izFile As Integer
   Dim fileName As String
   Dim fileContents As String
   Dim arr As Variant
   izFile% = Freefile()
   fileName = "c:\tms.log"
   Open fileName$ For Input As izFile
   fileContents = Input$(Lof(izFile), izFile)
   arr = Split(FileContents,Chr$(13))
   Msgbox arr(Ubound(arr))
End Sub

mal so als Schnellschuss
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #6 am: 20.03.07 - 18:43:35 »
Ich würd vor dem Msgbox arr(Ubound(arr)) noch ein Close ranhängen.
[...]
Close
Msgbox arr(Ubound(arr))
end sub
Zitat
If you omit fileNumber, Close closes all open files.
Offene Filehandles können nämlich wirklich für Ärger sorgen.

Ich würd sogar einen Errorhandler einbauen und da noch einmal ein extra Close.
« Letzte Änderung: 20.03.07 - 18:45:27 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #7 am: 20.03.07 - 18:47:51 »
sag ich doch, ist ein Schnellschuss und das Close habe ich schlichtweg vergessen.
Man kann die Datei auch as binary öffnen und mit Seek den EOF Pointer suchen. Dann muss man nur noch reverse von dieser Position aus bis zum Auftauchen des ersten CRLF suchen und hat den String der letzten Zeile; allerdings in umgekehrter Reihenfolge der Zeichen ...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Suche Weg die letzte Zeile einer Datei zu finden
« Antwort #8 am: 20.03.07 - 23:16:38 »
Also, mein Problem liegt hauptsächlich an dem aufsplitten der Datei.
Beim importieren bzw. zeilenweise einlesen wird jede Zeile korrekt abgearbeitet. Mit arr = Split(FileContents,Chr$(13)) wird aber die Datei nicht gesplittet, das Ende der Zeile wird also nicht mit Chr(13) abgegrenzt.
Hab auch schon Chr(10) & Chr(13) und einiges mehr versucht.

Merkwürdig!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz