Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Datei aus Datein schneiden (binär)

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 < [ 2 ]
000
03.11.2002, 20:01 Uhr
~Ludwig
Gast


Also ich habe eine große date (nicht von mir erstelt) in der sich mehrer kleine datein befinden.Eine der Datein fängt in der zeile 28C0 Offset 0 an und hört in der zeile 2BFA0 Offset5 auf.So jetz meine Frage wie kann ich diesen Teil in eine einzelne Datei bekommen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.11.2002, 20:18 Uhr
~Ludwig
Gast


Coll wäre auch wenn ich nach hir suchen könnte und dann raus schneiden weill dann is die chance größer das ich 100% das richtige rausschneide.

Sie fängt an mit (Binär) 4C 33 44 30 61 21 02 00 D2 96 00 00 01 00 00 00
4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00

Hört genau so auf (Binär) 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1
11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1
11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1 11 F1
11 F1 11 F1 11 F1

Dies is der eindeutige Anfang/ das eindeutige Ende.Dies finde man so nur 1 mal in der Datei 100% ich würde lieber so arbeiten weildas am sichersten ist.

Giebt es für sowas vereinfachungen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.11.2002, 20:21 Uhr
~Ludwig
Gast


Dies is der eindeutige Anfang / das eindeutige Ende der Datei.Dies finde man so nur 1 mal in der Datei. Ich würde lieber so arbeiten weil das am sichersten ist.

Giebt es für sowas vereinfachungen?

(Das is ETWAS beseres Deutsch.Ihr müst mich entschuldigen ich habe eine Rechtschreibschwäche bitte rechnet mir das nich Negativ an)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.11.2002, 20:46 Uhr
~Ludwig
Gast


Ich habe festgestellt das sich am anfan der vom Offset 4 bis Offset 9 etwas änder kann den ich habe den anfang z.b auch mal so aufgefunden

4C 33 44 30 49 23 0A 00 70 7F 00 00 01 00 00 00
4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00

oder

4C 33 44 30 38 21 0A 00 58 99 00 00 01 00 00 00
4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00

Dies sind aber die einzigen veränderungen. Wo bei die Reinfolge 4C 33 44 30 in der ganzen Datei auch einzig artig ist.Dann könnte man die suche nach dem anfang anfang ja auf 4 byte runtersetzen dan währen die änderungen egal und er würde den anfang trotzdem finden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.11.2002, 20:54 Uhr
Hans
Library Walker
(Operator)



Zitat:
~Ludwig postete
Also ich habe eine große date (nicht von mir erstelt) in der sich mehrer kleine datein befinden.Eine der Datein fängt in der zeile 28C0 Offset 0 an und hört in der zeile 2BFA0 Offset5 auf.So jetz meine Frage wie kann ich diesen Teil in eine einzelne Datei bekommen.


Hallo Ludwig,

klar geht das. Wenn Du die Zeile, bzw. die Adresse weist, wo das anf?ngt, was Du haben willst, ist es auch kein Problem.
Du ?ffnest die Datei zum lesen, und ?berliest den Inhalt bis zu der Stelle, wo das anf?ngt, das Dich interesiert. Dann ?ffnest Du eine zweite Datei zum schreiben, und kopierst alles aus der ersten Datei da herein, was Du darin haben willst. Dann schliesst Du die Datei(en) wieder.


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
005
03.11.2002, 21:12 Uhr
~Ludwig
Gast


Vom Prinzip weis ich wie das Funktioniert.Nur leider scheidert es an der umsetzung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.11.2002, 08:30 Uhr
Volle



Hallo Ludwig,

dann poste doch mal deinen Ansatz hier im Forum und beschreibe, womit du konkret nicht weiterkommst. Dann kann dir sicher auch geholfen werden.

Gruß, Volle.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.11.2002, 17:24 Uhr
~Ludwig
Gast


Ich haber erlich gezagt keine Idee wie ich das umsetzen soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.11.2002, 02:40 Uhr
Hans
Library Walker
(Operator)


Hallo Ludwig,

hier mal ein kurzes Programm, das einen Datenblock aus einer Datei heraus kopiert, und in eine andere schreibt.


C++:
/* Datei: be.c    (Block Extracter)
  
   Programm zum extrahieren eines Datenblocks aus einer Datei.
   * Es liest die Eingabedatei Byteweise, und zählt dabei mit.
   * Wenn die Anfangsadresse des zu extrahierenden Blocks erreicht wurde,
     beginnt es, diesen in die Ausgabedatei zu kopieren.
   * Der Kopiervorgang ist zu Ende, wenn die Endadresse erreicht wurde; dann
     werden beide Dateien geschlossen.

   Version 0.1 by HGP
*/


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  FILE *in, *out;

  int l, blockanf, blockend;
  char ch, *chptr;

  /* Kommandozeile überprüfen. Dort müssen 4 Argumente angegeben sein. Wenn
     es mehr oder weniger sind, wird ein kurzer Bedinhinweis ausgegeben, und
     das Programm beendet. (Warum auf argc!=5 getestet wird, bitte bei der
     Erklärung der main()-Funktion nachsehen.
  */

    if (argc!=5)
     { printf ("\nAufruf: be <Eingabedatei> <Ausgabedatei> ");
       printf ("<Startadresse> <Endadresse>\n");
       exit (1);
     }

  /* Die angegebenen Dateien öffnen */
    if ((in=fopen(argv[1], "rb")) == NULL)
     {
       fprintf(stderr, "Can't open input file: %s\n", argv[1]);
       exit(1);
     }

    if ((out=fopen(argv[2], "wb")) == NULL)
     {
       fprintf(stderr, "Can't open output file: %s\n", argv[2]);
       exit(1);
     }

  /* Variablen initialisieren */
  blockanf = atol(argv[3]);    // Anfangsadresse des Blocks
  blockend = atol(argv[4]);   // Endadresse des Blocks
  l=0;
  chptr=&ch;     /* Weil fread, bzw. fwrite einen Zeiger erwarten, wird hier  
               ein Zeiger auf den char zugewiesen. */


  /* Überlese den Inhalt der Datei, bis der zu kopierende Block erreicht ist */
  while (l < blockanf)
      { fread(chptr, 1, 1, in);    // Ein Byte aus der Eingabedatei lesen
        l++;                // und Zähler erhöhen
      } /* while-Schleife */

  /* An dieser Stelle ist l==blockanf, d.h. so gross wie die Startadresse.
     Deshalb wird ab jetzt kopiert, bis l den Wert von blockend erreicht hat.
  */

  while (l <= blockend)
      { fread(chptr, 1, 1, in);    // Ein Byte aus der Eingabedatei lesen,
        fwrite(chptr, 1, 1, out);    // in Ausgabedatei schreiben
        l++;                // und Zähler erhöhen
      } /* while-Schleife */

  /* Wenn wir alle Bytes kopiert haben, müssen wir die Dateien wieder
     schliessen, und sind fertig.
*/

  fclose (in);
  fclose (out);

  return 0;
} /* main */




Ich hoffe, es ist ausführlich genug kommentiert, und Du damit was anfangen kannst. Aber bitte beachten: Es ist keine Fensteranwendung, sondern ein Programm für die Komanndozeile, bzw. der DOS-Box. Da es keinerlei Win-API-aufrufe enthält, kann man es auch unter DOS, OS/2, Linux oder was weis ich ohne Probleme übersetzen und laufen lassen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 05.11.2002 um 02:47 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.11.2002, 15:57 Uhr
~Ludwig
Gast


Geht das irgent wie auch mit Win-Api oder sogra MFC?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


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: