duvida sobre deletar parte de um array
Boa tarde,
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
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
Curtidas 0
Respostas
Rjun
20/05/2008
O que você guarda nesse array? Já pensou em usar lista?
GOSTEI 0
Muri
20/05/2008
No array uma serie de coisas por exemplo.
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.
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.
GOSTEI 0
Joaoshi
20/05/2008
Colega, se não existir nada mais elegante, o jeito é criar uma função que traga os dados para a posição ´excluída´ e assim até a última posição.
Apagou o 2 -> pega o que esta no 3 e passa para 2.
Espero ter ajudado.
Apagou o 2 -> pega o que esta no 3 e passa para 2.
Espero ter ajudado.
GOSTEI 0
Rjun
20/05/2008
Ainda insisto que teria uma solução muito mais elegante se utilizasse uma lista de objetos.
GOSTEI 0
Javapaulomg
20/05/2008
Ainda insisto que teria uma solução muito mais elegante se utilizasse uma lista de objetos.
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.
GOSTEI 0
Martins
20/05/2008
Eu tb acho que usando StringList vc poderá obter o resultado esperado, acho q é a forma mais elegante e de melhor manutenção.
GOSTEI 0
Rjun
20/05/2008
Acho que TStringList não resolve. Um TObjectList seria o mais indicado.
GOSTEI 0
Muri
20/05/2008
Valeu pelas dicas pessoal.
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
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
GOSTEI 0
Muri
20/05/2008
Ola pessoal consegui um jeito e funcionou bem..
Fiz um for que vai subescrever a posição ao invez de deletar.
Obrigado pelas dicas!
Fiz um for que vai subescrever a posição ao invez de deletar.
Obrigado pelas dicas!
GOSTEI 0
Marco Salles
20/05/2008
Se voce estava com dificuldade de Fazer com TstringList ou com
TObjectList , segue abaixo um exemplo bem facim que voce pode
estudar e adaptar as sua necessidades ...
__definição da classe
//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
/)Deletar uma Pessoa da Lista
//Exibir Dados das Pessoa nun Memo por Exempllo
//No OnClose destruir os Objetos e a Lista dos Objetos
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
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
GOSTEI 0
Brunodsr
20/05/2008
Minha sugestão é optar pelo mais simples. No caso, ou com uma lista (já implementada no delphi TList, TStrings, TStringList) ou com uma árvore binária.
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
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
GOSTEI 0
Muri
20/05/2008
Valeu pela ideia, mas acabei fazendo de outro outra forma mais facil um pouco, sobscrevendo o dado que iria ser excluido. A duvida agora é simples, quero colocar um relogio na tela do meu form, para que na hora em que estiver executando o programa ele fique contando HH:MM:SS e que isso seja visível, se poder me ajudar fico grato.
Abraço!
Abraço!
GOSTEI 0
Martins
20/05/2008
Valeu pela ideia, mas acabei fazendo de outro outra forma mais facil um pouco, sobscrevendo o dado que iria ser excluido. A duvida agora é simples, quero colocar um relogio na tela do meu form, para que na hora em que estiver executando o programa ele fique contando HH:MM:SS e que isso seja visível, se poder me ajudar fico grato.
Abraço!
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.
GOSTEI 0
Martins
20/05/2008
[quote:43579d3303=´muri´]Valeu pela ideia, mas acabei fazendo de outro outra forma mais facil um pouco, sobscrevendo o dado que iria ser excluido. A duvida agora é simples, quero colocar um relogio na tela do meu form, para que na hora em que estiver executando o programa ele fique contando HH:MM:SS e que isso seja visível, se poder me ajudar fico grato.
Abraço!
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);
GOSTEI 0
Muri
20/05/2008
[quote:86edbc3692=´Martins´][quote:86edbc3692=´muri´]Valeu pela ideia, mas acabei fazendo de outro outra forma mais facil um pouco, sobscrevendo o dado que iria ser excluido. A duvida agora é simples, quero colocar um relogio na tela do meu form, para que na hora em que estiver executando o programa ele fique contando HH:MM:SS e que isso seja visível, se poder me ajudar fico grato.
Abraço!
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..
GOSTEI 0
Martins
20/05/2008
[quote:7b04f66862=´Martins´][quote:7b04f66862=´Martins´][quote:7b04f66862=´muri´]Valeu pela ideia, mas acabei fazendo de outro outra forma mais facil um pouco, sobscrevendo o dado que iria ser excluido. A duvida agora é simples, quero colocar um relogio na tela do meu form, para que na hora em que estiver executando o programa ele fique contando HH:MM:SS e que isso seja visível, se poder me ajudar fico grato.
Abraço!
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:7b04f66862]
Labelx.Caption := TimeToStr(Now);
VALEU MARTINS...!!
MUITO FÁCIL DE FAZER!!!! ABRAÇO..[/quote:7b04f66862]
Disponha amigo, estamos aqui para nos ajudar.
Boa sorte e bons códigos.
GOSTEI 0
Muri
20/05/2008
Boa tarde Pessoal,
Fiz um programa com 2 forms e no segundo tenho um memo e quero imprimir o conteudo deste memo em uma folha A4, será que alguém pode me ajudar.
Obrigado
Fiz um programa com 2 forms e no segundo tenho um memo e quero imprimir o conteudo deste memo em uma folha A4, será que alguém pode me ajudar.
Obrigado
GOSTEI 0