Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 21 bis 40 von 47

Thema: Delphi - Fragen!

  1. #21
    enable oder enabled ... wie gesagt, auf den Sinn kommt es an. Nach 5 Jahren verschwimmen langsam die Erinnerungen, ob da nun ein d am ende stand oder nicht ...

    Und was Counter angeht:
    Zitat Zitat von Ineluki
    Zudem lege eine integer Variable namens Counter in deinem Form an.
    Dran denken, die muss in deinem Form definiert werden, und nicht innerhalb des Counter-Events, damit der Wert zwischen zwei Methodenaufrufen erhalten bleibt.

  2. #22
    Naja, das Problem habe ich ja schon gelöst.
    Ich würde lieber mal wissen, wie man auf 5er runden kann, also 32 = 35 oder 99 = 100.

  3. #23
    Zitat Zitat von PX Beitrag anzeigen
    Ich würde lieber mal wissen, wie man auf 5er runden kann, also 32 = 35 oder 99 = 100.
    Kenn mich zwar in Delphi nicht aus, das dürfte aber dennoch möglich sein:

    Wenn <zahl> Modulo 5 gleich 0 ist:
    Gib <zahl> zurück
    Ansonsten:
    Gib <zahl> + (<zahl> Modulo 5) zurück

  4. #24
    Zitat Zitat von Brainstar Beitrag anzeigen
    Wenn <zahl> Modulo 5 gleich 0 ist:
    Gib <zahl> zurück
    Ansonsten:
    Gib <zahl> + (<zahl> Modulo 5) zurück
    Oder gleich
    Zahl = Zahl + (Zahl modulo 5)
    Zumindest falls du wirklich immer aufrunden willst, PX.

  5. #25
    modulo gibt es doch gar nicht. Ihr meint wohl mod oder so etwas in der Art...

  6. #26
    mod ist die Kurzform für modulo

  7. #27

    (Delphi-)Frage

    Wie kann man ein Wort in seine Buchstaben zerlegen lassen / bzw. ist das überhaupt möglich?

  8. #28
    Nun, du kannst auf die Einzelnen Buchstaben zugreifen, wie du auf ein Array zugreifst:

    Code:
    var
      S: String;
    begin
      S := 'Hallo';
      if S[1] = 'H' then
      [...]
    end;
    Beachten solltest du die Länge des Strings (Length(S)), da es sonst Zugriffsverletzungen gibt. Außerdem fängt dieses String-Array bei 1 und nicht bei 0 an, was historische Gründe hat (in Turbo Pascal war das erste Byte die Länge des Strings, somit wahren Strings in TP maximal 255 Char lang, in Delphi ist es nur aus Kompatibilität noch so, Strings können beliebig lang sein).

  9. #29
    Danke.
    Meine neue Frage:
    Wie kann ich von einem Editfeld die maximale Anzahl an eingebbaren Zeichen definieren und wie kann ich nur Zahlen / bzw. nur Buchstaben erlauben lassen?

  10. #30
    Zitat Zitat von PX Beitrag anzeigen
    Danke.
    Meine neue Frage:
    Wie kann ich von einem Editfeld die maximale Anzahl an eingebbaren Zeichen definieren und wie kann ich nur Zahlen / bzw. nur Buchstaben erlauben lassen?
    Im OnKeyPress kannst du einfach das hier machen:
    Code:
    if not ((Key in ['a'..'z']) OR (Key in ['A'..'Z'])) then
      Key := #0;
    bzw.
    Code:
    if not (Key in ['0'..'9']) then
      Key := #0;
    Für Zahlen bieten sich aber auch SpinEdits (Registerkarte: Examples/Beispiele) an. Da kannst du dir mal Min und Max anschauen. Ansonsten ist die maximale Stringlänge bei Edits in MaxLength gespeichert, wer hätte es gedacht

  11. #31
    Passend dazu bräuchte ich jetzt aber noch einen Code/Befehl für Backspace, da es für den Nutzer sonst problematisch wird, wieder etwas aus dem Feld zu löschen; also Backspace und andere wichtige Tasten wie Space sollten irgendwie funktionieren.

  12. #32
    Schau mal hier: http://dsdt.info/grundlagen/codes/vks.php

    VK_BACK oder auch $08. VK_Back wird aber nur für KeyUP/KeyDown gehen.

  13. #33
    Wie baue ich Objektunabhängige Prozeduren richtig ein?
    Beispiel: Beim Klick auf Button X öffnet sich eine Nachricht, dann wird mehrmals hintereinander diese unabhängige Prozedur ausgeführt. Habe mich bereits auf anderen Seiten erkundigt, angeblich soll man die Prozedur über eine Variable einbauen, das ergab mir aber Fehler.

  14. #34
    Zitat Zitat von PX Beitrag anzeigen
    Wie baue ich Objektunabhängige Prozeduren richtig ein?
    Beispiel: Beim Klick auf Button X öffnet sich eine Nachricht, dann wird mehrmals hintereinander diese unabhängige Prozedur ausgeführt. Habe mich bereits auf anderen Seiten erkundigt, angeblich soll man die Prozedur über eine Variable einbauen, das ergab mir aber Fehler.
    Könntest du das näher erläutern? Was meinst du mit Objektunabhängig? Meinst du eine Procedure, die nicht zu einer Klasse gehört?

  15. #35
    Ich meine eine Prozedur, die keinen (Sender: TObject) braucht, sondern dessen Befehle ausgeführt werden, wenn man den Namen der Prozedur innerhalb einer anderen Prozedur aufruft:

    Procedure ABC;
    begin
    ...
    ...
    ...
    end;

    Prozedure XYZ(Sender: TObject);
    begin
    ...
    ABC;
    ...
    end;

  16. #36
    Zitat Zitat von PX Beitrag anzeigen
    Ich meine eine Prozedur, die keinen (Sender: TObject) braucht, sondern dessen Befehle ausgeführt werden, wenn man den Namen der Prozedur innerhalb einer anderen Prozedur aufruft:

    Procedure ABC;
    begin
    ...
    ...
    ...
    end;

    Prozedure XYZ(Sender: TObject);
    begin
    ...
    ABC;
    ...
    end;
    Genauso geht's doch auch. Einfach vor die Procedure in der es aufgerufen wird einfügen. Oder aber es im private/public Bereich der Klasse deklamieren und dann TXYZ. Procedere als Name nutzen, dann wäre die Reihenfolge wieder egal. Auch eine extra Unit dafür anlegen ist möglich. Im Grunde hab ich nur grad keine Ahnung was dein Problem dabei ist.

  17. #37
    Zitat Zitat von Crash-Override Beitrag anzeigen
    Im Grunde hab ich nur grad keine Ahnung was dein Problem dabei ist.
    Lol, das weiß ich auch nicht.
    Manchmal stelle ich mich schon ziemlich blöd an. Aber das Problem dabei war warscheinlich, dass ich mich nicht an die Reihenfolge gehalten habe.


    Neue Frage bezüglich Images:
    Wie kann ich auf einfache Weise das Picture eines Images ändern, also mit einem Befehl? [Image1.Picture......]

  18. #38
    Zitat Zitat von PX Beitrag anzeigen
    [Image1.Picture......]
    LoadFrom* [File|Steam]

  19. #39
    Zitat Zitat von Crash-Override Beitrag anzeigen
    Schau mal hier: http://dsdt.info/grundlagen/codes/vks.php

    VK_BACK oder auch $08. VK_Back wird aber nur für KeyUP/KeyDown gehen.
    Habe es noch nicht verstanden.
    Code:
    if not (Key in ['VK_BACK']) then
      Key := #0;
    So geht es nicht...

  20. #40
    Zitat Zitat von PX Beitrag anzeigen
    Habe es noch nicht verstanden.
    Code:
    if not (Key in ['VK_BACK']) then
      Key := #0;
    So geht es nicht...
    Klick mal mit gedrückter CTRL/STRG Taste auf VK_BACK und du wirst sehen es ist eine Vordefinierte const (VK_BACK = 8; in der Unit "Windows"). Aber Key ist wie du oben siehst ein Char (oder ein Byte im Grunde, da es ASCII Chars bis max. Nr. 255 sind. Also schreibst du entweder #8 (Das sagt Delphi du möchstest einen Char mit dem Wert 8) oder du wandelst deine Konstanze (im Grunde ja auch 8) in ein Char um. Dafür gibt es den Befehl Chr().

    Code:
    procedure TXYZ.OnKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = Chr(VK_Back) then
        // Whatever...
    end;
    OnKeyPress liefert eben nur Char-Werte. OnKeyUp/OnKeyDown liefern dir den Wert als "Word" (= 4Byte Integer also ein normales Integer in Delphi). Hier würde die Umwandlung ausbleiben. Der Unterschied ist die Auslösung der Ereignisse.

    OnKeyDown wird ausgelöst wenn der Nutzer die Taste runterdrückt.
    OnKeyUp wird ausgelöst wenn der Nutzer die Taste loslässt.
    OnKeyPress wird ausgelöst wenn der Nutzer die Taste runterdrückt und zusätzlich nach einiger Zeit wieder, ähnlich wie wenn man in einem Memo "A" gedrückt hält. Zuerst kommt ein "A", wie gewollt und nach einigen Millisekunden viele "A"s mehr und zwar diesmal recht schnell hintereinander, also mit weniger Abstand als das erste und das zweite.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •