Textdatei schreiben, bis bestimmte Größe

  • #1
S

sp00n

Aktives Mitglied
Themenersteller
Dabei seit
20.01.2006
Beiträge
35
Reaktionspunkte
0
Ort
Osnabrück / Göttingen
Hi,

mal ne kleine Frage zu VisualBasic ;)
Ich möchte bei meinem Programm, bei allen Ereignissen, eine Logdatei mitschreiben.

So..
..wie stelle ich es an, dass die Logdatei z.B. nur max. 30mb groß sein darf.
Sobald sie 30mb erreicht hat, soll nicht mehr neuer Text dazu geschrieben werden, sondern der alte Text mit dem neuen überschrieben werden.

Damit meine ich aber nicht, das ich abfrage, ob die Logdatei 30mb erreicht hat, und wenn ja, das sie komplett geleert wird.

Ich möchte, dass die ältesten Einträge (die ganz unten :D) gelöscht werden und neue (oben :D) hinzugefügt werden. Und das ganze eben im Rahmen von z.B. 30mb bleibt :)


Ich hoffe ich hab mich verständlich ausgedrückt ;)

mfG
sß00n
 
  • #2
ich glaube nicht dass das so sinnvoll umsetzbar ist. 30mb ist eine monstertextdatei. wenn du unbedingt so viel logdaten brauchst, solltest du dir eine logdatenbank aufbauen. dann hast du auch komfortabel und vor allem SCHNELL lese-/schreib-(lösch-)zugriff auf einzelne einträge.
 
  • #3
30mb war nur ein beispiel.. ;)
Die richtige Größe der textdatei überlege ich mir dann, wenn ich ne passende Funtion dafür habe :)
 
  • #4
Die richtige Größe der textdatei überlege ich mir dann, wenn ich ne passende Funtion dafür habe
wie schon angedeutet: falsche reihenfolge!
du entscheidest ja auch zuerst ob du zum nächsten supermarkt oder nach brasilien gehst, und wählst dann erst das passende verkehrsmittel dafür aus. ;-)
 
  • #5
hää? Muss ich das peilen :D

Das wichtige hier ist doch die Function.. die Dateigröße ist doch noch ganz egal..
soll ja variabel sein..

Die Function könnte zum Beispiel so aussehen: SchreibeLog(.\log.txt, 30000)

^^Natürlich hier sehr stark vereinfacht dargestellt :D
^^Die 30000 wären dann die 30000kb
 
  • #6
Bitteschön ;)

Code:
Private Sub WriteLogEntry(sLogFilePath As String, nMaxFileSize As Long, sEntry As String)
 Dim iFN_1 As Integer
 Dim iFN_2 As Integer
 Dim sLine As String
 Dim sTempLogFilePath As String
 
 sTempLogFilePath = sLogFilePath & .tmp
 
 If Dir$(sLogFilePath) <>  Then
  iFN_1 = FreeFile: Open sLogFilePath For Input As #iFN_1
  iFN_2 = FreeFile: Open sTempLogFilePath For Output As #iFN_2
  Print #iFN_2, sEntry
  Do Until EOF(iFN_1)
   Line Input #iFN_1, sLine
   If (LOF(iFN_2) + Len(sEntry & vbCrLf)) > nMaxFileSize Then
    Exit Do
   End If
   Print #iFN_2, sLine
  Loop
  Close #iFN_1, #iFN_2
  Kill sLogFilePath
  Name sTempLogFilePath As sLogFilePath
 Else
  iFN_1 = FreeFile: Open sLogFilePath For Output As #iFN_1
  Print #iFN_1, sEntry
  Close #iFN_1
 End If
End Sub

Private Sub Command1_Click()
-> Hier wird die Begrenzung auf 50 Bytes gesetzt
 WriteLogEntry C:\Log.txt, 50, EintragText
End Sub

Mfg Alexander
 
  • #7
Vielen Dank :)
 
Thema:

Textdatei schreiben, bis bestimmte Größe

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.841
Beiträge
707.970
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben