Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi - Code Hilfe (https://www.delphipraxis.net/87293-delphi-code-hilfe.html)

ConTaCt 26. Feb 2007 15:45


Delphi - Code Hilfe
 
Liste der Anhänge anzeigen (Anzahl: 2)
So

da ich ja erst vor ein paar Tagen begonnen hab mit Delphi! kommt mir schon das erste Problem hier:

Die PDF Datei ist die Aufgaben Stellung!

Ich hab keine Ahnung welche Datei ich hochstellen muss damit ihr Programm + Code seht! also bitte sagen wenn es falsch ist!

Meine 2 Probleme!


1) Ich weiß nicht wie man das Schaltjahr ausgibt
es sollen ja 3 Zeilen sein und dabei soll in der 3ten ausgegeben werden, wenn man jetz in die TxtBox 2000 reinschreibt! das es ein schaltjahr ist! tut es aber nicht :( bitte um code-hilfe

2) Wenn ich 1988 eingebe ist kommt 4.April raus, wenn ich 1989 eingebe, dann kommt -4. April raus, oder umgekehrt!
Bitte mir dabei auch helfen! danke!!!

Die Muhkuh 26. Feb 2007 15:48

Re: Delphi - Code Hilfe
 
Forensuche benutzen, dass hatten wir erst. Danke.

ConTaCt 26. Feb 2007 16:28

Re: Delphi - Code Hilfe
 
hab ich schon gemacht!

habe auch da so einige beispiele gefunden! aber keines das mir weiterhilft^^

Alexander Roth 26. Feb 2007 16:38

Re: Delphi - Code Hilfe
 
Ich hatte keine Lust den PDF runterzuladen, denke aber das es um Ostern und Feiertage geht. So was habe ich acuh schon für die Schule gemacht und openscource ins Netz gestellt, (in Turbo Pascal).

Schau mal hier: http://alexander.freewebspace4all.de....htm#Feiertage

Schaltjahr ist dabei.

PS:@Muhkuh: Neues Avatar

Der_Unwissende 26. Feb 2007 16:45

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von ConTaCt
Die PDF Datei ist die Aufgaben Stellung!

Meine 2 Probleme!

1) Ich weiß nicht wie man das Schaltjahr ausgibt
es sollen ja 3 Zeilen sein und dabei soll in der 3ten ausgegeben werden, wenn man jetz in die TxtBox 2000 reinschreibt! das es ein schaltjahr ist! tut es aber nicht :( bitte um code-hilfe

2) Wenn ich 1988 eingebe ist kommt 4.April raus, wenn ich 1989 eingebe, dann kommt -4. April raus, oder umgekehrt!
Bitte mir dabei auch helfen! danke!!!

Hi,
da Du in der DP angemeldet bist, hast Du Dich ja mit den Forensregeln einverstanden erklärt und damit ist Dir sicherlich auch klar, dass Dir keiner Deine Aufgaben lösen wird. Was Du aber ohne Probleme sofort bekommst ist Hilfe, so dass Du Dein Problem einfach selbst lösen kannst.

Damit man Dir bestmöglich helfen kann ist es immer wichtig, dass Du gut und ausführlich erklärst, wo genau dein Problem liegt. Genau das gleiche wirst Du dann hoffentlich auch in den Antworten wieder finden. Wichtig ist nicht nur die Aufgabe zu kennen, wichtig ist auch, dass die Leute wissen wo Du gerade hängst. Deshalb die Frage: "Was genau klappt denn bei Dir nicht? Wie hast Du es im Moment versucht? Was davon kannst Du schon, wo fehlt Dir welches Wissen?"

Fangen wir mit 1) an. Weißt Du denn generell wie man raus bekommt wann ein Schaltjahr ist? Wenn nicht, wo hast Du schon danach gesucht? Solltest auf jeden Fall bei Google etwas zu dem Thema finden. Ohne jegliche Garantie, dass es stimmt würde ich sagen, dass die Regeln grob waren:
alle 4 Jahre ist ein Schaltjahr, alle 100 wieder nicht, alle 1000 aber schon.
Schlag lieber nach ob das Stimmt. Das wichtige ist jetzt, dass Du die Reihenfolge beachtest, 1000 ist durch 4 und durch 100 teilbar, 100 ist durch 4 teilbar, also musst Du schauen, dass die größte Zahl immer alle anderen dominiert. Wenn Du durch 1000 (ohne Rest) teilen kannst, brauchst Du nicht mehr schauen ob die Zahl auch durch 100 teilbar ist (ist immer der Fall!), der Jahr ist auf jeden Fall Schaltjahr. Ist ein Jahr nicht durch 1000 aber durch 100 teilbar, dann ist es definitiv kein Schaltjahr, auch wenn es (immer) durch 4 teilbar ist.
Denke das Prinzip sollte klar sein.

Was Du also machen musst ist schauen, ob einer dieser Fälle zu trifft. Ist dies der Fall, gilt das, was die entsprechende Regel besagt. Ist dies nicht der Fall, dann wird es auch kein Schaltjahr sein.

Was 2) angeht, so wäre es schön, wenn Du hier sagen könntest wie Du vorgehst. Es gibt ja auf dem Zettel etwas wie a, b, ..., e, M, N, wie berechnest Du diese? Das ganze kannst Du direkt in den Beitrag einfügen, dafür findest Du während Du schreibst einen Button, auf dem Delphi-Code steht. Drückst Du den, kannst Du Code posten, ein zweites Drücken (da ist dann ein * hinter) beendet den Bereich, in dem Du Code postest. So kannst Du leicht zeigen, wie Du die entsprechenden Werte berechnest.
Schreib aber bitte auch dazu, warum Du das jeweils so machst (Kommentare).

Gruß Der Unwissende

ConTaCt 26. Feb 2007 16:53

Re: Delphi - Code Hilfe
 
versteht das hier keiner?
Ich habe es selber gemacht und jetz hänge ich beim schaltjahr! wie man das ausrechnet bzw. schreibt ich programmiere mit delphi erst 2-3 tage und in keinem Turtoral steht irgendetwas und in der schule hat es mir keiner erklärt^^

Der_Unwissende 26. Feb 2007 17:04

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von ConTaCt
versteht das hier keiner?

Wenn es keiner Versteht, dann liegt das nur daran, dass Du es wohl nicht deutlich genug gesagt hast.
Wie man es ausrechnet kannst Du leicht bei Google finden Bei Google suchenSchaltjahr, erster Treffer wäre: Wiki-Schaltjahr. Warst Du soweit? Wenn ja, dann schreib es doch auf! Wenn nein, dann verstehst Du hoffentlich, dass das alle mal zumutbar wäre.

Weiter geht es mit dem Ausrechnen, da kannst Du doch (ohne eine Zeile Code) kurz sagen, wie man das machen soll:
Zitat:

Zitat von Wiki
  • Alle Jahre, welche durch 4 ohne Rest teilbar sind, sind Schaltjahre.
  • Alle Jahre, welche durch 100 ohne Rest teilbar sind, sind keine Schaltjahre.
  • Alle Jahre, welche durch 400 ohne Rest teilbar sind, sind wiederum Schaltjahre.

Soweit, so gut, jetzt hast Du Probleme das in Delphi umzusetzen, weil Du erst sei 2-3 Tagen programmierst, ok. Was genau fehlt Dir aber an Wissen? Weißt Du wie man eine Variable anlegt? Kennst Du den Typen Integer, kennst Du Cardinals, irgendwelche anderen Zahlendatentypen? Weißt Du nicht wie man den Rest beim Teile bekommt? Woran genau scheiterst Du? Das musst Du schon sagen, das mit dem Hellsehen klappt selten :wink:

fLaSh11 26. Feb 2007 17:11

Re: Delphi - Code Hilfe
 
Ich bin zwar kein Mod aber vllt könntest du dem Thread eine ausschlaggebendere Überschrift geben... :wink:

//Edit: Rechtschreibung ;)

shmia 26. Feb 2007 17:41

Re: Delphi - Code Hilfe
 
Die Schaltjahrermittlung ist in der VCL schon enthalten.
In der Unit SysUtils gibt es die Funktion IsLeapYear().
Hier der Sourcecode dazu:
Delphi-Quellcode:
function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
Bitte lies dir nochmals die 1. Anwort den Unwissenden durch!
Er hat lang und breit erklärt, wie du deine Fragen stellen sollst, aber mir scheint, das ist noch nicht ganz angekommen.

fkerber 26. Feb 2007 17:49

Re: Delphi - Code Hilfe
 
Hi!

Außerdem würde ich dich bitten, den Titel deines Beitrages noch anzupassen (möglich durch editieren des ersten Beitrags) - Hilfe brauchen hier schließlich viele ;)


Ciao, Frederic

fLaSh11 26. Feb 2007 19:09

Re: Delphi - Code Hilfe
 
...schau mal in meinen Beitrag :mrgreen:

Blackheart 26. Feb 2007 19:14

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von shmia
Die Schaltjahrermittlung ist in der VCL schon enthalten.
In der Unit SysUtils gibt es die Funktion IsLeapYear().
Hier der Sourcecode dazu:
Delphi-Quellcode:
function IsLeapYear(Year: Word): Boolean;
begin
  Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
Bitte lies dir nochmals die 1. Anwort den Unwissenden durch!
Er hat lang und breit erklärt, wie du deine Fragen stellen sollst, aber mir scheint, das ist noch nicht ganz angekommen.

Delphi-Quellcode:
if IsLeapYear(2007) then Caption:='Schaltjahr'
  else Caption:='Kein Schaltjahr';

ConTaCt 27. Feb 2007 08:28

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von Alexander Roth
Ich hatte keine Lust den PDF runterzuladen, denke aber das es um Ostern und Feiertage geht. So was habe ich acuh schon für die Schule gemacht und openscource ins Netz gestellt, (in Turbo Pascal).

Schau mal hier: http://alexander.freewebspace4all.de....htm#Feiertage

Schaltjahr ist dabei.

PS:@Muhkuh: Neues Avatar


hier funktioniert die Seite, aber keine Datei zum downloaden!^^

ConTaCt 27. Feb 2007 09:12

Re: Delphi - Code Hilfe
 
bräuchte noch eine letzte hilfe!
und zwar!

wenn ich das so schreibe hier!

function IsLeapYear(Year: Word): Boolean;
begin
Result := ((Year mod 19 = 0) or (Year mod 4 = 0) or (Year mod 7 = 0)) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;

kommt dieser Error:
expected END but received FUNCTION at line ...

kann mir einer erklären warum!?

hier finde ich nichts und google spuckt auch nichts aus!
bitte um schnelle hilfe!

xZise 27. Feb 2007 09:41

Re: Delphi - Code Hilfe
 
Du musst die Funktion nicht kopieren, sondern nur verstehen, was du anscheindend nicht tust!
Der Befehl "mod" heißt ausgeschrieben "Modulo" (Siehe Wikipedia).

Und zwar gibt dir Modulo den Rest von zwei Ganzzahlen an.

Das Jahr 2000 nehmen wir als Beispiel:
2000 mod 1000 => 0
Dann mit dem Jahr 2007:
2007 mod 1000 => 7

Und dass musst du nun mit allen Überprüfen.
Das macht man, wenn man ein Neuling ist mit If.
Delphi-Quellcode:
if <Bed> then
begin
  <Anw. 1>;
  <Anw. 2>;
  .
  .
  .
end;
Zu Deutsch:
Code:
Wenn Bedingung (<Bed>) erfüllt, dann
beginne
  Anweisung 1
  Anweisung 2
  .
  .
  .
ende
Zusätzlich kannst du auch mit "else" überprüfen, ob der Fall nicht zutrifft:
Delphi-Quellcode:
if <Bed> then
begin
  <Anw. 1>;
  <Anw. 2>;
  .
  .
  .
end else if <Andere Bed> then
begin
  <Anw. 3>;
  <Anw. 4>;
  .
  .
  .
end;
else
begin
  <Anw. 5>;
  <Anw. 6>;
  .
  .
  .
end;
Zu Deutsch:
Code:
Wenn Bedingung (<Bed>) erfüllt, dann
beginne
  Anweisung 1
  Anweisung 2
  .
  .
  .
ende ansonsten wenn andere Bedingung (<Andere Bed>) erfüllt, dann
beginne
  Anweisung 3
  Anweisung 4
  .
  .
  .
ende ansonsten
beginne
  Anweisung 5
  Anweisung 6
  .
  .
  .
ende
Also musst du zuerst überprüfen, ob der Rest (siehe Modulo) von 1000 gleich 0 ist. Wenn dem so ist, dann ist es ein Schaltjahr... Ansonsten musst du überprüfen ob der Rest von 100 nicht 0 ist, oder der Rest von 4 wieder null ist:
Delphi-Quellcode:
if (<Bed 1>) or (<Bed 2>) then
Logisches Oder
Delphi-Quellcode:
if (<Bed 1>) and (<Bed 2>) then
Logisches Und

Das dürfte erstmal reichen!

PS: Bist du dir sicher, dass du erst 2-3 Tage mit Delphi programmiert hast? Ich würde erstmal so die Grundtechniken lernen. Die DSDT sollte dir da helfen.

ConTaCt 27. Feb 2007 09:44

Re: Delphi - Code Hilfe
 
ja bin ich!

ich hab sonst nur 4 Jahre VB programmiert!^^

aber wenn ich das so programmiere in VB, dann funktioniert!^^

kein plan warum^^

außerdem, die Grundlagen haben wir nicht gemacht^^!
sondern nur was der unterschied zwischen VB und Delphi is

xZise 27. Feb 2007 11:53

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von ConTaCt
ich hab sonst nur 4 Jahre VB programmiert!^^

:oops: OOPs... Entschuldige, dass ich es ggf. ziemlich "Neuling"-artig geschrieben habe :drunken:

Aber ich hoffe, du hast den Zweck verstanden ;)

Du kannst ja zwei Funktionen deklarieren:
Delphi-Quellcode:
function IsLeapYear(AYear : Integer) : Boolean;
function EasterSunday(AYear : Integer) : Integer
In den beiden Funktionen machst du je eine Aufgabe ;) Ist dann ein bisschen getrennter, und kommt nicht durcheinander.

Nun zum "EasterSunnday": Diese Funktion gibt dir "d + e" wieder (da ist es egal, ob März oder April).
Dann kannst du in der "Berechnen"-Methode daraus errechnen, ob es April oder März ist.
Es ist der März, wenn der Rückgabewert + 22 nicht größer als 31 ist. Ansonsten ist es der April! Kleiner Tipp: Speichere den Rückgabewert in einer Variable.

Alexander Roth 27. Feb 2007 15:54

Re: Delphi - Code Hilfe
 
Zitat:

Zitat von ConTaCt
Zitat:

Zitat von Alexander Roth
Ich hatte keine Lust den PDF runterzuladen, denke aber das es um Ostern und Feiertage geht. So was habe ich acuh schon für die Schule gemacht und openscource ins Netz gestellt, (in Turbo Pascal).

Schau mal hier: http://alexander.freewebspace4all.de....htm#Feiertage

Schaltjahr ist dabei.

PS:@Muhkuh: Neues Avatar


hier funktioniert die Seite, aber keine Datei zum downloaden!^^

So ein Mist. Da war doch echt verdammt viele Defekte Links. Ist korrigiert.

Gruß Alexander

ConTaCt 27. Feb 2007 23:06

Re: Delphi - Code Hilfe
 
gg!;)

danke!

sollte ich das LipYear da nicht mit string definieren!??

sry, aber die links funktionieren noch immer nicht! :(

xZise 28. Feb 2007 07:45

Re: Delphi - Code Hilfe
 
Ne ;) Du musst ja nur wissen, ob es ein "LeapYear" ist ;)

Delphi-Quellcode:
if IsLeapYear(...) then
  lblLeapYear.Caption := 'Das Jahr ' + IntToStr(...) + ' ist ein Schaltjahr'
else
  lblLeapYear.Caption := 'Das Jahr ' + IntToStr(...) + ' ist kein Schaltjahr'
Es wäre auch so möglich:
Delphi-Quellcode:
var
  modifier : string;

if IsLeapYear(...) then
  modifier := 'ein'
else
  modifier := 'kein'

lblLeapYear.Caption := 'Das Jahr ' + IntToStr(...) + ' ist ' + modifier + ' Schaltjahr'


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz