Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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>

Geschrieben

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>

Geschrieben

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 -->

Geschrieben

<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>

Geschrieben

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)

Geschrieben

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>

Geschrieben

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>

Geschrieben

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.

Geschrieben

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 ...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...