[ ivanho @ 05.03.2006. 16:21 ] @
Problem:

Code:

ReadStream := TFileStream.Create(AstrFile, fmOpenRead or fmShareDenyWrite);
with ReadStream do
  begin
    while (Position < pred(Size)) and (not Terminated) and (not blnSkip) do
      begin
        intRange := Read(FBuf^, FContext.BufferSizeKb*1024);
        for intBrojac := 0 to Pred(intRange) do
          begin
  
              {ovde je problem}

          end;
      end;
  end;


Potreban mi je da dobijem karaker koji se nalati na procitanoj poziciji
što u opštem slučaju nije teško:

Code:
(Char(Pointer(Longint(FBuf)+intBrojac)^))


medjutim problem nastaje prilikom čitanja fajlova koji u sebi sadrže unicode
karaktere.


Ideja? Rešenje?
[ Srki_82 @ 05.03.2006. 17:17 ] @
Unicode karakter ima 2 bajta. Ne znam kako ces da dodjes do toga koji deo fajla sadrzi Unicode karaktere, a koji ne.
[ ivanho @ 05.03.2006. 17:44 ] @

znam da ima 2 bajta... to i jeste polovina problema:
Kako da ta dva bajta objedinim u WideChar?
[ Srki_82 @ 06.03.2006. 12:39 ] @
Mozes ovako:
Code:
WChar := WideChar(Word(LoByte) + 256 * Word(HiByte));


Pisem iz glave pa mozda nece raditi, ali shvatas poentu... mada ako ti je FBuf neki pointer mozes lepo da napises:
Code:
WChar := (PWideChar(FBuf) + (ZeljeniKarakter - 1))^;