duvida sobre deletar parte de um array
20/05/2008
0
Gostaria de saber como posso fazer para apagar um item de um array e deixar meu array depois de apagado ordenado corretamente sem espaços vazios no meio e sim no final.
obrigado
Muri
Posts
20/05/2008
Muri
strNomecompleto: string[60];
strEndereco: string[50];
strIdade: string [3];
strDatadeNascimento : TDateTime; //string[8];
strSexo: string[9];
strCidade: string[40];
strTelefone: string[16];
strSituacao: string[255];
strReceituario: string[255];
strDataAtual: TDateTime;
strAtendidoPor: string[30];
Isso ai é que esta indo emcada posição do array.
Então eu preciso apagar um array que contem todas essas informações, mas no momento em que apagar essa posição tenho que fazer a posição vazia ir para o final e ainda nã sei como posso fazer isso.
20/05/2008
Joaoshi
Apagou o 2 -> pega o que esta no 3 e passa para 2.
Espero ter ajudado.
21/05/2008
Rjun
21/05/2008
Javapaulomg
Concordo contigo, a solução mais adequada seria uma lista de objetos, que por sua vez teria objetos que contém esses atributos acima citados.
Outra solução não tão interessante do ponto de vista de uma boa pratica seria um array de array.
21/05/2008
Martins
21/05/2008
Rjun
21/05/2008
Muri
To tentando fazer pelo modo de uim array de um array, anteriormente estava ordenando em ordem alfabetica fa que não estou trabalhando com banco de dados entãop agora ficou mais dificil.
Vlw
21/05/2008
Muri
Fiz um for que vai subescrever a posição ao invez de deletar.
Obrigado pelas dicas!
24/05/2008
Marco Salles
TObjectList , segue abaixo um exemplo bem facim que voce pode
estudar e adaptar as sua necessidades ...
__definição da classe
...... TPessoa = Class endereco:string; cidade:string; end;
var Form1: TForm1; implementation {$R *.dfm}
//definidino Uma Lista de Objetos var ColecaoDePessoas:TstringList; umaPessoa:Tpessoa;
//No onShow Cria a Lista e Atribui Sortede:=True -->> [b:954dc77759]Sua Lista estar //sempre Ordenada sem nenhum esforço[/b:954dc77759]
[b:954dc77759]procedure TForm1.FormShow(Sender: TObject);
begin
ColecaoDePessoas:=TstringList.Create;
ColecaoDePessoas.Sorted:=true;
end;[/b:954dc77759]
//Adicinar um Objeto Pessoa a Sua Lista
procedure TForm1.EntradaDeDadosClick(Sender: TObject); begin umaPessoa:=TPessoa.Create; umaPessoa.endereco:=edtEndereco.Text; umaPessoa.Cidade:=edtCidade.Text; ColecaoDePessoas.AddObject(edtNome.Text,umaPessoa); end;
/)Deletar uma Pessoa da Lista
procedure TForm1.DeletarItemsClick(Sender: TObject); var localizar:integer; begin Localizar:=ColecaoDePessoas.IndexOf(edtNome.Text); if Localizar > -1 Then begin ColecaoDePessoas.Delete(Localizar); end; end;
//Exibir Dados das Pessoa nun Memo por Exempllo
procedure TForm1.ExibirDadosClick(Sender: TObject); var i:integer; begin for i:=0 To ColecaoDePessoas.Count-1 do begin memo1.Lines.Add(ColecaoDePessoas.Strings[i]); memo1.Lines.Add(TPessoa(ColecaoDePessoas.Objects[i]).endereco); memo1.Lines.Add(TPessoa(ColecaoDePessoas.Objects[i]).cidade); memo1.Lines.Add(´´); end; end;
//No OnClose destruir os Objetos e a Lista dos Objetos
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var i:integer; begin For i:=0 To ColecaoDePessoas.Count-1 do TPessoa(ColecaoDePessoas.Objects[i]).free; Freeandnil(ColecaoDePessoas); end;
consideraçõs Finais ...
Sua Lista esta Ordenada por [b:954dc77759]Nomes[/b:954dc77759] ... Se voce quiser ou necessitar de Ordenação por [b:954dc77759]Cidades , Endereços [/b:954dc77759]enfims , ai voce deve usar [b:954dc77759]CallBack , juntamente com ListS.hort [/b:954dc77759]... Tem neste mesmo site um exemplo meu , deve ter de outros tb , de como ordenar uma Lista De Objetos pelos iversos Atributos que compoem a Lista
27/05/2008
Brunodsr
Eu faria com o TStringList. É mais simples. Tipo:
Criaria uma classe com cada array desse dai sendo um atributo e depois inseria na lista, colocando o campo chave como id. Daí era só posicionar pelo ID e mandar excluir. O resto ele faz só. Facil ne.
Um abraço,
Bruno Rocha
27/05/2008
Muri
Abraço!
27/05/2008
Martins
Coloca um Label no teu form e um TTimer tb.
Clique duas vezes no TTimer do seu form e digite o código abaixo:
Labelx.Cpation := TimeToStr(Now);
Espero q seja isso q vc está querendo.
27/05/2008
Martins
Coloca um Label no teu form e um TTimer tb.
Clique duas vezes no TTimer do seu form e digite o código abaixo:
Labelx.Caption := TimeToStr(Now);
Espero q seja isso q vc está querendo.[/quote:43579d3303]
Labelx.Caption := TimeToStr(Now);
27/05/2008
Muri
Coloca um Label no teu form e um TTimer tb.
Clique duas vezes no TTimer do seu form e digite o código abaixo:
Labelx.Caption := TimeToStr(Now);
Espero q seja isso q vc está querendo.[/quote:86edbc3692]
Labelx.Caption := TimeToStr(Now);
VALEU MARTINS...!!
MUITO FÁCIL DE FAZER!!!! ABRAÇO..
Clique aqui para fazer login e interagir na Comunidade :)