PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Basic o Pascal


Supa
2003-06-04, 19:50:33
hab ein problem wie kann man in basic/pascal (welches ist mir egal) eine datei öffnen, in dieser nach einem besimmten heximal string suchen, dann daten von dem string bis zu einem zweiten rauskopieren (2. müßte auch gesucht werden) und das ganze dann als 2. datei abspeichern?

Supa
2003-06-05, 21:51:28
ok wenn mir keiner helfen will... hab mal eben mir nen paar kenntnisse in c++ angeeignet....



#include <iostream.h>

#include <fstream.h>

#include <stdlib.h>



long n;



int main ()

{





char * buffer;

long size;

ifstream file ("handy.dat", ios::in|ios::binary|ios::ate);

size = file.tellg();

file.seekg (0, ios::beg);

buffer = new char [size];

file.read (buffer, size);

file.close();



for( n= 1; n < size, buffer[n] != "0xFF" , buffer[n+1] != "0xd8" ; n++ );



// n sollte dann an der richtigen stelle sein....



return 0;

}



also das ist nur der anfang aber könnte mir wer sagen was daran falsch ist, bekomm immer einen error in der for-schleife, "cannot convert char to char*"

Haarmann
2003-06-05, 22:34:19
Holst Dir per Pascal das File rein (wohl als Text). Nimmst die Size,vermurkst den Pointer und behandelst die Scheisse nun als Bytefeld ;). Der Rest is wohl Formsache - Ich liebe Pointers.

Xmas
2003-06-05, 22:36:20
.

Supa
2003-06-05, 22:40:35
Original geschrieben von Xmas
Das sollte so aussehen:

for( n= 1; n < size, buffer[n] != 0xFF , buffer[n+1] != 0xd8 ; n++ );


"" Kennzeichnet einen String, du willst aber die Zahlen miteinander vergleichen.

ich will eigentlich die hex werte der in dem array gespeicherten bytes mit den oben ("ff" u. "d8") vergleichen...

bei deiner version kommt "error: constant out of range in comparison in function main"

Xmas
2003-06-05, 22:48:22
Original geschrieben von Supa

for( n= 1; n < size, buffer[n] != "0xFF" , buffer[n+1] != "0xd8" ; n++ );


Vergiss das was ich eben geschrieben hab wieder, in einem for hat ein Komma nichts verloren.

Du willst also in dem Puffer die Bytefolge FF D8 finden?

Dann so:

for(n = 0; (n < (size - 1)) && !((buffer[n] == 0xFF) && (buffer[n+1] == 0xd8)) ; n++ );


Dabei musst du beachten dass n dann auf das Byte mit dem Wert 0xD8 zeigt. Oder aber auf das letzte Byte des Puffers.