Hallo,
Zuweisungen der Art 'string := byte' werden nicht immer als Fehler erkannt.
Siehe code. (Im Fall einer ASCII-Datenschnittstelle schleichen sich dadurch schnell Bugs ein, da man hier oft Bytes in Strings konvertiert)
program TEST; // compiler Ver 5.9.15
Device = mega2560, VCC=5;
Import;
Define
ProcClock = 8000000; {Hertz}
StackSize = $0100, iData;
FrameSize = $0100, iData;
implementation
type
tStr24 = string[24];
tByteWrapper = record
byteValue : byte;
end;
{$IDATA}
var
testByte : byte;
testStr : tStr24;
testByteWrapper : tByteWrapper;
procedure checkStr (value : tStr24);
begin
end;
begin
checkStr(testByte); // bug: keine Compilerfehler
testStr := testByteWrapper.byteValue; // bug: keine Compilerfehler
end.
Zuweisungen der Art 'string := byte' werden nicht immer als Fehler erkannt.
Siehe code. (Im Fall einer ASCII-Datenschnittstelle schleichen sich dadurch schnell Bugs ein, da man hier oft Bytes in Strings konvertiert)
Code
program TEST; // compiler Ver 5.9.15
Device = mega2560, VCC=5;
Import;
Define
ProcClock = 8000000; {Hertz}
StackSize = $0100, iData;
FrameSize = $0100, iData;
implementation
type
tStr24 = string[24];
tByteWrapper = record
byteValue : byte;
end;
{$IDATA}
var
testByte : byte;
testStr : tStr24;
testByteWrapper : tByteWrapper;
procedure checkStr (value : tStr24);
begin
end;
begin
checkStr(testByte); // bug: keine Compilerfehler
testStr := testByteWrapper.byteValue; // bug: keine Compilerfehler
end.