Fórum Consigo gravar o arquivo ini, mas não consigo ler. #316812
20/03/2006
0
Bom é o seguinte, estou desenvolvendo um player de áudio e vídeo e gostaria de gravar o conteúdo do listbox num arquivo ini.
Fiz esse código aqui:
procedure TFrm_Princ.FormClose(Sender: TObject; var Action: TCloseAction); var Ini: TIniFile; X: Integer; begin Application.Terminate; Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, ´.ini´ ) ); try Ini.WriteInteger( ´Frm_Princ´, ´Top´, Top); Ini.WriteInteger( ´Frm_Princ´, ´Left´, Left); Ini.EraseSection(´VIDEOS´); for X := 0 to Frm_ListaFilmes.ListaFilmes.Items.Count -1 do Ini.WriteString(´VIDEOS´,´´ +IntToStr(X), Frm_ListaFilmes.ListaFilmes.Items[X]); finally Ini.Free; end; end;
Conseguindo gravar o conteúdo do listbox, veja ([b:690ab082e6][Frm_ListaFilmes]
Top=95
Left=407
Caption=Lista de Filmes/Musicas
[Frm_Princ]
Top=95
Left=0
[VIDEOS]
0=Aonde quer que eu vá.mp3
1=Marcelo D2 - Qual é.mp3
2=Ls Jack - Amanhã Não Se Sabe.mp3
3=Paralamas do Sucesso - Me Liga.mp3
4=Não olhe pra trás.mp3[/b:690ab082e6])
Mais não consigo ler.
Eu consegui fazer só essa parte do código
procedure TFrm_Princ.FormShow(Sender: TObject); var Ini: TIniFile; X: Integer; begin Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, ´.ini´ ) ); try Top := Ini.ReadInteger( ´Frm_Princ´, ´Top´, 100 ); Left := Ini.ReadInteger( ´Frm_Princ´, ´Left´, 100 ); finally Ini.Free; end; end; end;
O meu listbox fica em outro formulário, e estou colocando esse código no formulario principal.
Se alguém puder me ajudar ficarei grato.
Vitoreduardo
Curtir tópico
+ 0Posts
21/03/2006
Paullsoftware
Cria o arquivo INI
NomeArquivo := ExtractFilePath(ParamStr(0))+ChangeFileExt(ExtractFileName(ParamStr(0)),´.ini´); Try Ini := TIniFile.Create(NomeArquivo); With Ini do begin WriteBool(´Segurança´,´Desligar´,ckShutdown.Checked);//checkbox1 WriteBool(´Segurança´,´Cadastro´,ckCadastro.Checked);//checkbox2 WriteBool(´Segurança´,´Icones´,CkIcones.Checked);//checkbox3 WriteBool(´Opções´,´Iniciar´,ckIniciar.Checked);//checkbox4 WriteBool(´Opções´,´Gerenciador´,CkGerenciador.Checked);//checkbox5 WriteBool(´Opções´,´Barra de Tarefas´,chBarTarefas.Checked);//checkbox6 WriteFloat(´Opções´,´Hora´,EditValorDaHora.Value); end; Finally Ini.Free; end;
para ler o mesmo arquivo ini:
{
crie essas variaveis globais..
var
Form1 : TForm1;
vShutdown,
vCadastro,
vIcones,
vIniciar,
vGerenciador,
vBar:boolean;
vValorDaHora:Double;
}
procedure LerINIconfig;
var Ini:TIniFile;
NomeArquivo:String;
begin
NomeArquivo := ExtractFilePath(ParamStr(0))+ChangeFileExt(ExtractFileName(ParamStr(0)),´.ini´);
Try
Ini := TIniFile.Create(NomeArquivo);
With Ini do begin
vShutdown := ReadBool(´Security´,´Desligar´,vShutdown);
vCadastro := ReadBool(´Security´,´Cadastro´,vCadastro);
vIcones := ReadBool(´Security´,´Icones´,vIcones);
vIniciar := ReadBool(´Opções´,´Iniciar´,vIniciar);
vGerenciador := ReadBool(´Opções´,´Gerenciador´,vGerenciador);
vValorDaHora := ReadFloat(´Opções´,´Hora´,vValorDaHora);
vBar := ReadBool(´Opções´,´Barra de Tarefas´,vBar);
end;
Finally
Ini.Free;
end;// try
end;eu acho que o seu único problema no código é que quando vc usa [b:0ff53702c4]LEFT[/b:0ff53702c4] e [b:0ff53702c4]TOP[/b:0ff53702c4] são do form ativo... :!:
var X: Integer;
espero ter ajudado :wink:
Gostei + 0
21/03/2006
Massuda
var Lista: TStringList; ... Lista := TStringList.Create; Ini.ReadSection(´VIDEOS´, Lista); // faz alguma coisa com Lista ... Lista.Free;
Gostei + 0
21/03/2006
Vitoreduardo
O massuda, blz.
To tentando assim:
procedure TFrm_Princ.FormShow(Sender: TObject); var Ini: TIniFile; Lista: TStringList; begin Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, ´.ini´ ) ); try Top := Ini.ReadInteger( ´Frm_Princ´, ´Top´, 100 ); Left := Ini.ReadInteger( ´Frm_Princ´, ´Left´, 100 ); Lista := TStringList.Create; Ini.ReadSection(´VIDEOS´, Lista); Ini.ReadString(´Videos´,´Video´, Lista.Values[´0´]); finally Ini.Free; Lista.Free; end; end; end;
Não da erro, mais tb não lê.
A posição do Frm_Princ na tela quando fecho eu consigo ler normal, o problema é com a lista de vídeo mesmo.
Não sei se tem alguma coisa a ver, mais o meu listbox só mostra o nome do vídeo ou da musica Ex: Não olhe pra trás.mp3.
Ele não mostra a lista numerada tipo: 1:Não olhe pra trás.mp3.
Gostei + 0
21/03/2006
Massuda
Para carregar sua lista num ListBox, use no código ListBox.Items ao invés de Lista (ou seja, não precisa da variavel Lista).
Gostei + 0
21/03/2006
Vitoreduardo
Ini.ReadString(´VIDEOS´,´´, Frm_ListaFilmes.ListaFilmes.Items.Values[´0´]);
Agora ta dando o erro na hora de compila
(Access violation at address 0046FED6 in Module).
Frm_ListaFilmes é o nome do Form que tem o listbox com o nome de ListaFilmes.
Gostei + 0
21/03/2006
Massuda
procedure TFrm_Princ.FormShow(Sender: TObject); var Ini: TIniFile; Lista: TStringList; I: Integer; begin Ini := TIniFile.Create(ChangeFileExt(Application.ExeName, ´.ini´)); try Top := Ini.ReadInteger(´Frm_Princ´, ´Top´, 100); Left := Ini.ReadInteger(´Frm_Princ´, ´Left´, 100); Lista := TStringList.Create; try Ini.ReadSection(´VIDEOS´, Lista); Frm_ListaFilmes.ListaFilmes.Items.Clear; for I := 0 to Lista.Count - 1 do begin Frm_ListaFilmes.ListaFilmes.Items.Add( Lista.Values[IntToStr(I)] ); end; finally Lista.Free; end; finally Ini.Free; end; end;
Gostei + 0
21/03/2006
Emerson Nascimento
procedure TFrm_Princ.FormShow(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create( ChangeFileExt( Application.ExeName, ´.ini´ ) ); try Top := Ini.ReadInteger( ´Frm_Princ´, ´Top´, 100 ); Left := Ini.ReadInteger( ´Frm_Princ´, ´Left´, 100 ); Ini.ReadSection(´VIDEOS´, Frm_ListaFilmes.ListaFilmes.Items); finally Ini.Free; end; end;
Gostei + 0
21/03/2006
Vitoreduardo
O código que o Massuda passo funcionou + ou -.
Eu coloquei o código no OnShow do Frm_ListaFilmes e alterei essa parte do código
Ini.ReadSection(´VIDEOS/MUSICAS´, Lista)
Ini.ReadSectionValues(´VIDEOS/MUSICAS´, Lista);
Agora to conseguindo ler, só não ta executando o vídeo ou a musica quando eu dou um duplo click nela.
Será que eu tenho que salvar o caminho também.
Gostei + 0
21/03/2006
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)