Ajuda com Aplicação
23/01/2013
0
Eu gostaria de fazer 1 programa que edita, e lê arquivos nesta sequência...
Definição do Objeto:
Categoria,item,Customizavel,valor1,valor2;
E todos Objetos seriam separados por ";" (Ponto-e-virgula)
Exemplo:
3,18,2,200,30;4,19,4,2000,150;
3 = categoria
18 = item
2 = customizavel
200 = valor1
30 = valor2
e 1 botão que eu possa adicionar mais sequencias, e os items são separados por ";"
Objeto 1 Objeto2
3,18,2,200,30;3,18,2,200,30;
Estou tendo uma tremenda dificuldade para fazer algo assim.
Queria poder editar os valores em Tedit cada edit receberia o valor dado de cada celula de um Objeto e eu editaria em problemas mas não consigo, e gostaria de salvar em TXT, além disso o programa teria que ler o mesmo por exemplo, eu abri o arquivo TXT com os dados que eu preenchi, e assim eu poderia editar o Objeto 9, podendo editar cada coluna sem alterar a estrutura da minha aplicação.
Se alguem puder me ajudar por favor me informe, grato desde já
Coop Stinger
Posts
23/01/2013
Joel Rodrigues
Mas partindo do pressuposto que você não tenha nada pronto, eu vejo duas formas de fazer isso:
1) você gravaria um "objeto" por linha do txt, assim você poderia carregar o arquivo usando uma TStringList. Essa classe possui métodos para carregar e salvar arquivos facilmente e você pode acessar cada linha de forma rápida como strings.
2) você gravaria os "objetos" todos em uma linha só e teria de varrer essa linha identificando cada ocorrência do ponto-e-vírgula. Cada vez que encontrasse um ;, copiaria o trecho do string até ali para gerar um "objeto".
É fácil perceber que a primeira forma é bem mais simples e organizada.
Qualquer dúvida, é só avisar.
Abraço e boa sorte.
24/01/2013
Coop Stinger
Mas partindo do pressuposto que você não tenha nada pronto, eu vejo duas formas de fazer isso:
1) você gravaria um "objeto" por linha do txt, assim você poderia carregar o arquivo usando uma TStringList. Essa classe possui métodos para carregar e salvar arquivos facilmente e você pode acessar cada linha de forma rápida como strings.
2) você gravaria os "objetos" todos em uma linha só e teria de varrer essa linha identificando cada ocorrência do ponto-e-vírgula. Cada vez que encontrasse um ;, copiaria o trecho do string até ali para gerar um "objeto".
É fácil perceber que a primeira forma é bem mais simples e organizada.
Qualquer dúvida, é só avisar.
Abraço e boa sorte.
O 2 é o que encaixa melhor, eu tenho a aplicação, pois não consigo resolver fazer os dados que eu preciso, se você tiver Email e puder me adicionar, é que preciso resolver isso urgente faz meses que estou tentando
[IMG]http://i.imgur.com/Ntjjw5o.png[/IMG]
O modelo da aplicação pra ter uma base ta ali, mas ele não abre o arquivo correto, caso possa me ajudar eu agradeço, se tiver e-mail eu mostro a aplicação pelo Teamviewer, eu sou meio novato nisso ainda mas tava precisando fazer esse aplicativo, pois varri a net atrás de informações e nada consegui
24/01/2013
Joel Rodrigues
Coloque aqui o código que você está usando para ler o arquivo.
Se possível, mostre também um exemplo de arquivo.
24/01/2013
Coop Stinger
24/01/2013
Coop Stinger
unit Umain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) ComboBox1: TComboBox; ListBox1: TListBox; Label1: TLabel; Label2: TLabel; GroupBox1: TGroupBox; Label3: TLabel; Edit1: TEdit; Image1: TImage; Memo1: TMemo; Button1: TButton; Button2: TButton; Edit2: TEdit; Edit3: TEdit; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit4: TEdit; Label7: TLabel; Edit5: TEdit; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; f: TextFile; valor1:string; valor2:string; custom:string; item:string; category:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin valor1:=(Edit5.Text); valor2:=(Edit4.Text); custom:=(Edit3.Text); item:=(Edit2.Text); category:=(Edit1.Text); AssignFile(f, ExtractFilePath(Application.exeName) + '\shop.txt'); Rewrite(f); Write(f,(category) + ',' + (item) + ',' + (custom) + ',' + (valor1) + ',' + (valor2) + ';'); Closefile(f); Memo1.Lines.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt') end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Lines.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt') //Load(f,(category) + ',' + (item) + ',' + (custom) + ',' + (valor1) + ',' + (valor2) + ';'); end; procedure TForm1.Button3Click(Sender: TObject); begin AssignFile(f, ExtractFilePath(Application.exeName) + '\shop.txt'); Rewrite(f); Writeln(f, Edit1.Text, ',', Edit2.Text, ',', Edit3.Text, ',', Edit4.Text, ',', Edit5.Text, ';'); Closefile(f); Memo1.Lines.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt') end; end.
O arquivo que deve ler é este
SHOP0,3,1,20,0;0,5,2,100,0;0,2,1,200,0;0,4,1,200,0;0,1,2,500,0;0,6,2,500,0;1,1,1,200,0;1,2,1,200,0;0,7,1,200,0;0,8,1,300,0;0,9,4,500,0;0,10,1,100,0;0,11,1,500,0;1,4,1,200,0;0,12,1,200,0;0,13,1,500,0;0,14,3,300,0;1,3,1,200,0;1,5,1,300,0;0,15,1,200,0;3,1,1,100,0;3,2,1,25,0;3,3,1,150,0;3,4,0,400,0;0,16,2,300,0;0,17,3,200,0;0,18,1,300,0;0,19,2,300,0;0,20,2,500,0;0,21,2,200,0;2,1,1,100,0;3,5,1,300,0;0,22,1,300,0;0,23,3,400,0;0,24,1,50,0;0,25,1,250,0;0,26,1,300,0;0,27,2,800,0;0,28,2,300,0;0,29,3,500,0;4,1,3,200,0;4,2,1,200,0;0,30,1,200,0;0,31,1,300,0;0,32,1,800,0;0,33,2,150,0;0,34,2,400,0;0,35,1,1000,0;0,36,2,500,0;0,37,1,200,0;0,38,3,800,0;1,6,2,800,0;0,41,1,1000000,0;0,42,2,1000000,0;4,3,1,1000000,0;2,3,1,1000000,0;0,43,1,200,0;0,44,3,250,0;0,45,1,300,0;0,46,2,100,0;0,47,4,1500,0;1,7,3,50,0;2,4,2,20,0;3,6,1,300,0;3,7,1,300,0;4,4,2,50,0;1,8,1,50,0;0,48,2,300,0;0,52,0,400,0;2,5,2,300,0;0,51,1,200,0;0,49,3,500,0;3,8,0,400,0;0,54,2,50,0;0,50,1,400,0;0,53,0,400,0;3,9,1,400,0;0,55,1,100,0;4,6,2,50,0;3,10,1,20,0;2,9,0,1000000,0;0,61,1,200,0;0,62,2,300,0;1,10,1,100,0;0,63,1,350,0;0,64,2,300,0;1,11,2,200,0;0,68,7,200,0;0,69,6,200,0;0,70,4,200,0;0,71,2,200,0;0,72,3,200,0;0,73,2,200,0;3,12,1,150,0;0,65,2,200,0;3,13,0,150,0;0,66,2,300,0;0,67,1,400,0;0,74,2,150,0;3,14,1,50,0;0,77,3,250,0;4,8,2,100,0;0,78,3,300,0;2,10,3,3001,0;0,79,2,250,0;1,12,2,400,0;0,75,2,50,0;0,76,1,200,0;2,2,0,1000000,0;4,9,2,1000000,0;0,39,2,1000000,0;0,81,1,1000000,0;3,15,0,1000000,0;0,82,1,1000000,0;0,80,1,1000000,0;0,40,2,1000000,0;0,83,2,1000000,0;3,16,1,1000000,0;2,12,1,1000000,0;4,10,1,1000000,0;2,11,1,1000000,0;0,85,2,1000000,0;0,84,0,1000000,0;1,9,1,1000000,0;4,5,2,1000000,0;2,6,2,1000000,0;4,11,2,1000000,0;2,13,1,1000000,0;4,12,1,1000000,0;0,86,0,1000,0;2,15,0,600,0;2,14,3,200,0;0,88,2,1000000,0;1,14,3,1000000,0;0,87,3,1000000,0;0,56,4,1000000,0;0,57,1,1000000,0;0,58,0,1000000,0;2,7,0,1000000,0;2,8,2,1000000,0;3,11,0,1000000,0;0,89,2,1000000,0;0,91,0,1000000,0;0,90,0,1000000,0;0,93,3,1000000,0;0,92,3,1000000,0;0,59,1,1000000,0;0,60,0,1000000,0;4,7,2,1000000,0;3,17,0,1000000,0;2,16,3,1000000,0;0,94,3,1000000,0;0,95,5,1000001,0;0,96,2,400,40;0,97,4,400,40;1,15,0,400,40;2,17,0,400,40;3,18,0,400,40;4,13,0,400,40;5,1,1,400,40;5,2,1,400,40;5,3,1,400,40;5,4,1,400,40;5,5,1,400,40;5,6,4,400,40;5,7,2,400,40;5,8,4,400,40;21,0,0,500,50;21,1,0,500,50;21,2,0,1000,150;21,3,0,1000,150;21,4,0,1000,150;21,5,0,1000,150;22,2,0,4000,300;22,3,0,4000,300;22,4,0,4000,300;22,5,0,4000,300;22,6,0,4000,300;22,7,0,6000,350;22,8,0,8000,400;3,19,2,1000001,0;0,98,1,400,40;1,16,2,1000001,0;1,13,0,1000001,0;0,99,2,200,40;0,101,3,300,40;0,102,3,500,40;3,20,3,20,2;3,21,3,60,6;3,22,1,100,10;3,23,2,100,10;5,9,2,400,40;5,10,2,200,40;2,18,2,40,4;2,19,1,100,10;6,1,2,2000,200;22,9,0,7000,400;22,10,0,1000001,0;7,1,0,1000001,0;8,1,0,1000001,0;3,24,2,1000000,0;1,17,1,1000000,0;2,20,1,1000000,0;4,14,3,200,40;2,21,0,300,40;0,103,2,250,40;2,22,3,400,40;22,11,0,7000,350;22,12,0,6500,325;22,13,0,5000,250;3,25,1,1000000,0;22,14,0,5000,250;4,15,3,1000000,0;2,23,0,1000000,0;0,104,1,1000000,0;3,26,2,1000000,0;6,2,1,1000000,0
24/01/2013
Rafael Cunha
24/01/2013
Coop Stinger
24/01/2013
Rafael Cunha
24/01/2013
Coop Stinger
[url]http://www.mediafire.com/?px3jcnx7m62mtgn[/url]
Agradeço se alguém puder me ajudar.
24/01/2013
Rafael Cunha
//Adiciona um nova linha no arquivo procedure TForm1.Button1Click(Sender: TObject); var Arq: TStringList; begin Arq := TStringList.Create; try Arq.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt'); Arq.Append(Edit1.Text + ',' + Edit2.Text + ',' + Edit3.Text + ',' + Edit4.Text + ',' + Edit5.Text); Arq.SaveToFile(ExtractFilePath(Application.exeName) + '\shop.txt'); finally Arq.Free; end; end; //Carrega o arquivo no ListBox procedure TForm1.Button2Click(Sender: TObject); var Arq: TStringList; Idx: Integer; begin ListBox1.Clear; Arq := TStringList.Create; try Arq.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt'); for Idx := 0 to Arq.Count - 1 do ListBox1.Items.Add(Arq.Strings[Idx]); finally Arq.Free; end; end; //Edita um registro listado no ListBox1 procedure TForm1.Button3Click(Sender: TObject); var Arq: TStringList; begin if (ListBox1.ItemIndex > -1) then begin Arq := TStringList.Create; try Arq.LoadFromFile(ExtractFilePath(Application.exeName) + '\shop.txt'); Arq.Strings[ListBox1.ItemIndex] := Edit1.Text + ',' + Edit2.Text + ',' + Edit3.Text + ',' + Edit4.Text + ',' + Edit5.Text; Arq.SaveToFile(ExtractFilePath(Application.exeName) + '\shop.txt'); finally Arq.Free; end; end; end; //Joga as informações do item selecionado no ListBox para as Edits procedure TForm1.ListBox1Click(Sender: TObject); var Line: String; begin Line := ListBox1.Items[ListBox1.ItemIndex]; Edit1.Text := Copy(Line, 0, Pos(',', Line) - 1); Delete(Line, 1, Pos(',', Line)); Edit2.Text := Copy(Line, 0, Pos(',', Line) - 1); Delete(Line, 1, Pos(',', Line)); Edit3.Text := Copy(Line, 0, Pos(',', Line) - 1); Delete(Line, 1, Pos(',', Line)); Edit4.Text := Copy(Line, 0, Pos(',', Line) - 1); Delete(Line, 1, Pos(',', Line)); Edit5.Text := Line; end;
24/01/2013
Coop Stinger
Você tem Msn Rafael, eu gostaria de adicionar, é seria 1 pouco mais facil?
24/01/2013
Coop Stinger
no arquivo de Texto ele ta assim
SHOP0,3,1,20,0;0,5,2,100,0;0,2,1,200,0;
Na Stringlist teria q estar assim.
0,3,1,20,0; 0,5,2,100,0; 0,2,1,200,0;
Ta quase lá amigão, poderia me dar uma ajudinha apenas nisso?
25/01/2013
Rafael Cunha
25/01/2013
Rafael Cunha
Clique aqui para fazer login e interagir na Comunidade :)