BHAMF Posted May 11, 2017 at 10:09 PM Report #604161 Posted May 11, 2017 at 10:09 PM Estou com um projeto chamado GDV (Gerenciamento de Viagens), que será para gerenciar viagens, exemplo, eu tenho uma viagem no qual tenho 50 passageiros, eu vou lá no GDV e anoto o nome dos passageiros, informações e tal. Até aí tudo bem, o problema é que, a pessoa que me pediu este programa quer 12 viagens com cada viagem 50 pessoas, o que dá 600 pessoas para se cadastrar, isto é, 600 arquivos para se criar (isto tirando as informações), eu uso este "estilo" de programação, um arquivo para cada coisa, pois não sei lidar muito bem com as linhas, por exemplo, não sei usar informações separadas em um arquivo só, pois não sei separar as linhas umas das outras(separar as informações), então, já que eu uso este "estilo" de programação, pensei em usar o comando For, para criar 50 arquivos em um "passe de mágica", porém não funcionou, pois o comando Assign não foi apropriado para este tipo de coisa, vejam: program Project1; uses Crt, SysUtils; var t : text; I : integer; begin for I := 1 to 10 do begin //este é só um exemplo, mas eu teria que criar 50 desses I := I + 1; assign(t, 'nomeDoCliente',I,'.clnGDV'); rewrite(t); close(t); end; end. Não sei como vou fazer tudo isso tirando o comando For, se não existir outra maneira, vou ter que criar um arquivo por vez mesmo? Obrigado desde já! 11/05/2017 19:09 Brasil (Horário de Brasília) Brenio Hallison A.M. Filho
nunopicado Posted May 12, 2017 at 03:47 PM Report #604186 Posted May 12, 2017 at 03:47 PM Em vez de procurares forma de criar os 600 arquivos, recomendava-te que aprendesses a usar um ficheiro como base de dados. É bastante simples, e se quiseres posso dar-te umas dicas. Melhor ainda que isso era usares um DBMS, ou seja, um motor de banco de dados, que te facilita imenso lidar com as informações guardadas e com uma velocidade muito superior. Custa um pouquinho mais a entrares no ritmo, mas também não é dificil. É que criares 600 ficheiros para isso é absurdamente contra todas as boas práticas. De qualquer forma, seria possível fazer com o Assign, mas não dessa forma que tens: O Assign recebe apenas dois argumentos (ou seja, só podes usar uma única vírgula A propria forma como estás a usar o FOR é errada Teria de ser algo tipo: program Project1; uses Crt, SysUtils; var t : text; I : integer; begin for I := 1 to 10 do begin // Não podes atribuir valor nenhum à variável índice do FOR. O seu valor será atribuido automaticamente pelo compilador a cada iteracção assign(t, 'nomeDoCliente'+IntToStr(I)+'.clnGDV'); rewrite(t); close(t); end; end. Agora repara noutra coisa: Se o nome do cliente tiver caracteres que o sistema operativo não suporte para nome de ficheiro, isto vai dar erro. Terias de criar uma validação. Ou seja, se fores mesmo por esse caminho do ficheiro para cada cliente, estás a arranjar problemas para ti mesmo. Esquece isso, e pensa antes em usar ficheiros sequenciais binários, também conhecidos por ficheiros tipados. É de uso bem simples, e fica bem melhor (sem comparação). "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
BHAMF Posted September 24, 2017 at 12:25 AM Author Report #607126 Posted September 24, 2017 at 12:25 AM Já resolvi minha questão, obrigado pela dica! Brenio Hallison A.M. Filho
pwseo Posted November 2, 2017 at 07:34 PM Report #607853 Posted November 2, 2017 at 07:34 PM @BHAMF, No espírito da partilha de informação não queres partilhar a solução que encontraste para o teu problema? O @nunopicado levantou algumas questões relativas à tua abordagem inicial que seria interessante perceber se chegaste ou não a abordar, e de que forma. Assim, quem tiver uma dúvida semelhante à tua acaba por ter uma ideia de como solucionaste o problema também. 1 Report
BHAMF Posted November 4, 2017 at 02:37 PM Author Report #607896 Posted November 4, 2017 at 02:37 PM Em 02/11/2017 às 16:34, pwseo disse: @BHAMF, No espírito da partilha de informação não queres partilhar a solução que encontraste para o teu problema? O @nunopicado levantou algumas questões relativas á tua abordagem inicial que seria interessante perceber se chegaste ou não a abordar, e de que forma. Assim, quem tiver uma dúvida semelhante à tua acaba por ter uma ideia de como solucionaste o problema também. Aqui está a maneira em que resolvi o meu código utilizando parte do exemplo do @nunopicado procedure verificacao_de_arquivos; var nomeArq : string; nomeDir : string; I : integer; begin if not FileExists('GDVDIR/VIAGEM1/vgm1.vgmGDV') then begin for I := 1 to 6 do begin nomeArq := 'GDVDIR/VIAGEM1/vgm' + intToStr(I); assign(t, nomeArq + '.vgmGDV'); rewrite(t); close(t); end; end; end; Não consegui usar um gerenciador de banco de dados ainda, por enquanto, tal programa está funcionando perfeitamente com minha gambiarra, no futuro, desejo aprender mais sobre tal. Obrigado pela dica! Se quiseres testar o programa, podes acessar o site: http://gdv.hol.es BHAMF, 11:32, 04/11/2017 (Horário de Brasília) Brenio Hallison A.M. Filho
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now