Avatar billede delphiuser Mester
17. oktober 2008 - 15:46 Der er 12 kommentarer og
1 løsning

termins dato

Hej eksperter jeg er igang med at lave et lille program som min kæreste skal kunne bruge til at kunne udregne sin termin sådan ca.

jeg ved hvordan man skal regne det ud. men kan bare ikke få det ind i delphi.

udregnings metoden:
sidste mens dag (28-09-2005)
der skal lægges 7 dage til sidste mens dag (05-10-2005)
så lægger vi yderligere 365 dage til (05-10-2006)
herfra skal der trækkes 3 mdr fra (05-07-2006)

kan nogen hjælpe med hvordan man kan lave dette regnestykke i delphi forholdsvis simpelt?
Avatar billede w13 Novice
17. oktober 2008 - 16:14 #1
Prøv f.eks. at se her, hvis du blot mangler funktioner til arbejde med datoer: http://www.howtodothings.com/computers/a1100-delphi-version-of-vb-dateadd.html
Avatar billede martinlind Nybegynder
17. oktober 2008 - 16:49 #2
VAR
  Dato : TDateTime;

begin
  Dato := EncodeDate(2005,9,28);
  Dato := IncDays(Dato,7);
  Dato := IncYear(Dato,1);
  Dato := IncMonths(Dato,-3);
  ShowMessage('Min kæreste har termin : '+DateToStr(Dato));
end;
Avatar billede martinlind Nybegynder
17. oktober 2008 - 16:51 #3
du kan også kigge på FormatDateTime() til udskrivningen
Avatar billede delphiuser Mester
17. oktober 2008 - 18:06 #4
Martinlind -> den linie du har skrevet hvor der står - dato := encodedate(2005,9,28)
kan den laves sådan at man kan vælge datoen fra en datetimepicker og derfra bruge de andre strenge som står skrevet?
Avatar billede hrc Mester
18. oktober 2008 - 10:17 #5
Dato := DateTimePicker1.Date
Avatar billede martinlind Nybegynder
18. oktober 2008 - 10:52 #6
:-)
19. oktober 2008 - 05:41 #7
Hvorfår lægger du ikke bare 280 dage til (9 måneder + 7 dage)?

Label1.Caption := DateToStr(StrToDate(Edit1.Text) + 280);
Avatar billede hrc Mester
20. oktober 2008 - 09:31 #8
TForm1 = class(TForm)
    ...
  public
    function GetTermin(const aYYYY, aMM, aDD: word): TDateTime; overload;
    function GetTermin(const aDate: TDateTime): TDateTime; overload;
  end;

implementation

uses
  DateUtils;

function TForm1.GetTermin(const aDate: TDateTime): TDateTime;
const
  DraegtighedsPeriode = 280; // ... flatterende konstantnavn, ikke?
begin
  result := IncDay(aDate,DraegtighedsPeriode);
end;

function TForm1.GetTermin(const aYYYY, aMM, aDD: word): TDateTime;
begin
  result := GetTermin(EncodeDate(aYYYY, aMM, aDD));
end;
Avatar billede martinlind Nybegynder
20. oktober 2008 - 16:20 #9
Duer ikke :-(

der er jo forskel på md længde, det er der IncMonth kommer ind i billedet :-)
20. oktober 2008 - 22:06 #10
Svangerskabs perioden er da lige lang uanset hvilke måneder vi har.
Avatar billede delphiuser Mester
24. oktober 2008 - 10:42 #11
jeg får følgende fejl meddelelser

[DCC Error] gravidopdater.pas(65): E2003 Undeclared identifier: 'IncDays'
[DCC Error] gravidopdater.pas(67): E2003 Undeclared identifier: 'IncMonths'
[DCC Error] gravidopdater.pas(89): E2362 Cannot access protected symbol TControl.Text
[DCC Fatal Error] gravidlogin.pas(31): F2063 Could not compile used unit 'gravidopdater.pas'

her kommer hele min fil...

unit gravidopdater;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, dateutils;

type
  TForm4 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    birth: TDateTimePicker;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    ComboBox1: TComboBox;
    Label4: TLabel;
    Edit2: TEdit;
    Label5: TLabel;
    Edit3: TEdit;
    Label6: TLabel;
    Edit4: TEdit;
    GroupBox3: TGroupBox;
    Label7: TLabel;
    lastmensa: TDateTimePicker;
    Label8: TLabel;
    ComboBox2: TComboBox;
    GroupBox4: TGroupBox;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Button1: TButton;
    Edit5: TEdit;
    Panel1: TPanel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure lastmensaExit(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
VAR
  Dato : TDateTime;

begin
  Dato := lastmensa.Date;
  Dato := IncDays(Dato,7);
  Dato := IncYear(Dato,1);
  Dato := IncMonths(Dato,-3);
  ShowMessage('Min kæreste har termin : '+DateToStr(Dato));

end;

procedure TForm4.Button3Click(Sender: TObject);
begin
edit2.Clear;
edit3.Clear;
edit4.Clear;
edit5.Clear;
combobox1.Text:='Vælg køn...';
combobox2.Text:='Dage imellem din mens...';
end;

procedure TForm4.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm4.lastmensaExit(Sender: TObject);
begin
label10.Caption:=lastmensa.text;
end;

end.

hvad er min fejl
Avatar billede martinlind Nybegynder
24. oktober 2008 - 10:49 #12
Sikkert bare fordi jeg ikke kan huske/stave du kan stille dig på DateUtils og trykke F1 så skulle du få hjælp til de dato rutiner der er ( så kan du finde IncDay(s) og de andre :-)
Avatar billede hrc Mester
24. oktober 2008 - 11:04 #13
Nu skal du til at skynde dig, for ellers er du blevet far inden programmet kører - og så får du ikke tid til at lege med det mere :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester