Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Code]
- #IFNDEF Unicode
- #DEFINE CharSize 1
- #ELSE
- #DEFINE CharSize 2
- #ENDIF
- type
- TSeekOrigin = (
- soBeginning,
- soCurrent,
- soEnd
- );
- #IFDEF UNICODE
- function BufferToAnsi(const Buffer: string): AnsiString;
- var
- W: Word;
- I: Integer;
- begin
- SetLength(Result, Length(Buffer) * 2);
- for I := 1 to Length(Buffer) do
- begin
- W := Ord(Buffer[I]);
- Result[(I * 2)] := Chr(W shr 8); // high byte
- Result[(I * 2) - 1] := Chr(Byte(W)); // low byte
- end;
- end;
- #ENDIF
- function ReadStringFromFile(const FileName: string; Origin: TSeekOrigin; Offset, Length: Integer;
- var S: AnsiString): Boolean;
- var
- Buffer: string;
- Stream: TFileStream;
- begin
- Result := True;
- try
- Stream := TFileStream.Create(FileName, fmOpenRead);
- try
- Stream.Seek(Offset, Ord(Origin));
- SetLength(Buffer, Length div {#CharSize});
- Stream.ReadBuffer(Buffer, Length);
- #IFNDEF UNICODE
- S := Buffer;
- #ELSE
- S := BufferToAnsi(Buffer);
- #ENDIF
- finally
- Stream.Free;
- end;
- except
- Result := False;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement