drob Geschrieben 7. Oktober 2001 Geschrieben 7. Oktober 2001 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> Zitieren
doublezero Geschrieben 8. Oktober 2001 Geschrieben 8. Oktober 2001 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> Zitieren
drob Geschrieben 12. Oktober 2001 Autor Geschrieben 12. Oktober 2001 und weisst du auch wie es mit diem 29.02.00/Schaltjahr ausschaut ??? Zitieren
doublezero Geschrieben 13. Oktober 2001 Geschrieben 13. Oktober 2001 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 Zitieren
drob Geschrieben 13. Oktober 2001 Autor Geschrieben 13. Oktober 2001 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 --> Zitieren
Wolle Geschrieben 13. Oktober 2001 Geschrieben 13. Oktober 2001 <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> Zitieren
drob Geschrieben 13. Oktober 2001 Autor Geschrieben 13. Oktober 2001 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) Zitieren
doublezero Geschrieben 14. Oktober 2001 Geschrieben 14. Oktober 2001 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> Zitieren
drob Geschrieben 14. Oktober 2001 Autor Geschrieben 14. Oktober 2001 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> Zitieren
doublezero Geschrieben 14. Oktober 2001 Geschrieben 14. Oktober 2001 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. Zitieren
BenBE Geschrieben 20. Oktober 2001 Geschrieben 20. Oktober 2001 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 ... Zitieren
Empfohlene Beiträge
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.