Thema: Delphi StrLCopy : Non VCL

Einzelnen Beitrag anzeigen

hathor
(Gast)

n/a Beiträge
 
#17

AW: StrLCopy : Non VCL

  Alt 28. Apr 2012, 18:06
Kannst du mal mit MSDN-Library durchsuchenlstrcpyn testen, was dabei raus kommt?
Bei der Firmware fehlt eine 1.
Das Array ist 8 Char gross - also sollten auch 8 Char zurückgegeben werden:
sFirmwareRevArray[0..7] of Char;

Ich verwende jetzt Move - das geht auch und FEHLERFREI!

Delphi-Quellcode:
procedure PrintIdSectorInfo( IdSector : TIdSector );
var szOutBuffer : Array [0..40] of Char;
begin
  with IdSector do
  begin
    ChangeByteOrder( sModelNumber, SizeOf(sModelNumber) ); // Change the WORD array to a BYTE array
    szOutBuffer[SizeOf(sModelNumber)] := #0;
// StrLCopy( szOutBuffer, sModelNumber, SizeOf(sModelNumber) );
// lstrcpyn( szOutBuffer, sModelNumber, SizeOf(sModelNumber) );
    System.Move(sModelNumber, szOutBuffer, SizeOf(sModelNumber) );
    Form1.label1.caption :='Model : ' + szOutBuffer ;

    ChangeByteOrder( sFirmwareRev, SizeOf(sFirmwareRev) );
    szOutBuffer[SizeOf(sFirmwareRev)] := #0;
// StrLCopy( szOutBuffer, sFirmwareRev, SizeOf(sFirmwareRev) );
// lstrcpyn( szOutBuffer, sFirmwareRev, SizeOf(sFirmwareRev) );
    System.Move(sFirmwareRev, szOutBuffer, SizeOf(sFirmwareRev) );
    Form1.label2.caption := 'Firmware Rev : ' + szOutBuffer ;

    ChangeByteOrder( sSerialNumber, SizeOf(sSerialNumber) );
    szOutBuffer[SizeOf(sSerialNumber)] := #0;
 // StrLCopy( szOutBuffer, sSerialNumber, SizeOf(sSerialNumber) );
 // lstrcpyn(szOutBuffer, sSerialNumber, SizeOf(sSerialNumber) );
    System.Move(sSerialNumber, szOutBuffer, SizeOf(sSerialNumber) );
    Form1.label3.caption := 'Serial Number : '+ szOutBuffer ;
  end;
end;
http://www.delphipraxis.net/1163962-post21.html
Miniaturansicht angehängter Grafiken
test-3.jpg  

Geändert von hathor (28. Apr 2012 um 18:36 Uhr)
  Mit Zitat antworten Zitat