Fórum vetor record - urgente!!! #361579
24/07/2008
0
type
r_vetor = class
west_produto, west_descri, west_un, west_ant, west_atual, west_entrada,west_saida: String;
end;
apos a variavel:
var
dados: array of r_vetor;
ai quando vou passar informações para o vetor
dados[x].west_produto := Query1Codigo.Asstring;
dados[x].west_descri := Copy(Query1Descricao.text,1,50);
me da um erro!!
Access Violation adress 006df46c ... read ...00..4
o que poder ser?
Aleriopreto
Curtir tópico
+ 0Posts
24/07/2008
Powerslave7
Abraço.
Gostei + 0
24/07/2008
Aroldo Zanela
No fragmento de seu código não foi possível avaliar onde e como você está ´expandindo´ o vetor aberto. Além da tipificação erronea de classe ao invés de registro.
Veja se o exemplo abaixo ajuda:
type
TForm1 = class(TForm)
btn1: TButton;
procedure AdicionaRegistro(A: array of string);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
Registro = record
Codigo,
Descricao: String;
end;
var
Form1: TForm1;
Registros: array of Registro;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.AdicionaRegistro(A: array of string);
var N: Integer;
begin
N := Length(Registros)+1;
SetLength(Registros, N);
Registros[N-1].Codigo := A[0];
Registros[N-1].Descricao := A[1]
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
AdicionaRegistro([´001´,´Teste´]);
end;
end.
Gostei + 0
24/07/2008
Brunodsr
class tem q criar em memoria veio. se vc quiser usar classe, tem q criar um objeto em memoria p/ cada indice do vetor. Blz?
Um abraco
Gostei + 0
24/07/2008
Aleriopreto
visto que colocquei em uma unit com funções, ai chamo a procedure adicionaregistro, blz funcionou e para retornar dados em array?
ex. retornaregistro(x:integer):array of...
é possivel?
Gostei + 0
24/07/2008
Aleriopreto
minha unit de funcoes esta assim
unit Unit144;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Qrctrls, ExtCtrls, SHELLAPI, FileCtrl, Buttons, MaskUtils;
function Agenda(Emp:integer; Ndias:integer):boolean;
function SerialNum(FDrive:string):string;
function Padl(S:string;t:integer):string;
function Space(n:integer):string;
Function Digito(mnumero : string):string;
Function DigitoBarra(mnumero : string):string;
Function DigitoLinha(mnumero : string):string;
Function DigitoBrad(mnumero:string):string;
function Datafinal(dataini:tdatetime; dias_uteis:integer):tdatetime;
Function DeleteDir(Nome : String; LeaveFolder:Boolean):boolean;
Function Acesso(Emp:integer; User:string; Pass:String):boolean;
Function Botoes(Formulario:TForm;wtipo:integer):boolean;
function Valida_CGC_CPF(var nDoc: String): Byte;
function VerifCGC_CPF(sCGC: String;eh_CPF: Boolean): Boolean;
Function GravaLog(Data:TDateTime;Usuario:Integer;Log:String): Boolean;
Function extenso(valor: real): string;
function serialativa(wserial:string):string;
function geraserialativa(wserial:string):string;
function limpastring(wstring:string;wtipo:string):string;
Function Encripta(const S: String; Key: Word): String;
Function Decripta(const S: String; Key: Word): String;
Function Checa_data(data:string):boolean;
procedure AdicionaRegistro(A: array of string);
procedure RetornaRegistro(x:integer):boolean
type
Registro = record
west_produto, west_descri, west_un, west_ant, west_atual, west_entrada,west_saida: String;
end;
var
entra,warq,mfprod,ldir,wversao:string;
wcarte,vez,memp,mdesp,wkey,wtotal_produtos:integer;
mdesc,mdesc2,mcomissao:real;
Registros: array of Registro;
implementation
Gostei + 0
24/07/2008
Aroldo Zanela
Não entendi o que pretende ainda, mas não seria mais adequado o uso de uma banco de dados?
type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
procedure AdicionaRegistro(A: array of string);
function RecuperaRegistro(R: Integer): TStrings;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
Registro = record
Codigo,
Descricao: String;
end;
var
Form1: TForm1;
Registros: array of Registro;
Contador: Integer;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.AdicionaRegistro(A: array of string);
var N: Integer;
begin
N := Length(Registros)+1;
SetLength(Registros, N);
Registros[N-1].Codigo := A[0];
Registros[N-1].Descricao := A[1]
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Inc(Contador);
AdicionaRegistro([FormatFloat(´000´,Contador),´Teste´]);
end;
procedure TForm1.btn2Click(Sender: TObject);
var Dados: TStringList;
LocalizarRegistro: Integer;
begin
LocalizarRegistro := 1;
Dados := TStringList.Create;
Dados.Text := RecuperaRegistro(LocalizarRegistro).Text;
ShowMessage(Dados.Text);
end;
function TForm1.RecuperaRegistro(R: Integer): TStrings;
begin
with Result.Create do
begin
Result.Add(Registros[R].Codigo);
Result.Add(Registros[R].Descricao);
end;
end;
end.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)