InputBox

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

InputBox

Beitrag von florian03634 »

Hallo Leute
ich hätte da mal ne frage und zwar ich habe eine InputBox wo ich ein datum eingebe und mir dann wenn ich auf ok klicke ausgerechnet wird wie alt man ist, macht man dies nicht und gibt irgend etwas anderes ein kommt eine fehlermeldung, soweit sogut.
diese fehlermeldung kommt aber auch wenn ich auf abbrechen klicke, aber dies soll nicht passieren.
wenn ich auf abbrechen klicke soll nichts passieren.

ich hoffe ihr könnt mir helfen.
hier ein auszug aus meinem quelltext

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  input: string;
  MyDateTime: TDateTime;
  Ageindays: double;
begin
  Try
    input := InputBox('Geburtsdatum', 'Geben sie ihr Geburtsdatum ein!', 'Hier eingeben');
    MyDateTime :=  StrToDateTime (input);
    Ageindays := Date - MyDateTime;
    ShowMessage('Du bist heute '+FloatToStr(Ageindays) + 'Tag(e) alt.');
  except
    showmessage ('Fehler: Bitte nur ein korrektes Datum eingeben. (z.B. 26.08.2001)');
  end;
 
end;
 
procedure TForm1.Button1KeyPress(Sender: TObject; var Key: char);
begin
  if (Key in [#13]) then
  begin
    Beep; // Signalton ausgeben
    Key := #0; // Eingabe verwerfen
end;
 
end;
 
end.
Zuletzt geändert von Lori am Di 17. Jul 2012, 18:21, insgesamt 1-mal geändert.
Grund: Highlighter

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: InputBox

Beitrag von m.fuchs »

Die passenden Änderungen und ein paar Anmerkungen:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  (* Variablennamen nach CodingStyle formatiert *)
  Input: String;
  MyDateTime: TDateTime;
  (* Für AgeInDays ist eine Ganzzahl günstiger. *)
  AgeInDays: Integer;
begin
  try
    Input := InputBox('Geburtsdatum', 'Geben Sie ihr Geburtsdatum ein!', 'Hier eingeben');
    (* Wenn auf Abbrechen geklickt wird, gibt InputBox den Default-Wert zurück. *)
    if not(Input = 'Hier eingeben') then begin
      MyDateTime := StrToDateTime(Input);
      (* DaysBetween liefert dir die Anzahl der Tage zwischen zwei Daten.
         Dazu muss die Unit 'DateUtils' eingebunden werden. *)
      Ageindays := DaysBetween(MyDateTime, Now);
      ShowMessage('Du bist heute ' + IntToStr(AgeInDays) + ' Tag(e) alt.');
    end;
  except
    ShowMessage ('Fehler: Bitte nur ein korrektes Datum eingeben. (z.B. 26.08.2001)');
  end;
end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

danke für deine hilfe

jetzt bekomme ich diese meldung: frmmain.pas(121,31) Error: Identifier not found "DaysBetween"

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: InputBox

Beitrag von m.fuchs »

Dann lies bitte noch einmal aufmerksam die Kommentare die ich hinzugefügt habe. Da steckt noch ein Hinweis drin was du tun musst.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

könntest du mir da nochmal helfen bin ein kompletter lazarus anfänger :)

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: InputBox

Beitrag von MAC »

florian03634 hat geschrieben:könntest du mir da nochmal helfen bin ein kompletter lazarus anfänger :)
Wenn du mal folgendes googelst "Delphi Unit einbinden" findest du ein Eintrag unter Delphi-Treff.de, wie man Units einbinden. Das ist ziemlich einfach...

Code: Alles auswählen

Signatur := nil;

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

oki danke werd ich gleich morgen ausprobieren

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

hi leute ich habs hinbekommen das wenn man auf abbrechen geht nix passiert ich danke euch
jetzt passiert aber auch nix wenn ich irgendwelchen quatsch eingebe(text) und auf ok klicke aber wenn ich dies tue soll ja ne fehlermeldung kommen

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: InputBox

Beitrag von m.fuchs »

florian03634 hat geschrieben:hi leute ich habs hinbekommen das wenn man auf abbrechen geht nix passiert ich danke euch
jetzt passiert aber auch nix wenn ich irgendwelchen quatsch eingebe(text) und auf ok klicke aber wenn ich dies tue soll ja ne fehlermeldung kommen
Hm, bei dem von mir oben veröffentlichten Quellcode funktioniert auch die Fehlermeldung. Es sei denn der eingegeben Text lautet "Hier eingeben".
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

so leute rätsel gelöst war meine schuld es kommt nur keine meldung wenn des was am anfang drinne steht halt drinne steht un man auf ok klickt sry
trotzdem danke für eure hilfe

Flo

florian03634
Beiträge: 7
Registriert: Di 17. Jul 2012, 12:34
OS, Lazarus, FPC: Windows 7 Home Premium
CPU-Target: 64Bit

Re: InputBox

Beitrag von florian03634 »

m.fuchs genau das war mein fehler ich hab gedacht wo ich "hier eingeben" drinn stehen hatte das es bei text nicht geht

Antworten