PDAclub.pl - Forum użytkowników technologii mobilnych
Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Oprogramowanie PPC => Dla programistów => Wątek zaczęty przez: mustela w Lipiec 31, 2007, 11:50:40
-
Heja,
Mam problem.
Musze dosc duzy plik (duza ilosc danych) zmapowac w pamieci.
tzn.
Mam plik z duza iloscia danych. chce miec do nich swobodny dostep np.typu : dana
nie chce ladowac tego do pamieci bo i nie ma sensu, skoro i tak jest w storage.
proboje teraz z fseek(), ale moze jest jakas inna wygodniejsza metoda np podanie hadlera pliku jako poczatku tablicy w pamieci? ... czy cos w tym stylu.
robil juz ktos cos takiego?
Ma to byc rozwiazanie mozliwe lekkie i bez uzycia baz danych.
Pozdrawiam
-
A próbowałeś funkcji winapi? Dawno z winapi nie korzystałem, ale tam są funkcje do obsługi pliku typu:
HFILE OpenFile(
LPCSTR lpFileName, // file name
LPOFSTRUCT lpReOpenBuff, // file information
UINT uStyle // action and attributes
);
-
zrobilem to mniej wiecej tak:
// Read G components from Data file from position XYH
bool cGData::ReadData(unsigned int X, unsigned int Y, unsigned int H, stGComponents * Data)
{
if (isOpen())
{
long DataOffset = (H * TotalGridSize + Y * YGridSize+ X) * sizeof(stGComponents);
int Result = fseek(DataIn, (DataStart + DataOffset), SEEK_SET);
if (Result)
{
printf ("ERROR -> Data read form File -> ErrorNr = %d\n", Result);
return false;
}
fpos_t DataPos;
if (fgetpos(DataIn, &DataPos))
{
printf("Error -> fgetpos()\n");
return false;
}
else
; // printf ("Read data At %4d\t", DataPos );
fread(Data, sizeof(stGComponents), 1, DataIn);
return true;
}
return false;
}
moze komus sie przyda.