Zum Inhalt springen

The Incredible Fufialk

Mitglieder
  • Gesamte Inhalte

    32
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von The Incredible Fufialk

  1. Ich wollte hier keine Diskussion über Standards auslösen. Bei mir hat es keine Fehlermeldung verursacht, aber ich werde mich trotzdem von nun an an die Standards halten. Hat denn nun noch jemand einen Tipp zum eigentlichen Thema?
  2. Hallo, ich möchte mit meinem Programm Daten aus einer Datei in ein Array einlesen. Da meine Dateien jedoch unterschiedlich viele Werte enthalten suche ich nach einer Möglichkeit, die Größe des Arrays während der Laufzeit korrekt anzupassen. Ich stelle mir das ungefähr so vor: void main() { ofstream ofl; // Ausgabestrom char fileread[64]; // Dateiname der einzulesenden Datei char filewrite[64]; // Dateiname der Auszugebenden Datei double c; // Eingabezeichen char rep; // Kontrollvariable int y; // Array zum einlesen der Daten int i = sizeof(fileread); cout << "\n\n Geben Sie den Dateinamen der zu bearbeitenden Datei ein: "; cin.getline(fileread, 64); ifstream ifl(fileread, ios::in|ios::binary); //öffnen der Datei zur Eingabe im Binärmodus ifl.read((char*)y, sizeof(y)); // Dateiinhalt in Array y einlesen ifl.close(); ..... Bei dieser Vorgehensweise bleibt die Größe meines Arrays jedoch immer konstant. Vielleicht kennt ja jemand den Trick. Danke
  3. Also die Struktur ist nicht das Problem, würde für meinen Fall so aussehen: struct { int block1; int length1; long int zeit1; int werte1[32]; int block2; int length2; long int zeit2; int werte2[24]; } Messwert; Auf Grund mangelnder Kenntnisse weiß ich aber nicht, wie ich die Daten korrekt aufgeteilt bekomme. Die Literatur die ich benutze beschreibt nur, wie die Structuren sofort deklariere bzw. wie ich über Tastatureingaben weitere werte zuweisen kann. Habt Ihr da vielleicht noch einen Tipp, wo ich das mal nachlesen könnte? Vielen Dank.
  4. Habe mich oben etwas ungünstig ausgedrückt. Die Reihenfolge der Daten ist folgendermaßen: Blocknummer (int), Anzahl der Messwerte (int), Zeitstempel (long int), Messwerte (int) mit maximal 32 Werten je Block.
  5. Also ich denke auch nicht, dass es viel Sinn macht ein neues Betriebssystem zu entwickeln. Wichtiger wäre bestehen BS zu verbessern, bzw. dem User die Möglichkeit zu geben das BS an die eigenen Bedürfnisse anzupassen. Einen großen Nachteil sehe ich, dass die Hardwareentwicklung schon so weit forgeschritten ist. denn die bisherigen BS sind ja meist parallel zur Hardware entwickelt worden. So konnte man Schritt für Schritt auf bisherige Kenntnisse aufbauen und das fortsetzen. Bei Null anzufangen bedeutet, dass man erst mal 40 Jahre Rechnerevolution aufholen bzw. abarbeiten muss. Und mal ganz ehrlich, wie viele Programmierer wissen heutzutage noch, wie ein Transistor funktioniert? Die haben Ihre Schnittstelle an die Sie andocken müssen, und das war es. Was dahinter kommt interessiert nicht mehr. Dazu sollte man auch die Trägheit und die Ansprüche der übrigen Anwender berücksichtigen. Die dazu zu bewegen sich von dem gewohnten zu verabschieden und "alles neu zu lernen" stelle ich mir weitaus schwieriger vor, als die Entwicklung selbst. Und letzendlich kann man es eh nicht allen recht machen. Dazu sind die Leute, zum Glück, zu verschieden.
  6. Habe die Klammern nur gesetzt, um die Blöcke zur besseren verständnis zu trennen. Der Messwert selbst kann bis zu 32 Worte lang sein habe das ~ nur als Platzhalter eingefügt. Im File stehen dort natürlich echte Werte.
  7. Ich bekomme ein Messdatenfile als Hexstream und will diesen wieder in eine lesbare Tabelle umwandeln. Die einzelnen Daten sind dabei folgendermaßen aufgelistet: 1.Wert [blocknummer (integer),Datenlänge (integer), Zeitstempel (long integer), Messwert (integer)] und dann kommt der nächste Wert. Der Stream sieht dann ungefähr so aus: [0200 2000 F511DF41 64000000~0083] [0200 2000 F511DF41 64000000~0083] Derzeit lese ich noch alles in ein Array ein, was aber quatsch ist, da ich ja verschiedene Typen habe. Vielleicht kann mir ja jemand einen Tipp geben, wie ich vorgehen kann. Hänge mal meinen Quelltext an, damit Ihr wisst, wie weit ich bin. Code: #include <iostream.h> // cin, cout #include <fstream.h> // ifstream, ofstream #include <stdlib.h> // exit, rand #include <iomanip.h> // setw #include <conio.h> // getch void main() { ofstream ofl; // Ausgabestrom char fileread[64]; // Dateiname der einzulesenden Datei char filewrite[64]; // Dateiname der Auszugebenden Datei double c; // Eingabezeichen char rep; // Kontrollvariable int i; // Zähler Zeile int y[1000]; // Array zum einlesen der Daten begin: // Label cout << "\n\n Geben Sie den Dateinamen der zu bearbeitenden Datei ein: "; cin.getline(fileread, 64); ifstream ifl(fileread, ios::in|ios::binary); //öffnen der Datei zur Eingabe im Binärmodus if (!ifl) // Fehler beim öffnen der Datei { cerr << "\nFehler beim oeffnen der Datei! " << fileread; cout << "\n\nWollen Sie es noch einmal versuchen? (j/n)"; rep = cin.get(); while (cin.get() !='\n'); // Tastaturpuffer leeren für Schleife bei falscher Eingabe if (rep == 'n') { exit (1); } else { goto begin; } } ifl.read((char*)y, sizeof(y)); // Dateiinhalt in Array y einlesen ifl.close(); weiter: cout << "\n\nUnter welchem Namen soll die datei gespeichert werden?: "; cin.getline(filewrite, 64); ifstream cfl(filewrite); // Datei für Ausgabe öffnen if (!cfl) goto open; else { // Fehler beim öffnen cout << "\nFehler! Die Datei " << filewrite << " ist bereits vorhanden!"; cout << "\n\nGeben Sie einen anderen Dateinamen ein!"; goto weiter; } open: ofl.open(filewrite); for (i = 0; i < 10000; i++) // gelesene Werte in Array schreiben { ofl.precision(8); // Zahlen auf 8 Stellen begrenzen ofl << setfill(' ') << setw(18) << dec << y; // gelesene Werte anzeigen if(!((i+1)%18)) // 18 Werte pro Zeile ofl << endl; } ofl.close(); cout << "\nKonvertierung abgeschschlossen.\nDie Datei " << fileread << "\nwurde unter dem Namen " << filewrite << " abgespeichert."; cout << "\n\n\Zum Beenden druecken Sie eine beliebige Taste."; getch(); }

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...