Net-srac Geschrieben 18. Juni 2001 Geschrieben 18. Juni 2001 Hi freunde.Ich hab hier n mittelschweres Problem. Ich soll ein Programm schreiben, dass über eine Socketverbindung zu einem anderen Rechner ein Datenpaket überträgt (binär) Diese übertragung soll dann gemessen (Zeit) werden. Also die verbindung hab ich schon hergestellt. Daten kann ich auch schon übertragen, aber nur solche, die ich vorher in meinem Programm in ein Editfeld geschrieben habe. Wie kann man den z.B. den Inhalt einer Datei übertragen? Muß man die vorher Zeile für Zeile in ein Array speichern? Oder gibts da eine Funktion, die einem die mühe abnimmt? :confused: Ich hab keine Ahnung mehr, was ich machen soll?! Very Thnx4Help Zitieren
Net-srac Geschrieben 20. Juni 2001 Autor Geschrieben 20. Juni 2001 Wie kann ich denn einen Dateiinhalt in einen CString speichern? ich habs jetzt so gemacht. char *InputString; FILE *MeineDatei; MeineDatei = fopen("C:\\calc.db", "r"); while(!feof(MeineDatei)) { InputString = new char[255]; fgets(InputString, 255, MeineDatei); m_strMessage = InputString; delete InputString; } fclose(MeineDatei); Das ist mir aber zu wenig mit den 255 Zeichen. Hilft mir da ein CString weiter? Wie krieg ich denn den Inhalt direkt in die m_strMessage? :confused: Thnx4Help Zitieren
Crush Geschrieben 20. Juni 2001 Geschrieben 20. Juni 2001 Nur ganz kurz zu dem Thema mit dem CString: Um den Inhalt vom CString korrekt zu übergeben muß man die Funktion GetBufferSetLength() auf die Länge des Const Char Arrays setzen. Anscheinend kann ein CString mehrfach gesplittet sein. D.h. die ersten 100 Zeichen hier im Speicher die nächsten 100 sonstwo. Offensichtlich handelt es sich bei CStrings um verkettete Listen. Ich habe das zwar selber noch nicht genau untersucht aber ich habe beim memcpy gemerkt, daß nur GetBufferSetLength()zum korrekten Ergebnis geführt hat. Damit wird ein konstantes Array angelegt und der ganze CString rüberkopiert. So kann man dann richtig auf die einzelnen chars zugreifen (zum Beispiel mit dem Weiterreichen von Binärdaten aus einer Datei). Natürlich könnte man auch die GetAt() oder []-Operatoren beim CString benutzen, aber dann könnte man ja die binärdaten gleich beim Auslesen direkt rüberschieben. Auf jeden Fall kann man so mit Pointer auf CString-Inhalte arbeiten. Zitieren
Cool-Matthias Geschrieben 22. Juni 2001 Geschrieben 22. Juni 2001 Also mal ne Anmerkung! Um ne Datei einzulesen, würde ich nie irgendne Stringklasse verwenden, wozu auch? das mit dem Array ist schon garnicht so schlecht. Aber wenn du groessere Dateien einfach nur einlesen willst, dann leg dir doch ein Array von 64000 oder mehr an und lies dann die Datei mit ner normalen read-Funktion (z.B. fread) ein. (achte aber darauf den Modus auf binär zu setzen) Damit wär glaub ich auch deine erste Frage beantwortet. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.