Strona 1 z 1

Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: sobota, 23 sierpnia 2008, 18:12
przez Krzysiu555
To mój pierwszy post na tym forum więc serdecznie wszystkich witam.

Cieszę się że to forum znów powstało i mam nadzieję że tym razem pobędzie trochę dłużej.

Mam taki problem:
Otóż w katalogu w którym mam swój program mam katalog /temp/ a w nim plik message.wav. Chciałbym żeby (np. po wciśnięciu jakiegoś przycisku) ten plik się skopiował do tego samego folderu tylko żeby jego nazwą była data i czas w formacie: dd/mm/yyyy - hh:mm:ss. W efekcie chce otrzymać /temp/message.wav i /temp/data - czas.wav

Napisałem już coś takiego:
Kod: Zaznacz cały
//przypisanie zmiennej data aktualnej daty
TDateTime today = TDateTime::CurrentDate();
String data = today.FormatString("dd/mm/yyyy");

//przypisanie zmiennej czas aktualnej godziny
TDateTime now = TDateTime::CurrentTime();
String czas = now.FormatString("hh:nn:ss");

//przypisanie zmiennej sciezka sciezki do docelowego pliku
String sciezka = "temp\\" + data + " - " + czas + ".wav";

//kopiowanie i zmiana nazwy jesli sie nie powiedzie wyswietlany komunikat "BLAD!!!"
if(CopyFile("temp\\message.wav", sciezka.c_str(), true) == false) {
ShowMessage("BLAD!!!");
}


Efekt jest taki że cały czas mam ten "BLAD!!!"

Gdy zmieniam nazwę kopiowanego pliku na cokolwiek innego to działa, natomiast na datę nie.

Proszę o pomoc.

Pozdrawiam,
Krzysiu555

Re: Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: sobota, 23 sierpnia 2008, 19:37
przez wargo
Sprawdź jaką wartość ma ścieżka do której chcesz skopiować (data), być może zawiera niedozwolone znaki.

Re: Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: sobota, 23 sierpnia 2008, 20:39
przez Krzysiu555
Męczyłem się nad tym dwa dni. Próbowałem to obejść na setki sposobów. A to okazało się takie proste! Kompletnie nie zauważyłem - przeszkadzały "/" w dacie.

WIELKIE DZIĘKI

Re: Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: niedziela, 24 sierpnia 2008, 08:33
przez Cyfrowy Baron
Nazwa pliku nie może zawierać niektórych znaków, a do takich znaków między innymi należą znaki: / \
Tak więc dla daty musisz użyć innego separatora, może: -
To nie wymysł BCB lecz ograniczenie systemowe, czyli Windows nie zezwoli na nazwę pliku. np: 24/08/2008 - 08:29:19.roz

Polecam coś takiego:

Kod: Zaznacz cały
TDateTime now = TDateTime::CurrentDataTime(); // data i czas o d razu
String czas = now.FormatString("dd-mm-rrrr - hh:nn:ss");

Re: Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: niedziela, 24 sierpnia 2008, 17:19
przez Krzysiu555
okazało się że jak w czasie użyję ":" to też nie działa - czyli ":" też chyba jest niedozwolone

ale dzięki

Re: Zmiana nazwy pliku na aktualną datę i czas

Nowy postNapisane: poniedziałek, 25 sierpnia 2008, 08:43
przez Cyfrowy Baron
Zgadza się, dwukropka też nie można używać w nazwie pliku.