Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi Date ermitteln von ...

Empfohlene Antworten

Veröffentlicht

ich möchte gerne aus einer datum

z.b. 05/01/1998, 5 januar

den Tag das jahres ermitteln

in diesem fall der 5. Tag das jahres X.

gibt es dafür eine einfache funktion?

wenn ja habt ihr damit schon irgendwelche

Erfahrungen?

danke erstmal!

bis -->

<FONT COLOR="#a62a2a" SIZE="1">[ 07. Oktober 2001 22:39: Beitrag 1 mal editiert, zuletzt von drob ]</font>

Rechne doch einfach:

X:= EncodeDate(1998, 1, 5) - EncodeDate(1998, 1, 1);

dann hast du das Ergebnis der Tagesdifferenz in X ...

greetings,

DZ

<FONT COLOR="#a62a2a" SIZE="1">[ 08. Oktober 2001 04:45: Beitrag 1 mal editiert, zuletzt von doublezero ]</font>

und weisst du auch wie es mit diem 29.02.00/Schaltjahr ausschaut ???

Durch die "Verschlüsselung" als TDate rechnet er korrekt mit den gültigen Daten (wechselnde Monatslänge, Schaltjahre, etc.)

it seems to be no problem ... :)

wmg,

DZ

danke ... auch wenn ich schon eine andere lösung gefunden habe ... ( Is leapyear(); )

aber naja irgendwie kann man hier ( bzw ich weiss nicht wie) ja nicht solche beiträge ( ich meine meinen beitrag) wieder löschen ...

danke

und bis -->

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von drob:

<STRONG>aber naja irgendwie kann man hier ( bzw ich weiss nicht wie) ja nicht solche beiträge ( ich meine meinen beitrag) wieder löschen ...

</STRONG>

nagut .. ein gleines anders prob ....

ich kenne es noch von TP das mann mit z.b.

var x :String ;

write(x:8);

die zeichenlänge festlegen kann.

kann mir jemand befehle nennen

mit denen ich die

zeichenlänge herausbekomme

zeichen abschneiden kann

...

danke malwieder im voraus

(beim durchstöbern des forums habe ich ncihts derartiges gefunden)

Mit "var S: String;" wird S als WideString bzw. ANSIString definiert.

Er hat somit keine bezeichnete Länge.

Um die Länge der Zeichenkette in S herauszulesen, kann man die Funktion "length" verwenden:

X:= Length(S);

gibt demnach in X die Länge der Zeichenkette in S zurück ...

Um einzelne Zeichen abzuschneiden gibt es m.W. keine eindeutige Funktion. Hier hilft "Copy" aber schon ganz gut:

S:= Copy(S, 1, Length(S) -1);

schneidet also ein Zeichen von S ab und gibt das Ergebnis in S zurück.

Aber auch "StringReplace" ist nicht zu verachten:

S:= StringReplace(S, 'x', '', [rfReplaceAll, rfIgnoreCase]);

ersetzt einfach alle "x" und "X" in S durch leere Zeichen und löscht sie damit. Das Ergebnis wird dann in S zurückgegeben.

Dann wäre da noch "Delete" welches Zeichen oder Zeichenketten löscht:

Delete(S, 3, 5);

löscht demzufolge also 5 Zeichen beginnend ab dem 3. und gibt das Ergebnis nach S zurück.

Schließlich wären da wohl noch die Funktionen "TrimLeft", "TrimRight" und "Trim"; welche führende, nachlaufende sowie führende und nachlaufende Leerzeichen entfernt:

S:= Trim(S);

entfernt also führende und nachlaufende Leerzeichen, nicht aber Zeichen "in der Mitte".

... oha, ein paar sind's wohl doch :)

wmg,

dz

<FONT COLOR="#a62a2a" SIZE="1">[ 14. Oktober 2001 04:56: Beitrag 2 mal editiert, zuletzt von doublezero ]</font>

danke erstmal ... du scheinst ja mir delphi verheiratet zu sein ,-)

ich schiebe (unwissenheit) die bei mir immer auf die englische hilfe ... die mir zu schafen macht ...

bis -->

ps.: ( du spezialist)

wieso funktioniert das nicht:

1) If LIB_Ereignis.Items.capacity = 0 Then

close;

obwohl er

If LIB_Ereignis.Items.capacity = 0 Then

B_OK.caption:='x'}

macht ( zum test ob die bedingung erfüllt wurde)

ich will ein prog automatisch beenden wenn eine bedingung erfüllt ist ...

wo ist der fehler :-)

achja ..

ich möchte eine *.exe aus einem quellcode heraus starten ...

wenn du mir auf die spürünge helfen kannst ...

:-)

bis -->

<FONT COLOR="#a62a2a" SIZE="1">[ 14. Oktober 2001 21:26: Beitrag 2 mal editiert, zuletzt von drob ]</font>

Ratespiele ?! ;)

Was bitte ist denn "Lib_Ereignis" ?!

Kannst du nicht besser sagen, was die Bedingung sein soll, die zur Terminierung des Programmes führen soll, und wir schauen dann gemeinsam, wie wir das hinbekommen ?!

Abgesehen davon: Ein Programm wird unter Delphi nur dann korrekt beendet (inclusive der Speicherfreigaben, etc.) wenn du die Funktion

Application.Terminate;

aufrufst. Diese BASIC-(Un)Sitte einfach das Hauptfenster zu schließen führt hier wie dort nur zu mehr oder weniger großen Speicherlecks ...

Um ein .exe-file auszuführen gibt es den Weg über die API-Funktion "shellExecute". Sie ist folgendermaßen deklariert:

ShellExecuteA (führt Anwendung aus)

hWnd: HWND

Operation,

Filename,

Parameters,

Directory: PChar,

ShowCmd: Integer

oder

ShellExecuteW (druckt die angegebene Datei)

hWnd: HWND

Operation,

Filename,

Parameters,

Directory: PChar,

ShowCmd: Integer

Für Operation setzt du wahlweise "open", "print" oder "explore" ein. ShowCmd setzt du auf 5(normal), 3 (maximiert) oder 2 (minimiert).

Wahlweise kannst du aber auch die einfachere Funktion

ShellExecuteExA (ausführen) oder ShellExecuteExW (drucken) verwenden:

Dazu deklarierst du zunächst ein TSHELLEXECUTEINFO,

dann setzt du es auf einen definierten Wert:

FillChar(^TSHELLEXECUTEINFO, Sizeof(^TSHELLEXECUTEINFO), 0),

setzt cbSize:= SizeOf(^TSHELLEXECUTEINFO); lpFile:= 'dein .exe-file' und nShow:= (wie bei ShowCmd)

ShellExecuteEx(^TSHELLEXECUTEINFO); ... sollte es dann bringen :)

Dazu brauchst du die "shell32.dll" und ein bisschen Fingerspitzengefühl. ;)

Einfacher geht es natürlich, wenn du dir eine Komponente besorgst, die diese ganzen API-Aufrufe für dich erledigt, und der du nur die .exe-Datei übergibst.

wmg,

dz

-----------------

Programmieren ist wie Romane schreiben: Erst denkt man sich ein paar Typen aus, und dann muss man zusehen, wie man mit ihnen klarkommt.

Ich führ 'ne EXE immer mit WinExec(command:String; Show:Integer) aus und außerdem ist diese BASIC-Unsitte nicht unbedingt Speicherfressend. Guck mal in die Implementation von TForm.Close (oder TCustomForm.Close).

Wenn ich mich Richtig entsinne dürfte da eine Bedingung folgender Art zu finden sein:

If Self = Application.Mainform Then

Application.FRunning := false;

wobei Application.FRunning auch von Application.Terminate auf diesen Wert gesetzt wird und der Procedure Application.Run als Abbruchbedingung in der Message-Verarbeitungsschleife dient...

Hab ich jetzt genug Verwirrung geschaffen ... Wenn ja, schaut einfach mal die Unit Forms.pas an. Da gibst noch mehr solche schönen Sachen, die die Progger nicht immer glauben wollen ...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.