Inhalt eines Arrays in datei speichern und wieder auslesen?
-
Hallo,
Ich dachte eher an so etwas
struct person { char name[20], vorname[20], handy[20]; int personalnummer, id; float gehalt; std::ostream& write(std::ostream& out) const; std::istream& read(std::istream& in); }; ostream& person::write(ostream& out) const { out.write(name, 20); out.write(vorname, 20); out.write(handy, 20); out.write((char*)&personalnummer, sizeof(personalnummer)); out.write((char*)&id, sizeof(id)); out.write((char*)&gehalt, sizeof(gehalt)); } istream& person::read(istream& in) { in.read(name, 20); in.read(vorname, 20); in.read(handy, 20); in.read((char*)&personalnummer, sizeof(personalnummer)); in.read((char*)&id, sizeof(id)); in.read((char*)&gehalt, sizeof(gehalt)); }
// Das könnte man dann so verwenden const int MENGE = 50; person test[MENGE]; ... // irgendwie füllen // rausschreiben ofstream out("test.hhh"); for( int i=0; i<MENGE; ++i) test[i].write(out);
Sowas natürlich nur wenn die Struktur der Datei keine Rolle spielt. Wenn die Datei lesbar sein soll, dann eher die Art von Joe.
-
Guten morgen!
Bekomm immer deklarations/syntax fehler...
Habe mal mein programm und die vorlage hochgeladen, vll versteht man dann mein problem bissel besser:
http://rapidshare.de/files/8079716/Winmax.zip.html
Leider auf so nen anbieter, weil ich gerade im büro sitze und mir der proxy keine ftp-verbindung zulässt... mehr rechte bekommt mal als Azubi nicht...Gruß
Max
-
Oder besser gefragt: womit mach ich mir die sache einfacher?
Danke
Max
-
Komme einfach nicht weiter...
habe sämtliche möglichkeiten ausprobiert, aber keine bringt mich wirklich zum erfolg...
Keiner mehr eine idee?
Gruß
Max
-
Kannst du mal den relevanten Teil (inklusive Fehlermeldungen) direkt hier posten? (mit dem angegebenen Link kann ich nicht wirklich etwas anfangen bzw. finde dort deine Datei vor lauter Werbung nicht)
-
machen wir es doch einfach mit streams
ofstream out();
ifstream in();und dann halt funktionen
ich schau mir das prog mal an
-
Der Max hi hi !!!!
Manuelmehlbeer@web.de
-
http://rapidshare.de/files/8387787/mitarbeiter.rar.html
da könnt ihr es runterladen
mit borland 6 kreirt.. jaja, die dummen tai's schaffen auch was....habe das problem mit fstreams gelöst..
filein und fileout...
ist doch net schwerliebe grüße
T I M
king-fred@web.de
-
schade.
meldet sich ja keiner und kritisert mich schlecht und das gesdchaffene
-
zu einem nen dicken pluspunkt dafür, dass im archiv wirklich mal nur die nötigen quellcode-dateien liegen und kein schlotter wie die temporären dateien.
allgemein zum programm...
- bei messageboxen immer die windows-konstanten verwenden, keine ahnung was die 16 bedeutet ohne das programm auszuführen oder in die quellheader zu gucken.
- was ist, wenn es mal 51 mitarbeiter werden?
- keine globalen variablen wenn es nicht unbedingt nötig ist
- code-formatierung ist unter aller sau.
- in schleifen gehören keine variablen rein// die würde ich davor schreiben, sonsts wird bei jedem schleifendurchlauf // der speicher fuer die char-array reserviert. for(int i=0 ; i<50 ; i++) { char name[20]; char vorname[20]; char handy[20]; int personalnummer; float gehalt; //...
- wusste gar nicht, dass so etwas funktioniert...
// vergleich eines strings mit einer zahl if (gehaltEdit->Text >= 99999 || gehaltEdit->Text < 1)
ach... könnte klappen, die zahl wird sicher vorher in nen String konvertiert und dann per Stringvergleich verglichen... äks.... ganz schlecht.
- beim speichern, gibts es keinen default-dateinamen!
- nach dem einlesen der daten stehen die in umgekehrter reihenfolge in der liste.
- das löschen funktioniert nicht!reicht das für's erste?
-
hallo.
also variabvlen in schleifen geht wohl - denn bei jedem dchleifen durchgang wird sie zwar neu erstellt aber nur so lange sie auch existiert. ist doch genauso wie bei funktionen. sprich - es wird 50 mal neu gemacht und 50 mal gelöscht.
[quote="Sunday"][/qoute]
code-formatierung ist unter aller sau. [/qoute]
richtig.
-aber das wollte ich dann nicht auch noch machen. ich ahbe ihm aj auch kommentare reingeschrieben[quote="Sunday"]
bei messageboxen immer die windows-konstanten verwenden, keine ahnung was die 16 bedeutet ohne das programm auszuführen oder in die quellheader zu gucken.
[/qoute]
-verstehe ich net?!
ich benutze meisten ShowMEssage(""); nur bei abfargen die messagebox;
aber ich galueb 16 stehet für bestimmte knöppe[quote="Sunday"]
keine globalen variablen wenn es nicht unbedingt nötig ist [/qoute]
-immer so loka wie mögluch (oder so public). aber er hatte es ja schon vorher so defineirt - daher habe ich es net gemacht.[quote="Sunday"]
- wusste gar nicht, dass so etwas funktioniert...
C/C++ Code:
// vergleich eines strings mit einer zahl
if (gehaltEdit->Text >= 99999 || gehaltEdit->Text < 1)
[/qoute]
also meiner meinung nach get das net wirklich - weil man es so machen müßte
if (gehaltEdit->Text.ToInt() >= 99999 || gehaltEdit->Text.ToInt() < 1)und mit der konvertierung des strings müßte man es aber dann so schreiben "9999". weil er sonst den ausdruck nciht als string nimmt.
ICH habe mich acuh nur aufs speichern konzentriert und vernünftige namen den komponenten gegeben[quote="Sunday"]
beim speichern, gibts es keinen default-dateinamen! [/qoute]
ja und? dass kann er machen - ich hatte no bock da jetzt noch nen filter einzuabuenund zum löschen!? hmm. keine ahnung. das hatte ich net getestet. habe ich da etwa kot verschwinden lassen?
mit dem einlesen... hmmm dann muss ich sie rückwärts abspeichern...
das darf dann der verfasser machen.... Tipp
mit schleife bis an den ersten eintrag von hinten gehen und ab dann speichern mit rückwärts forschleifenliebe grüße
der ultra n00b
-
schick^^
sorry fürs falsche qoute
-
bezog sich ja auch nicht auf dich, sondern den code allgemein!
die 16 in der messagebox bedeutet verschieden buttons + icons, aber welche erkennt man daran nicht, deshalb die konstanten verwenden, damit auch andere, die den code nicht geschrieben haben, ihn verstehen!
variablen in schleifen sind insofern schlecht, weil sie, wie du richtig erkannt hast, immer neu angelegt und freigegeben werden (speziell arrays). bei 50 durchläufen faellt das sicher nicht ins gewicht, aber angenommen das programm soll mal 10000te mitarbeiter eines grossen unternehmens verwalten (ja ich weiss, dass man das programm dann ganz anderes aufbauen würde, nur rein hypothetisch), dann hast du damit einen riesen overhead an zusätzlichen code der völlig unnütz ist.
-
also soweit ich weiß, wird das jedesmal wieder gelöscht.
deine variablen, und wenn es ein struct von einer klasse vom array von struct vom 3d array ist und meinetwegen auch 100MB groß (utoipisch :)) nach durchlauf der schleife oder funktion werden die wieder gelöscht bzw vom heep entfernt wenn du sie dynamisch machst oder so...
ist doch richtig oder?was sagt denn jetzt der verfasser zu meinem können?
irgendwie gibbet da keine rückmeldung. schade...
-
mir gehts eigentlich nur darum, klar zu machen, dass das anlegen, reservieren und freigeben der array einen haufen zeit benötigt (hier in diesem fall kommt das nicht so zu tragen, das die datenstruktur klein und die anzahl der schleifendurchläufe gering ist). sowas sollte man direkt vermeiden um nicht später einmal in komplexere programmen auf die nase zu fallen. bei grösseren strukturen/klassen sollte man die daten dynamisch anlegen und nicht wie hier statisch, denn irgendwann ist der stack voll und nichts geht mehr!
-
danke für den tipp werde sowas in zukunft beachten
p.s. ich bin der n00b. mir fiel mein user name wieder einlieeb grüße
T I MICH WARTE IMMER NOCH AUF DEN THREADVERFASSER... da mache ich mir ne stunde mühe und dann so ne kacke... der gibt das jetzt bestimmt ab und meldet scih ent
-
Hi!
Erstmal nen riesen danke an T I M bzw. dern00b bzw. masterfu, hast mir sehr weiter geholfen!
Jetzt versteh ich wenigstens ein wenig davon
Kann es aber leider nicht ausführen, der sagt Linker-Error -- RTL.LIBSorry das ich mich nicht meldet habe, war die Tage nicht im Büro, sondern Kundendienst machen.
Ist nen projekt für die Berufsschule, ITSE zweites Lehrjahr.
Danke an alle, jetzt tuts so wies muss
Gruß
Max
-
joa kein ding - ich erwarte hier ja auch immer hilfe.
linker error sind immer pervers. kann ich diur net sagen. bin doch nur dummer TAFIliebe grüße
T I M
-
Jo der Max und der Meli ^^ Ich such auch gerade nach dem scheiss Probelm für das Projekt ist echt zum kotzen !!!