Announcement

Collapse
No announcement yet.

Mengen an Proceduren übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mengen an Proceduren übergeben

    Hallo,
    gibt es die Möglichkeit, eine Menge an eine Procedur oder an eine
    Funktion zu übergeben ?
    Das was ich mit der Menge machen will, ist immer gleich. Nur die Menge
    ändert sich.

  • #2
    Hallo Michael,

    was soll die Menge darstellen?

    Gruß Marti

    Comment


    • #3
      Ja, du musst aber vorher extra einen Typ definieren, etwa so:
      <pre class="sourcecode"><code>
      <b>type</b>
      TByteSet = <b>set</b> <b>of</b> Byte;
      <br>
      <b>procedure</b> Test(<b>const</b> ASet: TByteSet);
      <b>begin</b>
      <font color="#003399"><i>//...</i></font>
      <b>end</b>;
      </code></pre>
      Uli

      Comment


      • #4
        Das mit dem Extra-Typen fuer Parameter ist ein Problem der Typkompatibilitaet.<br>
        <pre>
        var
        A: ^Integer;
        B: ^Integer;
        </pre>
        A und B haben verschiedene inkompatible Typen. Ein Parameter dieser Art waere also immer inkompatibel mit den Variablen die man zu uebergeben versucht. Daher muss ein Typ deklariert werden

        Comment


        • #5
          als weitere Konzequenz: deklarierst du so einen Typ als Parameter so kann NUR noch dieser Typ übergeben werden. Um es genauer zu sagen: in Delphi kann man keine proceduren coden die untypisiert mit Sets arbeiten.<br>
          Man kann zu jedem Set-Typ eine überladene Procedure coden.<br>

          Vom Konzept her sollte es so sein das solche proceduren mit abstracten Typen=Klassen arbeiten, die wiederum über die Polymorphie die verschiedenen Typen implementieren.<br> Dies ist ein anderes, typsicheres, OOP Konzept.<br>

          Gruß Hage

          Comment


          • #6
            Hallo Martin,
            das Programm wird eingesetzt zur Endkontrolle an einer Montagelinie,
            dabei werden die Verschraubungszustände aus einer Oracle Datenbank
            ausgelesen. Es gibt 80 Spalten die jeweils einer Verschraubung entsprechen. Jede Variante hat ihre eigene Kombination von Verschraubungen, die relevant sind. Über die Menge wird nur, in die für diese Variante benutzten Spalten, geschaut und der jeweilige Zustand der Verschraubung witd angezeigt.
            In etwa so:

            For i := 1 to 80 do
            begin
            If i in Set_1 then
            begin
            // Auswerten und zur Anzeige bringen
            end;
            end;
            Ich möchte nicht diese (in Wirklichkeit etwas Umfangreichere Prozedur)
            nicht für 10 Varianten machen, da sich eigentlich immer nur die Menge(Variante) ändert.
            Gruß Michae

            Comment


            • #7
              Hallo Hagen,
              tut mir leid, aber Deine Erklärung sagt mir leider nix.

              Gruß
              Michae

              Comment


              • #8
                Hallo Michael,

                ich glaube 1. Du kommst fast nicht um deine For-schleife nicht rum, so wie ich das sehe (weil irgendwie muß Du ja die 80 Datenfelder ja ansprechen), sind denn in deinen 80 Verschraubungen (Aufbau des Inhaltes) erkennbar um welche Art von Verschraubung es sich handelt?
                -> Case-Anweisung, mit dem Muster der Verschraubung, oder der ID des Zählers aus deiner For-Schleife.
                <pre>
                For i := 1 to 80 do
                begin
                // Feststellung der Verschraubungsart
                case Verschraubung of
                Schraubenart_1 :begin
                end;
                ....
                Schraubenart_n :begin
                end;
                // Auswerten und zur Anzeige bringen
                end;
                end;
                </pre>

                vielleicht hilft Dir das Weiter.

                Ansonsten kannst Du dich ja mal per mail melden.

                Gruß Marti

                Comment


                • #9
                  Hallo Martin,
                  danke für Deine Antwort.
                  Ja klar komm ich um die For-Schleife micht herum, die muß
                  drin sein. Aber ich mache dieses ganze Zeug in 10 Proceduren,
                  nur immer mit einer anderen Menge. Wenn ich die Menge übergeben
                  kann ( ich hab inzwischen herausgefunden wie es geht !) brauche
                  ich nur eine Procedure.

                  Gruß Michae

                  Comment

                  Working...
                  X