Carloz Posted July 5, 2006 at 05:21 PM Report #36402 Posted July 5, 2006 at 05:21 PM Boas. Eu gostava de saber se é possivel utilizar comandos do ms dos no pascal e se sim como utiliza-los. Comandos do genero "find", "replace", "delete"...e assim por ai. Se não for possivel, que comandos se podem usar em vez desses? Obrigado "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 5, 2006 at 05:35 PM Report #36410 Posted July 5, 2006 at 05:35 PM Sim é. Usa o comando EXEC. No entanto és capaz de ter de invocar com " COMMAND.COM /P " antes de certos comandos, isto em WINDOWS/DOS claro. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
maiden Posted July 5, 2006 at 06:27 PM Report #36420 Posted July 5, 2006 at 06:27 PM Existe uma biblioteca que te permite trabalhar com Dos. Se estiveres a usar Turbo Pascal podes fazer Program xpto; Uses crt,dos; ... Caso contrário da forma anteriormente postada. Cumps,
Carloz Posted July 6, 2006 at 12:42 AM Author Report #36490 Posted July 6, 2006 at 12:42 AM Desde já obrigado por responderem. Não percebi como faço se não estiver a trabalhar com o turbo pascal?...ou seja não percebi o que disse o M6. Podem dar um exemplo? E os comandos que usar depois no programa sao os mesmos do ms dos certo? Obrigado e fiquem bem "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 6, 2006 at 01:44 PM Report #36574 Posted July 6, 2006 at 01:44 PM Desde já obrigado por responderem. Não percebi como faço se não estiver a trabalhar com o turbo pascal?...ou seja não percebi o que disse o M6. Podem dar um exemplo? E os comandos que usar depois no programa sao os mesmos do ms dos certo? Obrigado e fiquem bem A ver se consigo explicar melhor. O comando Pascal que procuras é o EXEC, vê a documentação do Pascal ou procura na net que vais encontrar mais informação sobre isto. Quando ao command.com /p tem a ver com particularidades do próprio DOS (comandos internos, comandos externos, contexto e outras tretas), que para executares certos comandos vais ter de escrever command.com /p "<comando>" . Depende do que pretendes fazer, podes ter, ou não, necessidade de usar command.com /p "<comando>" em vez de invocares simplesmente o comando. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 6, 2006 at 09:55 PM Author Report #36702 Posted July 6, 2006 at 09:55 PM humm ok. Já entendi mais ou menos. Só mais duas questões: Os comandos que usar no programa são os mesmo que se usam no DOS certo? Que comando posso usar para procurar um ficheiro no disco? Obrigado "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 7, 2006 at 09:30 AM Report #36740 Posted July 7, 2006 at 09:30 AM humm ok. Já entendi mais ou menos. Só mais duas questões: Os comandos que usar no programa são os mesmo que se usam no DOS certo? Não. O DOS é um sistema operativo com os seus próprios comandos e o Pascal é uma linguagem de programação também com os seus próprios comandos. Podes, através do EXEC, invocar/executar comandos de DOS a partir do Pascal, mas não vais poder usar os comandos do DOS dentro do Pascal (como se de um comando Pascal nativo se tratasse). Que comando posso usar para procurar um ficheiro no disco? Obrigado Depende. Em DOS ou em Pascal? Se queres procurar um ficheiro dentro de uma aplicação Pascal, tens de implementar a tua própria rotina de procura de ficheiros dentro de um directório e, caso não encontre, passar ao directório seguinte. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 7, 2006 at 04:45 PM Author Report #36860 Posted July 7, 2006 at 04:45 PM OK. Já entendi isso do Pascal e do Dos. O problema agora é que cria fazer um programa para pesquisar um ficheiro no disco, mas não faço ideia como fazer, uma vez que não existe nenhum comando do tipo "Find", apenas para pesquisar dentro de ficheiros. Não me podem dar umas luzes/ideias de como o fazer...só assim umas ideias base? Obrigado pela paciencia 🙂 "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 7, 2006 at 04:58 PM Report #36863 Posted July 7, 2006 at 04:58 PM O algoritmo é simples e definido de forma recursiva: 1. saber qual o ficheiro que queres encontrar 2. começar num directório, por exemplo c:\ 3. para todos os ficheiros do directório actual: 3.1. se o ficheiro actual é o que queremos encontrar então parar 3.2. senão, passar ao próximo ficheiro 4. esgotados os ficheiros do directório actual, fazer para cada sub-directório do directório actual: 4.1. mudar para o sub-directório 4.2. voltar ao passo 3. 5. pesquisados todos subdirectórios do directório inicial, parar e dizer que o ficheiro não foi encontrado Se queres fazer isso em Pascal procura na documentação os comandos de ficheiros e directórios. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 7, 2006 at 05:59 PM Author Report #36871 Posted July 7, 2006 at 05:59 PM ok percebi. Só uma questão...quando te referes à documentação é à biblioteca do Pascal? (noob question 🙂 ) http://www.templetons.com/brad/alice/language/language8.html "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 8, 2006 at 09:48 AM Report #37020 Posted July 8, 2006 at 09:48 AM Sim é isso. Mas isso é apenas um pequeno conjunto de coisas. O Pascal tem muito mais, em especial se usares o Turbo Pascal tem um conjunto vasto e extremente útil de bibliotecase funções. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 8, 2006 at 09:08 PM Author Report #37131 Posted July 8, 2006 at 09:08 PM Thx M6! Agora estou com um problema... Isto é o que já tenho: program Find; Uses crt, dos; Function FileExist(Name:string):Boolean; Var F:File; Begin Assign(F,Name); Reset(F); If IOResult=0 Then Begin FileExist:=True; Close(F); end else FileExist:=False; If FileExist=True then writeln('Existe'); If FileExist=False then writeln('Nao Existe'); End; Begin clrscr; FileExist('name'); readln; end. Supostamente o programa tentaria aceder ao ficheiro 'nome' e se conseguisse dizia 'Existe' ou caso contrário dizia 'Não Existe'. O problema é que assim que corro o programa dá erro e fecha logo e eu não consigo saber porque. Alguém me pode ajudar? Obrigado p.s. vou alterar o nome do topico uma vez que me estou a desviar um pouco do assunto original. "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 8, 2006 at 09:32 PM Report #37135 Posted July 8, 2006 at 09:32 PM Thx M6! Agora estou com um problema... Isto é o que já tenho: program Find; Uses crt, dos; Function FileExist(Name:string):Boolean; Var F:File; Begin Assign(F,Name); Reset(F); If IOResult=0 Then Begin FileExist:=True; Close(F); end else FileExist:=False; If FileExist=True then writeln('Existe'); If FileExist=False then writeln('Nao Existe'); End; Begin clrscr; FileExist('name'); readln; end. Supostamente o programa tentaria aceder ao ficheiro 'nome' e se conseguisse dizia 'Existe' ou caso contrário dizia 'Não Existe'. Sim é isso que faz. Mas de certo que existam outras soluções melhores do que estares a verificar se um ficheiro exite abrindo-o. O problema é que assim que corro o programa dá erro e fecha logo e eu não consigo saber porque. Alguém me pode ajudar? Obrigado p.s. vou alterar o nome do topico uma vez que me estou a desviar um pouco do assunto original. Qual é o erro que dá? Não sei como estás a correr isso, mas é sempre bom executar isso de forma manual numa shell de DOS em vez de dares um duplo click no Explorer do Windows. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 8, 2006 at 09:46 PM Author Report #37138 Posted July 8, 2006 at 09:46 PM Sim é isso que faz. Mas de certo que existam outras soluções melhores do que estares a verificar se um ficheiro exite abrindo-o. Mas esta foi a unica maneira que vi. Pesquisei em vários sitios, vi programas exemplo e e foi essa a unica que vi. É que o meu problema é dizer ao programa para ver se o ficheiro existe. Só tentanto abri-lo... Conheces algo mais simples? Qual é o erro que dá? Não sei como estás a correr isso, mas é sempre bom executar isso de forma manual numa shell de DOS em vez de dares um duplo click no Explorer do Windows. Eu estou a usar o Dev-Pascal e apenas faço "Compile and Run" e ele compila (sem erros) mas depois quando faço run ele abre e fecha tão depressa que nem se percebe o erro. Qualquer coisa como "Runtime Error" acho... Obrigado "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 8, 2006 at 10:15 PM Report #37152 Posted July 8, 2006 at 10:15 PM Sim é isso que faz. Mas de certo que existam outras soluções melhores do que estares a verificar se um ficheiro exite abrindo-o. Mas esta foi a unica maneira que vi. Pesquisei em vários sitios, vi programas exemplo e e foi essa a unica que vi. É que o meu problema é dizer ao programa para ver se o ficheiro existe. Só tentanto abri-lo... Conheces algo mais simples? Creio que o Turbo Pascal tinha umas funções mais especificas para isso, mas não sei se não eram só do Turbo Pascal... Qual é o erro que dá? Não sei como estás a correr isso, mas é sempre bom executar isso de forma manual numa shell de DOS em vez de dares um duplo click no Explorer do Windows. Eu estou a usar o Dev-Pascal e apenas faço "Compile and Run" e ele compila (sem erros) mas depois quando faço run ele abre e fecha tão depressa que nem se percebe o erro. Qualquer coisa como "Runtime Error" acho... Obrigado Faz assim: abre uma shell de DOS no local onde tens o executável final dessa aplicação e corre a aplicação a partir dai. Assim, quando a aplicação terminar vais ver o erro. Antes de continuares nesta aventura, acoselho-te a leres um tutorial ou um bom livro de Pascal, senão vais andar "às cabeçadas" com coisas simples. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 9, 2006 at 01:25 AM Author Report #37188 Posted July 9, 2006 at 01:25 AM Faz assim: abre uma shell de DOS no local onde tens o executável final dessa aplicação e corre a aplicação a partir dai. Assim, quando a aplicação terminar vais ver o erro. Antes de continuares nesta aventura, acoselho-te a leres um tutorial ou um bom livro de Pascal, senão vais andar "às cabeçadas" com coisas simples. Ok vou fazer isso. Quanto ao livro, estou a ler o "Introdução à Programação usando o PASCAL" de J. Pavão Martins. À medida que vou lendo vou fazendo umas coisitas 😉 Fica bem e obrigado "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
Carloz Posted July 9, 2006 at 06:38 PM Author Report #37251 Posted July 9, 2006 at 06:38 PM Aqui está o erro. Não percebo porque dá erro...já tentei mudar uma data de coisas e dá sempre erro. Penso que tem qualquer coisa a ver com o comando "Assign". http://img233.imageshack.us/img233/3394/erro1hn.jpg Mais uma vez, estive a ver o source de alguns programas de pesquisa e todos usam este método...não percebo. Vou tentar usar outro compilador para ver. "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 10, 2006 at 09:43 AM Report #37294 Posted July 10, 2006 at 09:43 AM Tens de fazer debug "the hard way". Faz writelns, tipo, writeln("1"); , writeln("2");, etc. ao longo do código para saberes onde isso estoira. Mas parece-me que isso pode ser alguma incompatibilidade entre o código gerado e o SO. O compilador é para Windows ou apenas para DOS? Isso é 16 bits, certo? 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Carloz Posted July 10, 2006 at 12:27 PM Author Report #37329 Posted July 10, 2006 at 12:27 PM Ok já vi onde está o problema. O problema está no comando "Reset". Quando o programa tenta abrir o ficheiro, se o ficheiro existir, ele diz que existe, mas quando o ficheiro não existe, como o ele não o encontra dá erro ao fazer "Reset". O mesmo acontece com o comando "Close". Não tou a ver como solucionar isto...só usando outro método. O problema é...qual? Fica bem e obrigado pela ajuda "Rejoice not against me, O mine enemy: when I fall, I shall arise; when I sit in darkness, the LORD shall be a light unto me." - Micah 7:8 (KJV)
M6 Posted July 10, 2006 at 12:32 PM Report #37331 Posted July 10, 2006 at 12:32 PM Não necessitas de usar outro método, basta manipulares o ficheiro só quando o mesmo existe. Function FileExist(Name:string):Boolean; Var F:File; Begin Assign(F,Name); If IOResult=0 Then Begin FileExist:=True; Close(F); writeln('Existe'); end else begin FileExist:=False; writeln('Nao Existe'); end; End; Tens outras formas de apanhar os erros em Pascal, ou seja, quando uma aplicação dá erro não podes deixar estoirar, apanhas o erro e dás uma mensagem. No Turbo Pascal acho que era qualquer coisas a ver com $I ou {$A}, já não me recordo... 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
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