lukagrom napisał(a):Tu chyba zwykłe dodawania na
char-ach wystarczy.
Długość pliku już znasz.
Wprowadź jakąs wartość pozycji od której chcesz zacząć, która + 28 nie przekroczy długości pliku.
Można przyjąć, że jeden char to jeden bajt.
char temp[pozycja+28];
char result[28];
char pierwsza;
file.seekg (0);
file.read (temp, size);
file.close();
int i,j;
for(j=0,i=pozycja;i<pozycja+28;i++,j++)
result[j]=temp[i];
pierwsza=result[0];
Do Memo wyprowadzasz tablicę result; do labela pierwszy jej element.
Z tym odczytem pliku nie ma problemu, po prostu nie wiem jak zrobić aby wyświetlać tylko konkretne bajty z pliku i to z automatu za pomocą pętli
void __fastcall TForm1::Button19Click(TObject *Sender) {
int ilosc = 504; // 5180 bajtow
streampos size;
byte * memblock;
ifstream file("USER.POS", ios::in | ios::out | ios::binary | ios::ate);
if (file.is_open()) {
size = file.tellg();
file.seekg(0, file.end);
memblock = new char(size);
file.seekg(0, file.beg);
file.read(memblock, size);
file.close();
for (int i = 0; i < ilosc; i++) // petla kolejnych
{
// CheckListBox1->Items->Add(memblock[i]);
ValueListEditor1->Strings->Add(memblock[i]);
}
Memo1->Lines->Add("JEBUT");
Edit34->Text = "Otwarto Pomyślnie";
Edit33->Text = (String) + (size) + " Bajtów";
delete[]memblock;
}
else
Edit34->Text = "Błąd Otwarcia Pliku!";
return;
}
Podgląd z HexEdytor
19 54 00 00 FD FF 45 72 FC FF B9 96 00 00 00 00 40 FF FF BF 00 00 00 00 00 00 00 0025 54 00 00 FD FF 98 73 FC FF 57 9A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 001D 54 00 00 FD FF B3 72 FC FF 5D 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Itd z taką ilością to bym zrobił to ręcznie ale tego jest więcej 100 200 lub nawet 300
To jest struktura pliku 28 Bajtów przykładowo 3x28 bajt. OK kodem powyżej czytam i wyświetlam wszystko w ValueListEditor1 lub w czymś innym...
Teraz Pytanie jak zrobić aby odczytać i wyświetlać, tylko pierwsze bajty
19
25
1D Itd.