Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » x-beliebige datein lesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.04.2009, 14:29 Uhr
~Jann
Gast


Hallo alle zusammen,

ich versuche gerade ein Programm zuerstellen, welches x-belibige Datein in einem Ordner einlesen soll und den Inhalt Byteweise in Felder abspeichern soll. Besser gesagt, ich möchte aus den Datein immer 128 Bit bzw. 16 mal 1Byte herrauslesen und dann die nächsten 128Bit. Datein können z.B. Bilder oder Videos oder txt sein?

Also ich habe 2 Probleme bei denen ich nicht weiter weiß.

1. x-beliebige Datein auslesen ?
2. Byteweise auslesen ?



Momentan versuche ich es über
ifstream Datei ("Datei.txt"); --> "Dat
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.04.2009, 00:33 Uhr
Hans
Library Walker
(Operator)


Hi,
na dann zeig uns mal Deinen Ansatz und erkläre genauer, wo es hakt, dann wird Dir auch geholfen. Im übrigen sind beim Borlandcompiler doch auch so wunderschöne Beispiel dabei.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.04.2009, 12:31 Uhr
~Jann
Gast


Also ich habe da bisher 2 Varianten:

1. versuche ich es über einen Buffer
->hierbei kann ich immer nur das gleiche einlesen (den Anfang).. also es rückt nicht weiter?

2. ich lese Zeichenweise(Byteweise denke ich??)
-> damit kann ich bilder jedoch nicht einlesen..es bleibt ebenfall immer an der gleichen stelle stehen?? bei text funzt es jedoch und ratter durch!

Welche Lösung ist den bisher der besere Ansatz (auch Zeiteffizient)?
Ist dies auch für Video stream geeignet?


-->Fragen über Fragen..aber ich hoffe ihr könnt mir weiter helfen.


C++:

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{  
    unsigned int anzbytes = 2;             // Zu lesende Blockgröße definieren
    char *buffer = new char [anzbytes];             // Speicher für Blockgröße holen
    
     char* b;
     ifstream D("Datei");
     D.read(buffer,anzbytes);              // block lesen und in "buffer" schreiben
     cout<<"b = "<<buffer<<endl;
     D.close();
     delete buffer;                     // Speicher freigeben  


   getchar();
   system("PAUSE");
   return EXIT_SUCCESS;

}






C++:

#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{

char gelesenes_Byte;

ifstream Datei1("test.png");

  while (Datei1.good())     // loop while extraction from file is possible
  {
    gelesenes_Byte = Datei1.get();       // get character from file
    if (Datei1.good())
    {
      cout << gelesenes_Byte <<endl;
     }
  }

    Datei1.close();

    getchar();
    system("PAUSE");
    return EXIT_SUCCESS;
}



 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.04.2009, 22:50 Uhr
Hans
Library Walker
(Operator)



Zitat von ~Jann:
1. versuche ich es über einen Buffer
->hierbei kann ich immer nur das gleiche einlesen (den Anfang).. also es rückt nicht weiter?


Das ist bei dem geposteten Code auch vollkommen korrekt; der ist so geschrieben, das nur die ersten zwei Bytes gelesen werden.


Zitat:
2. ich lese Zeichenweise(Byteweise denke ich??)
-> damit kann ich bilder jedoch nicht einlesen..es bleibt ebenfall immer an der gleichen stelle stehen?? bei text funzt es jedoch und ratter durch!


ich kenn mich mit den C++ streams leider nicht wirklich aus, aber ich denke, das eigentliche Problem sind da auch nicht die streams, sondern die Unterscheidung zwischen Textdateien und Binärdateien. Textdateien enthalten dabei nur solche Bytes, denen ASCII-Codes oder Uni-Code-Symbole zugeordnet werden können, sonst nichts. In Binärdateien kann dagegen alles mögliche drin stecken. Da ist man als Entwickler selber für die Interpretation verantwortlich. Im Falle von Bildern muss man wissen, wie Bilddateien aufgebaut sind, und was die einzelnen Bytes zu bedeuten haben. - Oder man ruft fertige Funktionen auf, die einem diese Arbeit abnehmen...

Ein weiteres Problem ist die Art, wie man Daten einliesst. Das kann man Byteweise, Zeilenweise oder auch Blockweise machen. Der Unterschied ist jeweils:
Byteweise: Man liesst jedes Byte einzeln, das hat den Vorteil, das man es sofort irgendwie weiter verarbeiten kann, dauert aber auch seine Zeit.
Zeilenweise: Ist für spezielle Textdateien sinnvoll, wo man weis, das eine Zeile eine bestimmte Länge nicht überschreitet.
Blockweise: Dabei liesst man immer eine festgelegte Anzahl an Bytes in einen Puffer. Anschliessend kann man diesen Datenblock "am Stück" verarbeiten. Wenn man damit fertig ist, holt man sich den nächsten Block.

Welche Art des einlesens dabei am sinnvollsten ist hängt vom jeweiligen Problem ab, d.h. von den Daten, die man verarbeiten will. Im Zweifelsfall hilft da nur ausprobieren, was am schnellsten ist.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: