zoukankan      html  css  js  c++  java
  • Delphi 的内存操作函数(5): 复制内存

    MoveMemory、CopyMemory 的功能类似, 都是复制内存, 都是调用 Move 过程;

    MoveMemory、CopyMemory 操作指针; Move 操作实体.

    还要注意, 它们的参数位置不一样!

    {例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 博客}
    
      {设置第二个字符串流的大小}
      s2.SetSize(6);
      {从第一个流复制到第二个流}
      CopyMemory(s2.Memory, s1.Memory, s2.Size);
      ShowMessage(s2.DataString); {万一的}
    
      s1.Free;
      s2.Free;
    end;

    这里仅仅是为了测试, 如果真的使用 TMemoryStream、TStringStream 等流类, 它们自身提供的复制操作更方便.



    转自《万一的Delphi博客》

  • 相关阅读:
    STM32Cube Uart_DMA测试工程
    STM32CubeMX安装指南
    基于STM32Cube的ADC模数采样设计
    C++ this指针的用法
    用七段数码管显示26个字母的方案
    FPGA的引脚VCCINT 、VCCIO VCCA
    Keil环境中建立带FreeRTOS的STM32L项目
    STM32L时钟
    Mysql explain
    nginx屏蔽IP
  • 原文地址:https://www.cnblogs.com/sonicit/p/3960386.html
Copyright © 2011-2022 走看看