顯示具有 TStream類 標籤的文章。 顯示所有文章
顯示具有 TStream類 標籤的文章。 顯示所有文章

2013/01/06

Delphi unicode string VS memorystream

資料來源:
1. Wrtiting string to TMemoryStream - Pointer to string

2. 现有 Delphi 项目迁移到 Tiburon 中的注意事项

擴充的TStreamEx,在D7, Delphi XE下都可正確使用,只能說歪國人真是太厲害了,學習!

procedure TStreamEx.WriteString(const data: string);
var
  len: cardinal;
  oString: UTF8String;
begin
  oString := UTF8String(data);
  len := length(oString);
  self.WriteBuffer(len, 4);
  if len > 0 then
    self.WriteBuffer(oString[1], len);
end;

procedure TStreamEx.ReadString(const data: string);
var
  len: cardinal;
  iString: UTF8String;
begin
  self.ReadBuffer(len, 4);
  if len > 0 then
  begin
    SetLength(iString, len);
    self.ReadBuffer(iString[1], len);
    result := string(iString);
  end
  else result := '';
end;

2011/05/06

[轉貼]在Dephi中使用TStream读写数据的技巧

來源網址:http://www.xuedelphi.cn/wenzhang/yytg/2008/12/200812222703.htm

一、 TStream的常用的方法和属性
---- 1. function Read(var Buffer; Count: Longint): Longint; virtual; abstract 
---- 2. function Write(const Buffer; Count: Longint): Longint; virtual; abstract; 
---- 3. function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract; 
---- 4. property Position: Longint; 
---- 5. property Size: Longint

---- Read,Write,Seek都是纯虚函数,提供了数据读写和定位的抽象的方法。Read方法将数据从Stream中读到Buffer缓冲区中,Write则实现相反的操作,返回值表示实际读写数据的大小。Seek提供了在Stream中移动数据指针的方法。参数Origin可以取soFromBeginning,soFromCurrent,soFromEnd 三个值,Offset是偏移量,返回值是当前Stream数据指针的位置。

2010/07/07

[翻譯]玩轉你的記憶體 -- 使用TMemoryStream

雖然是1998年的文章,但2010年看到這篇文章的我,還是覺得有很大的收獲,在這邊分享出來
原文:Manipulating memory with TMemoryStream
譯文:愛抱怨本鋪. eden的雜念溜

Manipulating memory with TMemoryStream

C++ Builder Developer's Journal 雜誌3月號裡有篇"File I/O",講述TFileStream類別和如何使用該類別讀寫在磁碟中的檔案。

但有些時候,與其使用磁碟,你會比較想在記憶體中處理較大的資料。
好消息是TFileStream有個親戚叫TMemoryStream,正好是為此目的而設計。

在本篇文章中,我們將展示如何使用TMemoryStream去處理記憶體,就和我們3月刊的檔案處理方法一樣。
我們將證明如何使用與檔案I/O相同的方法去讀寫記憶體。

聽起來不錯!但為什麼我要這樣做啊?