Announcement

Collapse
No announcement yet.

Delphicode in C++Buildercode

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

  • Delphicode in C++Buildercode

    Hallo,
    ich möchte eine Delphimethode in C++ umschreiben. In der Methode heißt es z.B.:
    "if (Component is TControl) then..." oder "for j:=0 to (Component as TListView).Columns.Count-1 do...". Kann mir bitte jemand sagen, wie die Syntax von "is" und "as" im CBuilder ist? Vielen Dank, Stefan

  • #2
    Hallo,

    sollte mit dynamic_cast< TControl >(Component) bzw. dynamic_cast< TListView >(Component) funktionieren.

    Gruß Ud

    Comment


    • #3
      1:1 kannst du das nicht umsetzen, weil es eine reine Prüfung, die nicht gleichzeitig ein Cast ist (wie "is") nicht gibt. Und während "as" eine Exception wirft, wenn der Cast ungültig ist, liefert "dynamic_cast" 0 zurück.
      Ich würde eine Konstruktion wie in Posting #1 von <a href="/webx?13@@.ee6bba9/0">Jörg Primke "Bug im C++ Builder 4.0 ?" 22.12.1999 09:51</a> probieren.
      <br>Ciao, Uli

      Comment


      • #4
        Kann man das 'IS' nicht über die RTTI realisieren (TObject->ClassType)

        Comment


        • #5
          Hi,

          wenn ich mal den Meister zitieren darf: "
          <pre>
          dynamic_cast<T*>(p)
          </pre

          <I>Wenn p vom Typ T* oder einer Basisklasse von T ist, auf die zugegriffen werden kann, dann ist das Resultat genauso, als hätten wir einfach p an einen T* zugewiesen.
          </I>

          ... sonst liefert dynamic_cast NULL zurück

          Will heißen, das dynamic_cast ersetzt scheinbar das das Delphi-"is" und -"as" und das Code-Beispiel könnte man wie folgt übersetzen:
          <pre>
          TListView* pLV = dynamic_cast<TListView*>(Component)
          if (pLV != NULL)
          {
          for (int j = 0; j < pLV->Columns->Count-1;...
          }
          </pre>

          @Jochen: Ich habe mir nicht alles durchgelesen, aber dynamic_cast benutzt wohl tatsächlich RTTI.

          Gruß,
          Ja

          Comment

          Working...
          X