Pedron,
Cita:
|
Empezado por Pedron
...no le he cambiado ningún dato a tu código que me mandaste y pues al momento de poner AX me da ese error (List Index Out of Bounds)...
|
Es correcto

,
es un error de frontera.
Revisa esta código:
Código Delphi
[-]
procedure TForm1.Button3Click(Sender: TObject);
const
RegAsm : Array[1..30] of string = ('AX','BX','CX','DX','AH','AL',
'BH','BL','BP','CH','CL','CS',
'DH','DL','DI','DS', 'GS', 'IP',
'SI','SP','SS', 'ES',
'EAX','EBP','EBX','ECX',
'EDI','EDX','EIP','ESIFE');
var
SL: TStringList;
i, j, k : Integer;
Token : String;
AuxStr : String;
begin
SL := TStringList.Create;
Memo2.Clear;
for i := 0 to Memo1.Lines.Count - 1 do
begin
AuxStr := Memo1.Lines[i];
for j := 1 to Length(AuxStr) do
begin
if (AuxStr[j] <> ' ') and (AuxStr[j] <> ',') then
Token := Token + AuxStr[j]
else
begin
SL.Add(Token);
Token := EmptyStr;
end
end;
SL.Add(Token);
Token := EmptyStr;
for j := SL.Count - 1 downto 0 do
for k := High(RegAsm) downto Low(RegAsm) do
if SL[j] = RegAsm[k] then
begin
SL.Delete(j);
Break;
end;
for j := 0 to SL.Count - 1 do
Token := Token + SL[j] + ' ';
Memo2.Lines.Add(Token);
Token := EmptyStr;
SL.Clear;
end;
SL.Free;
end;
El código anterior en Delphi 7 bajo Windows 7 Professional x32, es la
versión 2 del código propuesto en el
Msg #16 que resuelve
errores de frontera, funcionando correctamente según lo esperado
con datos de prueba como se puede ver en la siguiente imagen:
Espero sea útil
Nelson.