Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

program w turbo pascal nie zapisuje zmienionej nazwy pliku

#1
Question  program w turbo pascal nie zapisuje zmienionej nazwy pliku
Witam, od jakiegoś czasu chcę stworzyć program do generowania liczb losowych lotto w Turbo Pascalu, w taki sposób, żeby losował mi 6 liczb z 49, szeregował je od najmniejszej do największej i zapisywał do pliku w takim formacie nazwy np. : 2014-4-30_13;20;54. Najpierw udało mi się stworzyć program, który nie sortuje w kolejności od najmniejszej do największej, ale zapisuje do pliku pod odpowiednią nazwą:
Kod:
program zadanie4;
uses dos,crt;

var a,i,j,p:byte;
    z:char;
    tab:array[1..6] of byte;
    spr:boolean;
    plik2:text;
    opis: String;
     KoniecPetli: boolean;

procedure losujzapisz; {poczatek  procedury losujzapisz}
  
begin
clrscr;
randomize;
Begin
  assign(plik2, 'd:\lot.txt');
  rewrite(plik2);
spr:=false;

for p:=1 to 1 do
begin
for i:=1 to 6 do
   begin
     repeat
       spr:=false;
       a:=random(49)+1;

         for j:=1 to i do
         begin
          if a=tab[j] then spr:=true;
         end;
      until spr<>true;
     tab[i]:=a;
       write(plik2, tab[i],' ');
      
writeln(tab[i],' ');
end;
end;

writeln(plik2);
write('Liczby zapisane do pliku txt: ');

for i:=1 to 6 do
write(tab[i],' ');
close(plik2);
   readln;
  
End;


end; {koniec procedury losujzapisz}


procedure dopisz; {porczatek procedury dopisz}

var a,i,j: byte;

Begin
  assign(plik2, 'd:\lot.txt');
  append(plik2);
randomize;
spr:=false;


begin
for i:=1 to 6 do
   begin
     repeat
       spr:=false;
       a:=random(49)+1;

         for j:=1 to i do
         begin
          if a=tab[j] then spr:=true;
         end;
      until spr<>true;
     tab[i]:=a;
       write(plik2, tab[i],' ');
writeln(tab[i],' ');
end;
end;

writeln(plik2);
write('Liczby zapisane do pliku txt: ');

for i:=1 to 6 do
write(tab[i],' ');
close(plik2);

end;{koniec procedury dopisz}

procedure wybierz; {poczatek procedury wybierz}
begin
z:= Readkey;
if z=#27 then
exit;
Writeln('Wtamy w programie Lotto.');
Write('Wcisnij enter aby wylosowac i dopisac lub escape aby zakonczyc.');

begin
readln(z);

repeat
z:=ReadKey;
if z=#27 then
exit;

read;

dopisz;
until z = #27;  


end;
end; {koniec procedury wybierz}

procedure zapisdaty;
const
dni:array[0..6] of string=('Niedz','Pon','Wto','Sro','Czw','Pia','Sob');

var plik: text;
var godz, min, sek, sek100, rr, mm, dd, dztyg: word;
var g2,m2,s2, rr2, mm2, dd2: String;

begin
clrscr;

getdate(rr, mm, dd, dztyg);

Str(rr,rr2);
writeln(rr2);
Str(mm,mm2);
writeln(mm2);
Str(dd,dd2);
writeln(dd2);

gettime(godz, min, sek, sek100);

Str(godz,g2);
writeln(g2);
Str(min,m2);
writeln(m2);
Str(sek,s2);
writeln(s2);

rename(plik2, 'D:\' +rr2+'-'+mm2+'-'+dd2+'_'+g2+';' +m2+';' +s2+ '.txt' );


end;  
{kod glowny}
begin

repeat
z:= Readkey;
if z=#27 then
exit;

losujzapisz;


wybierz;
until   z = #27;
zapisdaty;
clrscr;


end.
po jakimś czasie stworzyłem program który zapisuje w kolejności rosnącej liczby do tablicy:
Kod:
program sortowanie;
uses dos, crt;
const
n = 6;

type
tablica = array[1..n] of byte;

var plik: text;

procedure sortowanie_babelkowe(var tab : tablica);
var
i, j, tmp: byte;

begin
for i:=1 to n-1 do
begin for j := i+1 to n do
begin if tab[i] > tab[j] then
begin
tmp := tab[i];
tab[i] := tab[j];
tab[j] := tmp;
end end end;
    
end;




procedure wyswietl(tab : tablica);
var
i : byte;
plik: text;
begin
assign (plik, 'D:\lotor.txt');
append(plik);
begin

for i := 1 to n do
begin write(plik, tab[i],' ') end;
writeln;


end;
writeln(plik);
write('Liczby zapisane do pliku txt: ');
for i:=1 to n do
begin write(tab[i],',') end;
close(plik);
end;

procedure uzupelnij(var tab : tablica);
var
a,i,j,p : integer;
spr: boolean;
begin
randomize;
spr:=false;

for p:=1 to 1 do
begin
for i:=1 to n do
begin
repeat
spr:=false;
a:=random(49)+1;

for j:=1 to i do
begin
if a=tab[j] then
begin spr:=true end;
end;
until spr<>true;
tab[i]:=a;
write( tab[i],' ');
    
end;

{procedure zapisz;
Begin
  assign(plik2, 'd:\lotos.txt');
  rewrite(plik2);
spr:=false;

for p:=1 to 1 do
begin
for i:=1 to n do
   begin
     repeat
       spr:=false;
       a:=random(49)+1;

         for j:=1 to i do
         begin
          if a=tab[j] then spr:=true;
         end;
      until spr<>true;
     tab[i]:=a;
       write(plik2, tab[i],' ');  }
end;
end;

procedure nowy;
var plik: text;
Begin
assign(plik, 'D:\lotor.txt');
rewrite(plik);
close(plik);
end;
  
procedure zapisdaty;
const
dni:array[0..6] of string=('Niedz','Pon','Wto','Sro','Czw','Pia','Sob');

var plik: text;
var godz, min, sek, sek100, rr, mm, dd, dztyg: word;
var g2,m2,s2, rr2, mm2, dd2: String;

begin
clrscr;

getdate(rr, mm, dd, dztyg);

Str(rr,rr2);
writeln(rr2);
Str(mm,mm2);
writeln(mm2);
Str(dd,dd2);
writeln(dd2);

gettime(godz, min, sek, sek100);

Str(godz,g2);
writeln(g2);
Str(min,m2);
writeln(m2);
Str(sek,s2);
writeln(s2);

rename(plik, 'D:\' +rr2+'-'+mm2+'-'+dd2+'_'+g2+';' +m2+';' +s2+ '.txt' );
end;
      
var
tab : tablica;
z: char;
  
begin
nowy;

repeat
z:= Readkey;
if z=#27 then
begin exit end;
uzupelnij(tab);
   {wyswietl(tab);}
sortowanie_babelkowe(tab);
wyswietl(tab);
readln;
until   z = #27;
zapisdaty;
end.
ale nie działa z kolei zapis pliku pod nazwą w formacie daty i czasu utworzenia pliku, tak jakbym chciał...ma ktoś pomysł jak to dobrze zaimplementować do kodu? Z góry dzięki za pomoc. Pozdrawiam. Wesoły
 System operacyjny: windows_eight Przeglądarka: seamonkey
#2
RE: program w turbo pascal nie zapisuje zmienionej nazwy pliku
Kod PHP:
Program Data;

Uses sysutils;

Var 
nazwanazwa1 String;

Begin
  nazwa
:=(FormatDateTime('yyyy-mm-dd_hh;nn;ss',Now));
  
nazwa1:=nazwa '.txt';
  
writeln ('Masz teraz do dyspozycji zmienna "nazwa" o wartosci: 'nazwa1);
  
readln;
End
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: program w turbo pascal nie zapisuje zmienionej nazwy pliku
(10.06.2014, 19:26)broda99 napisał(a):
Kod PHP:
Program Data;


Uses sysutils;

Var 
nazwanazwa1 String;

Begin
  nazwa
:=(FormatDateTime('yyyy-mm-dd_hh;nn;ss',Now));
  
nazwa1:=nazwa '.txt';
  
writeln ('Masz teraz do dyspozycji zmienna "nazwa" o wartosci: 'nazwa1);
  
readln;
End
to skraca znacznie kod, ale gdy wstawiłem to do procedury, zapisdaty, to nei działa (Twój kod sam w sobie oddzielnie jak najbardziej); gdy próbuję zmienić nazwę najprościej posługując się twoim kodem, to nie działa...co robię źle?
Kod:
Program Data;

Uses sysutils;

Var teraz : TDateTime;
    nazwa : String;
    plik: text;


procedure new;
begin
assign (plik, 'D:\ako.txt');
rewrite(plik);
close(plik);
end;
procedure zapis;
begin
assign (plik, 'D:\ako.txt');
append(plik);
Begin
teraz:=Now;
nazwa:=(FormatDateTime('yyyy-mm-dd_hh;nn;ss',teraz));
writeln ('Zmienna "nazwa" przyjmuje taka wartosc: ', nazwa);
readln;
rename(plik, 'D:\' +nazwa+ '.txt' );
End;
end;

begin
new;
zapis;
end.
[/code]
 System operacyjny: windows_eight Przeglądarka: seamonkey
#4
RE: program w turbo pascal nie zapisuje zmienionej nazwy pliku
Komplikujesz sobie życie... Czemu nie nazwiesz pliku tak jak chcesz podczas jego tworzenia?

---

edit: Dorzuciłem jednakowoż opcję zmiany nazwy.

Kod:
Program Data;

Uses sysutils;

Var nazwa, nazwa1 : String;
    plik : File;

Begin
  nazwa:=(FormatDateTime('yyyy-mm-dd_hh;nn;ss',Now));
  nazwa1:=nazwa + '.txt';
  writeln;
  writeln ('Masz teraz do dyspozycji zmienna "nazwa1" o wartosci: ', nazwa1);
  readln;

  assign (plik, 'D:\' + nazwa1);
  rewrite(plik);
  close(plik);
  writeln ('Został otworzony plik D:\' + nazwa1);
  readln;

  assign (plik, 'D:\' + nazwa1);
  rename (plik, 'D:\Nowy_' + nazwa1);
  writeln ('Nazwa pliku zostala zmieniona');
  readln;
end.
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (program w turbo pascal nie zapisuje zmienionej nazwy pliku)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Baza danych - dzialania, Pascal Jamuna 2 9100 10.04.2021, 19:08
Ostatni post: softwareman
  SQL zapisanie w rekordzie nazwy zalogowanego użytkownika karlos1323 11 5204 30.12.2017, 11:08
Ostatni post: koneton
  dev pascal, problem z funkcją kwadratową Sentinel24 4 11606 21.10.2016, 11:20
Ostatni post: koneton

Skocz do: