Imam "nqkakuv" problem

4 отговора 214 прегледа
#1

Imam "nqkakuv" problem

Znachi polzvam s memory mapping, za da uskorq rabotata s edin fail. No ima nqkakuv tech (v 1 red kod), koito ne moga da si ovbqsnq. Moje bi problema e drugade, ne znam, no se nadqvam nqkoi da pomogne.

var
PData: PChar;

procedure Load(AFileName: string);
begin
CreateMapping(AFileName, PData); //CreateMapping mi dava pointer kum mapping-a
end;

procedure Unload;
begin
UnmapViewOfFile(PData); //neshto takova beshe za osvobojdavane na mapping-a
end;

function ReadData(const APos, ALenght: Integer): string;
begin
SetLength(Result, ALength);
Move((PData + APos)^, Result[1 ], ALength); //ei tuka ima iztichane
end;

Pri 40 000 posledovatelni prochitaniq ostavat nqkude 6MB v pametta. Vsushtnost az obhojdam celiq fail (toi e kum 6MB) i moje bi pri chetene vinagi ostava prochetenoto v pametta zadelena za moq proces, ne sum siguren tochno

Ako ne znaete tova e edin ot bugovete v moq rechnik, nadqvam se posledniq (ili pone posledniq seriozen )

by Waz Gaa
[email protected]
Отговор
в отговор на Waz Gaa #2

Re: Imam "nqkakuv" problem

TFileStream не ти ли върши работа /като скорост/?

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hateras #3

Re: Imam "nqkakuv" problem

Mi MemMap mislq, che e nai-dobro. Mai bqh po edno vreme sus streams, no vidqh, che ima razlika, ne sum absoliutno siguren. Kato moga shte proverq, no i predpochitam MemMap, taka che se nadqvam nqkoi da pomogne.

by Waz Gaa
[email protected]
Отговор
в отговор на Waz Gaa #4

Re: Imam "nqkakuv" problem

Da nqma neshto obshto s tova che Result[0] e pyrviqt simvol?

Отговор
в отговор на Rincewind #5

Re: Imam "nqkakuv" problem

Вече стана дума за това, че типа string в последните 32 битови Delphi-та е динамичен и по-голям от 255 байта. Нещо повече, ако напишеш Result[ 0 ], още компилатора дава следната грешка:

Element 0 inaccessible - use 'Length' or 'SetLength'

Четете, бе хора!

---
Не е важно да си добър, важното е да си ман-и-як!
Отговор