cmd: program.exe <plik.txt - problem z wczytaniem danych

0

Mam taki problem z programami napisanymi w pascalu.
Chcę uruchomić w cmd program i strumieniem przekazac do niego dane z pliku tekstowego np jakieś napisy.

przykład programu: program.exe

uses crt;
var napis:string;
begin
  while not eof do
    begin
      readln(napis);
      writlen(napis);
    end;
end.
 

przykład pliku tekstowego: plik.txt

 
abc
cba
asdfa
fkajsh

i uruchamiam to komendą w cmd:

C:\> program < plik.txt

pod win xp całość się zawiesza i nie wyświetla na ekranie napisów.
dlaczego?
Proszę o pomoc.
Pozdrawiam

0

"sciezka_do_programu" "sciezka_do_pliku"
http://lmgtfy.com/?q=pascal+cmd+args

0

A jesteś pewny, że w ogóle da się w taki sposób przekazać strumieć do programu? Bo ja nie... Co w ogóle ma znaczyć ten kod:

uses crt;
var napis:string;
begin
  while not eof do
    begin
      readln(napis);
      writlen(napis);
    end;
end.

??? Co to jest? Żeby użyć funkcji EoF musisz jej podać parametr, jakim jest zmienna plikowa wcześniej skojarzona z jakimś plikiem, a sam plik musi być otwarty; Nie ma w tym kodzie nic takiego, więc się nie dziw, że program się zawiesza; Przykład użycia funkcji EoF masz tutaj;


To i tak nie zmienia faktu, że nie można nic z tym zrobić; Słyszałeś kiedyś o czymś takim jak uruchamianie aplikacji z parametrem? Jeśli nie to poczytaj o:

  1. parametrach aplikacji,
  2. funkcji ParamCount,
  3. funkcji ParamStr;
    Wtedy będziesz mógł uruchomić aplikację w cmd np. tak: C:\Application.exe C:\File.txt;

Zapamiętaj, że podając parametry obok nazwy programu w cmd, każdy parametr jest oddzielony co najmniej jednym znakiem spacji; Jeśli chcesz podać nazwę pliku zawierającą białe znaki, opatrz ją znakiem cudzysłowy - "C:\File Name Contains White Characters.Ext"

1

??? Co to jest? Żeby użyć funkcji EoF musisz jej podać parametr, jakim jest zmienna plikowa wcześniej skojarzona z jakimś plikiem, a sam plik musi być otwarty; Nie ma w tym kodzie nic takiego, więc się nie dziw, że program się zawiesza; Przykład użycia funkcji EoF masz tutaj;

Nie prawda, EOF jest poprawne również bez parametru. Skoro nie wiesz o tym, to się nie wypowiadaj.

Spróbuj tak:

var f:textfile;
begin
assignfile(f,'');reset(f);
while not eof(f) do begin readln(f,napis);writeln(napis);end;
end.
0

Jeżeli używasz przekierowania danych wyjściowych < plik.txt to w kodzie programu nie używasz żadnych operacji na pliku, załóżmy że mamy plik o strukturze:

15
marek
jan
kuba

to aby wczytać je za pomocą przekierowania wystarczy tak:

program aa;
var x:int;
var a,b,c:string;
begin
read(x);
read(a);
read(b);
read(c);
end.

Dawno nie pisałem w Pascalu więc nie wiem czy wszystko dobrze ale mam nadzieje że wiesz o co mi chodzi.

0

Nie interesuje mnie żadne otwieranie z parametrem bo to inna bajka.
Wiem jak używać eof.
Wiem że takie przekazanie danych jest możliwe.
Wiem jak czytać pliki assignem.
W ten sposób rozwiązuje się zadania do olimpiad z prg, gdy trzeba wczytać i przerobić ogrom danych niemożliwy do wczytania przez tablice.
Tak uruchamiane są programy w systemach oceniających zadania.
Jedyny problem to taki że nie mogę uruchomić tego pod Windą.
Naprawdę wiele opcji już przerobiłem.
Problem jest z kodowaniem znaków w pliku tekstowym, kombinowałem dużo ale nie wyszło.

Dzięki za posty.

0

Problemem okazuje się uses Crt;. Bez tego działa. Może mi ktoś wytłumaczyć dlaczego?
pozdrawiam

0

Problemem okazuje się uses Crt;. Bez tego działa. Może mi ktoś wytłumaczyć dlaczego?

Czy używasz DOSowego TP? Bo wtedy mnie nic nie dziwi.

0

Używam fpc 2.2.4

0

fpc 2.2.4

A wiesz że ona była wydana pare lat temu? www.freepascal.org

0

z tym, że to jest akurat ostatnia wersja, która pod windowsową konsolą nie ma zwalonego kodowania znaków… pisałem do twórców, nie słuchali.

IDE FPC nie jest już wspierane pod Windowsem, załatw sobie Lazarusa, bo jest dużo lepszym i godniejszym środowiskiem nowoczesnego kompilatora.

poza tym nie wiem o co wam chodzi z kodowaniem... U mnie tam wszystkie IDE FPC działają średnio-dobrze.

0

używałem fpc do olimpiad, wymagana była ta wersja. Dziękuje wam za odpowiedzi.
pozdrawiam serdeczne

1 użytkowników online, w tym zalogowanych: 0, gości: 1