MoveMemory、CopyMemory 的功能類似, 都是復(fù)制內(nèi)存, 都是調(diào)用 Move 過程; MoveMemory、CopyMemory 操作指針; Move 操作實(shí)體. 還要注意, 它們的參數(shù)位置不一樣! 舉例: {例1} var buf1,buf2: array[0..9] of AnsiChar; begin buf1 := '0123456789'; buf2 := 'abcdefghij'; Move(buf2[2], buf1[4], 5); ShowMessage(buf1); {0123cdefg9} ShowMessage(buf2); {abcdefghij} end; {例2} var buf1,buf2: array[0..9] of AnsiChar; begin buf1 := '0123456789'; buf2 := 'abcdefghij'; CopyMemory(@buf2[2], @buf1[4], 5); ShowMessage(buf1); {0123456789} ShowMessage(buf2); {ab45678hij} end; {例3} var s1,s2: TStringStream; {兩個字符串流} begin s1 := TStringStream.Create; s2 := TStringStream.Create; {向第一個字符串流寫入} s1.WriteString('萬一的 Delphi 博客'); ShowMessage(s1.DataString); {萬一的 Delphi 博客} {設(shè)置第二個字符串流的大小} s2.SetSize(6); {從第一個流復(fù)制到第二個流} CopyMemory(s2.Memory, s1.Memory, s2.Size); ShowMessage(s2.DataString); {萬一的} s1.Free; s2.Free; end; 這里僅僅是為了測試, 如果真的使用 TMemoryStream、TStringStream 等流類, 它們自身提供的復(fù)制操作更方便. |
|