Temat jest tymczasowy i do usunięcia po uzyskaniu odpowiedzi.
Dlatego na razie proszę o nie usuwanie postu
Bardzo proszę osoby mogące przetestować poniższy kod na systemie (jeśli na nim obecnie pracują z delphi) Windows 98 i Me.
Poniższy kod działa poprawnie w XP, ale w 9x i ME jest prawdopodobnie inny sposób pobierania daty (w XP 2005-03-20, a w 9x 05-03-20).
Dlatego zastosowałem rozpoznanie systemu. Jeśli Xp to standardowo oblicza ile dni mineło,a jeśli 9x lub ME to obcina 2 pierwsze znaki z przodu edita2.text, aby nie wyskoczył błąd.
Test odnosi się także do rozwiązania tego samego problemu:
http://4programmers.net/Forum/viewtopic.php?id=68425
Oto kod:
Na formę wstawcie:
label1, Edit2, Button1, LabelSystem
Pod przycisk wystarczy wrzucić kod z procedury TFormTest.Button1Click(Sender: TObject);
Do Edit2.Text wstawcie date: 2005-03-10
uses
DateUtils;
procedure TFormTest.Button1Click(Sender: TObject);
var
a : string;
Bylo, Jest: TDateTime;
System : TOsVersionInfo;
begin
// pobieranie systemu
System.dwOSVersionInfoSize := SizeOf(System);
GetVersionEx(System);
case System.dwPlatformId of
VER_PLATFORM_WIN32_WINDOWS: LabelSystem.Caption := 'W98';
VER_PLATFORM_WIN32_NT: LabelSystem.Caption := 'WXP';
end;
if LabelSystem.Caption = 'WXP' then
begin
Jest := Now;
Bylo := StrToDate(Edit2.Text);
Label1.Caption:= IntToStr(DaysBetween(Jest, Bylo))+' dni';
{Funkcja DaysBetween oblicza ile dni ninęło od Bylo do Jest}
end
else
if LabelSystem.Caption = 'W98' then
begin
a := Edit2.Text; //przypisanie tekstu edita do zmiennej
Delete(a,1,2); //kasowanie
Edit2.Text := a; //i przypisanie zmiennej do tekstu edita
Jest := Now;
Bylo := StrToDate(Edit2.Text);
Label1.Caption:= IntToStr(DaysBetween(Jest, Bylo))+' dni';
{Funkcja DaysBetween oblicza ile dni ninęło od Bylo do Jest}
end;
end;
OK. Jeśli uruchomicie u siebie powyższy przykład i nie wyskoczy wam komunikat w stylu: 2005-03-10 is not a valid date i będzie właściwie obliczona ilość dni dla
Label1.caption to jest OK. Jak są błędy to piszcie co.
Pobrana data dziś to 2005-03-20 a w Edit2.Text np: 2005-03-10 czyli wynik poninien być: 10 dni
Wystarczy mi informacja czy działa ten kod pod 98 lub Millenium