O que esta errado que esta dando erro de violação

Delphi

29/08/2015

Boa noite
raramente programo alguma coisa no delphi , uso mais para integração com microcontroladores , porem estou tendo erro de violação de acesso

o programa é bem simples aperto um botão e executa o codigo :P , porem estou tendo erro de violação de acesso

o erro esta ocorrendo aqui >>>>>>>>>>>>>>>>>>numeros[1] := ord(rx_data[1]);
------------------------------------------------------------------------------------------------------------------------------------------

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
// ComPort1: TComPort;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
rx_data : string;
i : byte ;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
numeros: Array [1..128] of byte; // variaveis
begin
numeros[1] := ord(rx_data[1]);
end;

end.
Rodrigo Hernandes

Rodrigo Hernandes

Curtidas 0

Melhor post

Valquiria Silva

Valquiria Silva

31/08/2015

rx_data, é uma string vazia.

Logo: rx_data[1] -> posição 1 da string vazia vai dar erro.
GOSTEI 1

Mais Respostas

Raimundo Pereira

Raimundo Pereira

29/08/2015

Bom dia, qual o objetivo da aplicação ?
GOSTEI 0
Rodrigo Hernandes

Rodrigo Hernandes

29/08/2015

P2 Obrigado pela atenção

Na verdade esse é só um pedaço da aplicação , é que vai vi uma string pela porta serial e esse trecho era para passar a string para uma array pela tabela ascii

Porem domingo a noite já tinha visto uma solução , e descobri que não poderia o valor esta vazio .........

procedure TForm1.Button1Click(Sender: TObject);
var
Dados : string;
numeros : array [1..52] of byte;
i : byte;
// CLICK NO BOTÃO
begin
memo1.Lines.Clear;
memo2.Lines.Clear;
memo3.Lines.Clear;
memo4.Lines.Clear;
memo5.Lines.Clear;
memo6.Lines.Clear; // debug
dados := (edit6.Text);
comport1.ShowSetupDialog; //abre janela serial
comport1.close; // fecha porta serial
comport1.Open; // abre porta serial
comport1.Connected:= true; // conecta porta serail
ComPort1.WriteStr(char(2)+ char(4)+ char(3));
// envia caracteres

//ComPort1.ReadStr(Dados,50); /// posteriormente habilitar

for i := 1 to 50 do //contagem de 1 a 50
begin
numeros[i] := ord(Dados[i]);

memo6.Lines.Add(inttostr((numeros[i]))); // debug
end;
GOSTEI 0
Rodrigo Hernandes

Rodrigo Hernandes

29/08/2015

Exatamente Valquiria

Obrigado Pela Atenção ;)
GOSTEI 0
POSTAR