Eigene Buffer Klasse funtzt net
-
Hi,
ich hab mir ne buffer klasse geschrieben für ein Chat Programm, aber sie funtzt net.
der code:
buffer.h:
#ifndef BUFFER #define BUFFER #define BUFFER_FULL -1 #define BUFFER_EMPTY ° #include <string> using namespace std; class buffer { public: buffer(); ~buffer(); void write(string); string read(); int GetLength() const; private: int getlatestfree() const; void delall(); void dellast(); string Buf[100]; int Length; }; #endifbuffer.cpp:
#include "buffer.h" #include <iostream> #include <string> using namespace std; buffer::buffer() { delall(); } buffer::~buffer() {} void buffer::write(string text) { if(getlatestfree() != BUFFER_FULL) { Buf[getlatestfree()] = text; Length += 1; } else { std::cout << "BUFFER-FEHLER: Der Buffer ist foll! Versuchen sie es spaeter erneut!\n"; } } string buffer::read() { string buf; if(Buf[99] != "") { buf = Buf[99]; dellast(); return buf; } else { return "°"; } } void buffer::dellast() { for(int i = 99; i > 99 - Length; i--) { if(i != 0) { Buf[i] = Buf[i-1]; } else { Buf[0] = ""; } } Length -= 1; } int buffer::getlatestfree() const { int i; for(i = 99; i >= 0; i--) { if(Buf[i] == "") { return i; } } return BUFFER_FULL; } void buffer::delall() { for(int i = 0; i < 100; i++) { Buf[i] = ""; } Length = 0; } int buffer::GetLength() const { return Length; }Das Problem: ab und zu ist der buffer leer wo es nicht sein kann/sollte und wenn was drin ist, dann is auchnoch alles von der letzten nachricht drin.
z.B:
Nachricht eins: Hallo wie geht es dir? Nachricht zwei(eingabe): Gut! Nachricht zwei(ausgabe): Gut!o wie geht es dir?
Warum

-
Geheimtipp: Verwende einen Debugger
-
hab ich, aber ich finde das prob net
-
Ich denke mal es liegt daran, dass du dein Buffer nach Ausgabe deiner Message, nicht leerst

-
eigentlich schon, wenn read() aufgerufen wird wird ja auch die funktion dellast() aufgerufen die den letzten mit dem vorletzten string überschreibt!
-
ich hab das prob gelößt: es lag nicht am buffer sondern an ner variablen im haupt prog