Announcement

Collapse
No announcement yet.

Problem mit TIdIPAddrMon

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

  • Problem mit TIdIPAddrMon

    Hallo Leute,
    Mit der Indy-Komponente "TIdIPAddrMon" ermittle ich alle IPAdressen auf dem PC.
    Unter Delphi XE2 funktioniert das ohne Probleme. In der Entwicklungsumgebung von XE2 kann ich die Komponente auf Aktiv setzen ohne Fehlermeldung.
    Mache ich das programmgesteuert, funktioniert das auch problemlos und kann das Ergebnis weiter verarbeiten.

    Mach ich das gleiche unter XE6 Prof. dann erhalte ich eine Fehlermeldung "Argument ausserhalb des Bereichs".
    Den Quellcode meines Programms habe ich dann ohne Änderung auch mit XE6 compiliert und es funktioniert auch nicht mit der gleichen Fehlermeldung.
    Nach intensiver Suche habe ich nichts gefunden, warum sich die gleiche Komponente unter verschiedenen Delphi XE Versionen anders verhalten.

    Hat jemand vielleicht eine gute Idee ? Für eine Info wäre ich sehr dankbar.

    Grüsse Gerhard

  • #2
    Hallo Leute,
    möglicherweise habe ich den Fehler gefunden.
    Die Schleife zum ermitteln der Adapter ist falsch.

    ----------------------------------------------------------
    procedure TIdIPAddrMon.GetAdapterAddresses;
    var
    LAddresses: TIdStackLocalAddressList;
    I: Integer;
    begin
    {
    Doesn't keep a permanent history list like TIdIPWatch...
    but does track previous IP addresses to detect changes.
    }

    FPreviousIPAddresses.Assign(FIPAddresses);
    FIPAddresses.Clear;

    LAddresses := TIdStackLocalAddressList.Create;
    try
    GStack.GetLocalAddressList(LAddresses);

    // Hier müsste der Fehler sein...
    for I := 0 to LAddresses.Count do begin // müsste LAddresses.Count-1 sein"

    FIPAddresses.Add(LAddresses[I].IPAddress);
    end;
    finally
    LAddresses.Free;
    end;

    FAdapterCount := FIPAddresses.Count;
    end;
    ------------------------------------------------------------
    Insofern wäre es ein Fehler im Quelltext der Komponente selbst.
    Wenn das der Fall ist, wie kann ich den Fehler dann selbst reparieren?

    Gruss Gerhard

    Comment


    • #3
      Die Komponenten neu compilieren oder mit dem Quelltext eine eigene Funktionalität implementieren
      Christian

      Comment


      • #4
        Hallo Christian,
        diese Idee hatte ich natürlich auch schon, aber mit der Komponentenentwicklung habe ich noch nie was gemacht.
        daher muss ich damit mal rumexperimentieren.

        Gerhard

        Comment


        • #5
          Vielleicht hilft das (noch)

          http://www.marquardtnet.info/cecke/k...2/2_index.html
          Christian

          Comment


          • #6
            Hallo Christian,
            Danke für den Tip. Hat soweit auch geholfen, nur leider bricht die Compilierung mit der Fehlermeldung ab, das das Package nicht installiert werden kann, da bereits ein Package mit dem gleichen Namen geladen ist (IndyProtocols200.bpl).

            Comment


            • #7
              Bin da zu lange raus. Wer kann sich Delphi oder C++Builder noch leisten?
              Sollte doch möglich sein, das alte PAckage zu deinstallieren oder das unter einem neuen Namen zu machen
              Christian

              Comment


              • #8
                Werde ich am WE mal genauer untersuchen, wie man das alte Package weg bekommt.
                Schönes We und Danke für Deine Hilfe.

                Comment


                • #9
                  Danke gleichfalls
                  Christian

                  Comment

                  Working...
                  X