Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi错误E2064左侧无法分配给_Delphi_Unicode - Fatal编程技术网

Delphi错误E2064左侧无法分配给

Delphi错误E2064左侧无法分配给,delphi,unicode,Delphi,Unicode,我找到了一些用于创建midi文件的旧代码。在较新的Delphi中,它给出了“无法分配”错误。我假设是Unicode问题?但如何修复呢?给出了这些行的错误 midCmd[2] := $90; midCmd[3] := Note; midCmd[4] := Velocity; 如果需要,这里有完整的程序 procedure SaveAsMidi(note: byte; FileName: string); const // MIDI file header

我找到了一些用于创建midi文件的旧代码。在较新的Delphi中,它给出了“无法分配”错误。我假设是Unicode问题?但如何修复呢?给出了这些行的错误

    midCmd[2] := $90;
    midCmd[3] := Note;
    midCmd[4] := Velocity;
如果需要,这里有完整的程序

    procedure SaveAsMidi(note: byte; FileName: string);
    const // MIDI file header
      midHdr: array[0..13]of byte =
      ($4D,$54,$68,$64, //[0..3] Always MThd
      $00,$00,$00,$06,  // [4..7] Always the same
      $00,$01,          // [8..9] Two bytes for file format
                        // $01 = synchronous multiple tracks
      $00,$01,          // [10..11] Two bytes for number of tracks
      $01,$E0);         // [12..13] Two bytes for ticks per quarter note
      // MIDI track header
      midTrk: array[0..7]of byte =
      ($4D,$54,$72,$6B, // [0..3] Always MTrk
      $00,$00,$00,$0E); // [4..7] Four bytes for track size in bytes
      // MIDI track end bytes
      midEnd: array[0..3]of byte =
      ($00,$FF,$2F,$00); // [0..3] Always the same
      // MIDI command
      midCmd: array[0..4]of byte =
      ($80,$00,          // [0..1] Two bytes for time in ticks
      $90,               // [2] Command:
                         // $90 = Note on at channel 0
                         // $80 = Note off at channel 0
      $00,$00);          // [3] Note and [4] velocity
      // Constant velocity
      Velocity=$FF;
      // Constant duration
      Time=$FF;
var  midFile: TFileStream;
begin
     // Create MIDI file
     midFile := TFileStream.Create(FileName +'.mid', fmCreate);
     with midFile do try
    // Write MIDI header
    Write(midHdr, SizeOf(midHdr));
    // Write MIDI track
    Write(midTrk, SizeOf(midTrk));
    // Write Note On
    // Play immediately = time is 0
    midCmd[2] := $90;
    midCmd[3] := Note;
    midCmd[4] := Velocity;
    Write(midCmd, SizeOf(midCmd));
    // Write Note Off
    // Separate time into two bytes
    midCmd[0] := $80 or (Time div 128 mod 128);
    midCmd[1] := $00 or (Time mod 128);
    midCmd[2] := $80;
    Write(midCmd, SizeOf(midCmd));
    // Write MIDI track end
    Write(midEnd, SizeOf(midEnd));
  finally
    midFile.Free;
  end;
end;

为字节数组分配字节$FF格式需要什么语法?谢谢您的帮助。

您已将
midcmd
声明为类型化常量,
{$WRITEABLECONST}
编译器指令(现在)处于默认状态
{$J-}
(或更详细的:
{$WRITEABLECONST OFF}
),这意味着类型化常量是不可写的

在Delphi和Object Pascal的早期版本中,类型化常量始终是可写的,这可以解释您在网上找到的代码。或者,它可能专门将编译器指令声明为
{$J+}
(或者
{$WRITEABLECONST ON}

要按原样使用代码,请更改指令。要保留默认指令,请将键入的常量
midcmd
更改为变量(将其移动到
var
部分)


您可以在中阅读有关可写类型常量的内容。

您已将
midcmd
声明为类型常量,
{$WRITEABLECONST}
编译器指令(现在)处于默认状态
{$J-}
(或更详细的:
{$WRITEABLECONST OFF}
),这意味着类型常量不可写

在Delphi和Object Pascal的早期版本中,类型化常量始终是可写的,这可以解释您在网上找到的代码。或者,它可能专门将编译器指令声明为
{$J+}
(或者
{$WRITEABLECONST ON}

要按原样使用代码,请更改指令。要保留默认指令,请将键入的常量
midcmd
更改为变量(将其移动到
var
部分)


您可以在中阅读有关可写类型常量的信息。

您将
midCmd
标记为常量。常量值无法更改。感谢您的快速回复!将常量更改为变量可以修复它。您可以将
midCmd
标记为常量。常量值无法更改。感谢您的快速回复!将常量更改为变量将其修复。感谢您的详细回复。将其更改为var效果很好。@Remy谢谢。但是为什么你要把我的“可写”编辑成“可写”?这是方言问题还是美国对英国的问题?@TomBrunberg:“writeable”是一个错误的拼写,“writeable”是正确的拼写。任何拼写检查器(包括浏览器内置的一个)都应该捕获that@RemyLebeau:告诉Embarcadero:-)。有关证据,请参阅链接到文档:-)。@TomBrunberg:回答得好。所以我可以多做一些,谢谢你的详细回复。将其更改为var效果很好。@Remy谢谢。但是为什么你要把我的“可写”编辑成“可写”?这是方言问题还是美国对英国的问题?@TomBrunberg:“writeable”是一个错误的拼写,“writeable”是正确的拼写。任何拼写检查器(包括浏览器内置的一个)都应该捕获that@RemyLebeau:告诉Embarcadero:-)。有关证据,请参阅链接到文档:-)。@TomBrunberg:回答得好。所以我们可以做更多类似的事情。