Verfügbare Informationen zu "[C++]Problem mit Dateilese/schreibfunktion"
Qualität des Beitrags: Beteiligte Poster: Dirty Oerty - exbs Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: C / C++ Antworten: 6 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: [C++]Problem mit Dateilese/schreibfunktion Letzte Antwort: vor 17 Jahren, 2 Monaten, 24 Tagen, 17 Stunden, 20 Minuten
Alle Beiträge und Antworten zu "[C++]Problem mit Dateilese/schreibfunktion"
Re: [C++]Problem mit Dateilese/schreibfunktion
Dirty Oerty - 23.01.2007, 18:55[C++]Problem mit Dateilese/schreibfunktion
tag,
hab mal wieder ein problem :D
folgendes: ich hab mich nun in die WinAPI etwas eingelesen (also erstellen von fenstern zur laufzeit etc).
nunja, dabei klappt nun alles. also hab ich angefangen, mein "notizprogramm mit verschlüsselung" von C nach C++ zu schreiben und dann noch draus ne fensteranwendung werden zu lassen.
ich hab mir folgenden aufbau überlegt:
ordner "data"
in dem ordner ne datei "data.cab" (die extension is ja egal)
und in die datei alle schon registrierten benutzernamen (damit keiner doppelt registriert ist)
außerdem noch im hauptverzeichnis zu jedem benutzer ne datei mit seinem namen, da steht das passwort drin.
gut, ich kann mit meinem code nun genau 7 enutzer "erstellen", dannach bekomm ich immer nen absturz. (wenns von der IDE gestarted wird, freierts ein, wenns einfach so von windows gestartet wird, dann kommt ne fehlermeldung "zugriff auf soundso von soundso mit dem befehl read nicht möglich" und es wird beendet)
nun hab ich ein bisschen rumprobiert und musste feststellen, dass wenn ich die "data.cab" entleer, bevor ich das programm zu 8.mal aufruf, die fehler und abstürze weg sind
hier nochmal der aufbau der "data.cab"::
gdfghfhdthdh
ghdthdthht
fhdthdthdth (ein paar zeilen müll)
name1
name2
name3
name4
name5
name6
name7
name8 wird nie gespeichert. wenn ich name7 lösch, dann kann ich noch nen benutzer erstellen (dessen name dann an stelle von name7 steht)
ok, ich glaub, das beschreibt mein prob ganz gut.
es muss also an der funktion liegen, die die "data.cab" schreibt.
hier der code:
Code:
bool RegisterUser (char* Name, char* Passwort)
{
ifstream inDatab;//lesestream initialisieren
inDatab.open("\data\\data1.cab");//data1.cab öffnen (datei mit reg benutzern)
if (!inDatab) {//Data1 geht nicht auf? => Programm wurde mainpuliert
MessageBox(g_Hmainwnd,"Kritischer Fehler: Die Datenbank ist nicht vorhanden!\nStarten Sie das Programm neu!","Fehler: Datenbank fehlt",MB_OK | WS_VISIBLE);
return FALSE;//Fehlschlag
}
inDatab.seekg(663);//an lesepos hinter den müll setzen
char* bufferdb = new char[8];//Speicherbuffer
int* compcount = new int;//Zählt die Übereinstimmungen
int* ccount = new int(0);//Länge
while (!inDatab.eof())//wenn dateiende, dann schluss
{
inDatab.getline(bufferdb,8);//eine zeile von max 8 zeichen lesen
while (*bufferdb)//nicht über char[]länge hinauslesen
{
if ((char)(((int)(*bufferdb))+2) == *(Name+(*ccount))) {//gleicher buchstabe, dann:
*compcount+=1;//eine übereinstimmung mehr
}
*ccount+=1;//länge um eins erhöhen
bufferdb+=1;//nächstes zeichen
}
if (*ccount == *compcount) {//Länge = Übereinstimmungen? (alles gleich)
inDatab.close();//stream wieder schließen
return FALSE;//Fehlschlag
}
}
inDatab.close();//stream schließen
delete [] bufferdb,compcount,ccount;//speicher freigeben
if (!MakeUserDat(Name,Passwort)) { //Benutzerdatei erstellen
return FALSE;//Fehlschlag
}
ofstream outDatab;
outDatab.open("\data\\data1.cab",ios::app);
while (*Name)
{
outDatab << (char)(((int)*Name)-2);
Name++;
}
outDatab << '\n';
outDatab.close();
return TRUE;//neuer benutzer erfolgreich registriert
}
ok, meine frage is ja schon (hoffentlich) klar.
also, warum geht das nicht??
mfg
daniel
Re: [C++]Problem mit Dateilese/schreibfunktion
exbs - 23.01.2007, 21:49
bin net so tief drin in api ... hab mal begonnen aba das erstmal auf eis gelegt. und ich seh (sry) in dem code mit den ganzen komentaren och net so gut durhc. das erste was ich fragn würde ist irgendwo nicht genug speicher reserviert für die textdatei ... sprich wenn du liest oda schreibst ... ?!
Re: [C++]Problem mit Dateilese/schreibfunktion
Dirty Oerty - 23.01.2007, 22:10
nunja, also "speicher für die datei" ist nirgendwo im code richtig per dymn speicherzuweisung gegeben. ich hab halt nen ofstream gmacht.
und wenn du den speicher meinst, auf den der charpointer zeigt, des kann ja nicht sein, weil der wird ja
1. bei programmende wiederfreigegeben (kommt vllcht nicht rüber, aber zwschn den einzelnen registrierungen der benutzer wird das prog immer wieder neu gestartet.)
2.nach jedem auslesen wieder überschrieben, bis max 8 stellen
allerdings hab ich noch n bisschen rumprobiert, wenn ich den müll vorne lösch, dann gehts (zumindest hab ich nun schon 14 benutzer gescafft)
aber warum geht das mit müll vorne dran nicht?
ich kann dir auch mal den kommentar rausmachen, wenn du willst.
Re: [C++]Problem mit Dateilese/schreibfunktion
exbs - 23.01.2007, 22:32
Das hört sich für mich echt so an als wäre net genug speicher da. Wenn ich mir den "Müll" so anseh is das eigl genau das, was dann den Pltz für namen bis 14 braucht. Dumm nur ist, dass ich in eigl nur in C schreibe und deswegen an einigen stellen nen bisschen aufn schlauch steh. Warum machs´t du denn den speicher net dynamisch ?
Re: [C++]Problem mit Dateilese/schreibfunktion
Dirty Oerty - 23.01.2007, 23:35
ich weiß nich ob das mit ofstream geht, das ist ja genaugenommen ne klasse.
Re: [C++]Problem mit Dateilese/schreibfunktion
Dirty Oerty - 24.01.2007, 19:56
also es geht nicht, habs probiert mit
ifstream* inData = new ifstream;
die zeile ging, aber die nachher nicht. also zeilen wie:
if (!inData) {...}
es ging auch nicht so:
if (!*inData) {...}
fällt jemanden vllcht ne bessere funktion dafür ein?
also vom prinzip her.
mfg
daniel
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Hello World - gepostet von icewulf24 am Mittwoch 03.10.2007
Automatisch abschalten - gepostet von ThE_B0MBeRMaN am Mittwoch 22.11.2006
Malloc Verständnisproblem - gepostet von Zuul am Donnerstag 04.01.2007
Quersumme errechnen - gepostet von rattenfan am Sonntag 28.01.2007
Zeichen - gepostet von schlodel am Freitag 13.04.2007
Wurzelberechnung - gepostet von Kimi am Samstag 17.11.2007
Programm aufrufen in ASM - gepostet von r00tnix am Freitag 28.07.2006
Suche geeignete programmiersprache - gepostet von vpascal am Mittwoch 08.08.2007
2 Fragen - gepostet von d.d.d. am Samstag 24.03.2007
C-Programm aus C-Programm starten ??? - gepostet von Stevox am Mittwoch 13.12.2006
Ähnliche Beiträge wie "[C++]Problem mit Dateilese/schreibfunktion"
Wir haben ein Problem!!! - Langi (Freitag 09.11.2007)
Hassu N Problem ????? - Anonymous (Montag 13.12.2004)
schon das erste problem.... :-( - jonnyb (Donnerstag 21.06.2007)
Ein PC NooB hat ein Sound Problem - Vergil (Mittwoch 31.10.2007)
Problem - Dragonfly (Samstag 21.07.2007)
Rießen Problem!!Bitte alle lesen!!!! - Jule14 (Samstag 07.01.2006)
!!! kleines Problem bei Bundesliga 05/06 !!! - bundesliga0506 (Mittwoch 20.07.2005)
Point of Existence 2 Mod Singleplayer Problem! - dirtrunner (Dienstag 05.09.2006)
Und noch ein Altbekannter Aero - BAUR547 (Donnerstag 03.11.2011)
USKO - ServerLogin Problem "Disconnected from Server&qu - rauron (Freitag 21.04.2006)