Archiv verlassen und diese Seite im Standarddesign anzeigen : Basic o Pascal
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?
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.
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"
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.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.