Hallo Liste,
ich habe einProblem mir der Darstellung bzw. Umwandlung von chars.
Ich möchte gerne die Messages aus /var/log/messages in einem QT Programm
darstellen. Dazu schaue ich in bestimmten Abständen nach ob sich die
Dateigröße von messages geändert hat. Wenn ja lese ich die Differenz der
neuen und alten Größe ein und stelle das Ergebnis dar.
Leider ist das Ergebnis nicht ganz so wie ich es erwartet hatte. In meinen
Programm sieht das ganze so aus:
###################################
date mymachine kernel: counter = 10
date mymachine kernel: counter = 11
date mymachine kernel: counter = 12
date mymachine kernel: counter = 13
date mymachine kernel: counter = 14
date mymachine kernel: counter = 15 P
date mymachine kernel: counter = 16 !
###################################
Also ab und zu bekomme ich wohl falsche Längenangaben bzw. meine Berechnung
ist irgenwie falsch, denn wenn ich parallel "tail -f /var/log/messages"
mitlaufen lasse erscheinen dabei die ausgaben so wie sie sollen, nämlich:
###################################
date mymachine kernel: counter = 10
date mymachine kernel: counter = 11
date mymachine kernel: counter = 12
date mymachine kernel: counter = 13
date mymachine kernel: counter = 14
date mymachine kernel: counter = 15
date mymachine kernel: counter = 16
###################################
Hier mal auschnittweise mein Programm, vielleicht
kann mir jemand einen Tip geben
**************************************************************************
int oldsize,newsize;
QFile file("/var/log/messages");
QString tStr;
newsize=file.size();
DBG(4,cout<<"oldsize ->"<
Hi Rolf. On Thursday 06 March 2003 10:43, Rolf Lindenbring wrote: [...]
int oldsize,newsize; QFile file("/var/log/messages"); QString tStr;
newsize=file.size(); DBG(4,cout<<"oldsize ->"<
"< oldsize){ DBG(4,cout<<" neue daten"<
Hier legst du ein Feld an:
pStr = new char [(newsize-oldsize)];
file.at((file.size())-(newsize-oldsize));
An was sollte man immer denken, wenn man mit C Strings arbeitet?
file.readBlock(pStr,(newsize-oldsize));
Wurde der String mit '\0' abgeschlossen?
DBG(4,cout<<"pStr nachher "<
append(s);
Und da loescht du das erste Element deines Feldes, das ist dann im Allgemeinen ein Speicherloch.
delete pStr;
}
file.close();
}; oldsize=newsize;
*************************************************************************** **
MfG Rolf
Hallo, On Thu, 06 Mar 2003, Rolf Lindenbring wrote:
int oldsize,newsize; DBG(4,cout<<"oldsize ->"<
[X] du willst mindestens oldsize mit 0 initialisieren! -dnh -- "Linux ist kein Unix so wie ein Zebra kein Pferd ist. Da Zebras aber hübscher aussehen und generell kompatibel zu Pferden sind, ist das nicht weiter schlimm." -- Peter Bruells in d.c.s.m.m.
participants (3)
-
David Haller
-
Rolf Lindenbring
-
Sebastian Huber