2 Stimmen

Wie erhöht man den FOR-Schleifenwert in einer FOR-Schleifenanweisung?

Ich möchte wissen, wie man den Wert in einer FOR-Schleifenanweisung erhöht.

Dies ist mein Code.

function Check(var MemoryData:Array of byte;MemorySignature:Array of byte;Position:integer):boolean;
var i:byte;
begin
 for i := 0 to Length(MemorySignature) - 1 do
 begin
  while(MemorySignature[i] = $FF) do inc(i); //<< ERROR <<
  if(memorydata[i + position] <> MemorySignature[i]) then Result:=false;
 end;
 Result := True;
end;

Der Fehler ist: E2081 Zuweisung an die FOR-Schleifen-Variable 'i'.

Ich versuche, einen alten Code von C# nach Delphi zu übersetzen, aber ich kann das 'i' nicht erhöhen. Erhöhen 'i' ist nicht der einzige Weg zu gehen, aber ich möchte wissen, wo das Problem ist.

1voto

Gerry Coll Punkte 5827

Wie von Mike Sutton beschrieben, benötigen Sie eine while-Schleife, keine for-Schleife.

function Check(var MemoryData: Array of byte; 
  MemorySignature: Array of byte; Position: Integer):Boolean;
var 
  i:byte;
begin
 Result := True;
 i := 0;
 while i < Length(MemorySignature) do
 begin
   while(MemorySignature[i] = $FF) do 
     Inc(i); 
   if(MemoryData[i + position] <> MemorySignature[i]) then 
     Result := False;
   Inc(i);
 end;
end;

Die Delphi-Implementierung von "for" ist optimiert, aber deshalb weniger flexibel als die C-artige

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X