Jump to content


Photo

Banco De Dados Complero Em Aquivos Ini


  • Faça o login para participar
5 replies to this topic

#1 FoxCrazy

FoxCrazy

    Bill Medley - He Ain't Heavy, He's My Brother

  • Usuários
  • 187 posts
  • Sexo:Não informado
  • Interesses:ASP Maníaco!

Posted 27/10/2003, 08:49

Olá pessoal estou fazendo um programa e optei em fazer um banquinho de dados em INI, assim o programa pode funcionar pela rede e em qualquer máquina com apenas o executavel, pois bem minha intenção é.

[RegistroAtual]
ID=4 //aqui eu seto o registro atual, ou seja o proximo será ID+1

[Numero]
1=2001 //esse campo pretendo criar minha chave primaria
2=2002
3=2003
4=2004

[Motorista]
1=Leandro //campo nome
2=Pedro
3=Julho
4=João


Galera inserir e editar registro eu já criei, mas o que falta é ao tentar inserir um registro ele verifique se ele existe no campo Numero.

Como eu faço essa verificação? bem como eu tenho o registro atual posso fazer um array de 1 até RegistroAtual, mas como faço isso?

Uso os seguintes objetos:

user IniFiles;
---
var
ArqIni : TIniFile;
---
Leitura
Numero := ArqIni.ReadInteger('RegistroAtual', 'ID', Numero);
---
Escrita
ArqIni.WriteString('Numero', IntToStr(Numero), Edit1.text);


Muito obrigado galera!! (y)

.


#2 keitarosan

keitarosan

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Hinata Sou
  • Interesses:Linguagens de programação.

Posted 27/10/2003, 19:45

Aew xará, eh o seguinte... no seu caso, acho que utilizar um array com o numero de elementos atuais no arquivo INI seria apenas um uso de memória a toa, pois como seu programa vai funcionar em rede, varias pessoas vão acessar esse mesmo INI, pelo menos eu acho que sim, certo?
Se várias pessoas podem escrever nesse INI, pensa comigo...

Vamos dizer que você tenha você e um amigo seu mexenu no programa, você insere 3 registros, logo, seu array assume 3 elementos, certo? agora o seu amigo insere mais 2 registros... no seu computador, seu array seria 3 ateh você tentar ler o arquivo INI novamente, no PC dele talvez o Array de controle esteja contando 5 elementos ou somente 2, nom sei de qual modo você fez, por isso nom posso afirmar com certeza...

Dessa forma, você realmente teria que fazer uma verificação antes de inserir um número, agora vamos pensar, pra q um array de controle se você tem um campo ID guardando o total de registros? o.o''
esse campo ID é a chave de tudo kra, com ele você pode descartah esse array de controle aew... eu fiz aki um teste, e vi que talvez essa fosse a melhor forma, nada de array de controle.

agora na hora de inserir um campo, faz o seguinte:

var
  ArqIni: TIniFile;
  RegAtual: Integer;
  label Exists;
begin
  ArqIni := TIniFile.Create('arquivo.ini');
  ArqIni.UpdateFile;

  RegAtual := ArqIni.ReadInteger('RegistroAtual', 'ID', 1);
  Exists:
  if not ArqIni.ValueExists('Numero', IntToStr(RegAtual + 1)) then
  begin
    RegAtual := RegAtual + 1;
    ArqIni.WriteString('Numero', IntToStr(RegAtual), IntToStr(2000 + RegAtual));
    ArqIni.WriteInteger('RegistroAtual', 'ID', RegAtual);
    Caption := IntToStr(RegAtual);
  end else
  begin
    RegAtual := RegAtual + 1;
    goto Exists;
  end;

  ArqIni.Free;
end;

Bom, esse foi meu modo de pensar até onde entendi o seu programa, posso ateh teh falado alguma besteira ali em cima por desconhecer o modo como o tal foi feito... agora como não sei exatamente o que você quer fazeh e o modo que você goxta de trabalhar, vou colocar aki tbm o que você quer saber:

Como eu faço essa verificação?
Se você estiver querendo verificar direto dentro do arquivo INI, você pode usar o método: ValueExists(const Section, Ident: string): Boolean, retorna TRUE se o valor jah for existente e FALSE caso seja inexistente
Agora, se você pretende utilizar o array e deseja verificar se existe um determinado valor dentro dele, o negócio complica, não conheço uma função que faça issow, peraew ki vou procurah aki... >_<
Sei lah kra, nom achei nada que te retorne a posição de um elemento de um array caso ele exista ç_ç
mas pode seh feito uma função ke faça issow, eh moleza... si tu nom soubeh, tu fala ki qnd eu tiveh tempu, montu uma...

Agora, como você deve ter imaginado, seu array nom pode teh um tamanho jah definido de elementos, teria que ser um array dinamico, tipo:
var
  valores: array of string;
ou
valores: array of integer

Dessa forma, o array fica flexivel, assim você podi fazeh cum ke ele assuma 1000 valores, ou somente um valor apenas, você controla o tamanho dele, a função SetLength() faix issow

Gaaaaaaah... essa msg jah tah grandi pra kct >_<
falooooows, esperu teh ajudadu em alguma coisa, kualker coisa, posta aew....
Você assiste muitos vídeos? ouve muita música? porém está cansado daqueles players super pesados? Pegue então o MOVIE AND ÁUDIO PLAYER, bastante recursos legais e relativamente leve... Aproveite e avalie o player deixando seu voto ^__^v

http://superdownload...oad/i11204.html

function TKeitaroSan.GetIcq: string;
begin
  result = '92197405';
end;

#3 FoxCrazy

FoxCrazy

    Bill Medley - He Ain't Heavy, He's My Brother

  • Usuários
  • 187 posts
  • Sexo:Não informado
  • Interesses:ASP Maníaco!

Posted 28/10/2003, 11:13

Cara muito obrigado, vou testar isso agora!!!!

.


#4 FoxCrazy

FoxCrazy

    Bill Medley - He Ain't Heavy, He's My Brother

  • Usuários
  • 187 posts
  • Sexo:Não informado
  • Interesses:ASP Maníaco!

Posted 28/10/2003, 12:25

(y) (y) (y) (y)


Muito obrigado keitarosan deu tudo certo aqui, como eu queria!


Qualquer coisa estamos ai kra é só falar! :D



:lol:

.


#5 keitarosan

keitarosan

    Normal

  • Usuários
  • 105 posts
  • Sexo:Não informado
  • Localidade:Hinata Sou
  • Interesses:Linguagens de programação.

Posted 29/10/2003, 12:21

Trankilows ^__^v
Você assiste muitos vídeos? ouve muita música? porém está cansado daqueles players super pesados? Pegue então o MOVIE AND ÁUDIO PLAYER, bastante recursos legais e relativamente leve... Aproveite e avalie o player deixando seu voto ^__^v

http://superdownload...oad/i11204.html

function TKeitaroSan.GetIcq: string;
begin
  result = '92197405';
end;

#6 solidnuts_

solidnuts_

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Não informado

Posted 07/02/2004, 14:27

hmmm, n sei, mais da pra optar por usar banco de dados normal, eh soh nao usar o alias, e criar o arkivo sql ou paradox, e tacar na pasta q vc esta fzendo o projeto, dpois q vc salva o projeto e no table escolhe o arkivo ;)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq