Ich hab sowieso nen klein bisschen Mist gelabert.
Du übergibst keinen Pointer auf den Pointer, aber trotzdem...
Also:
Du schreibst:
SockAddrIn.sin_addr.S_addr := inet_addr(PChar(EditScanPorts));
Was passiert hier? EditScanPorts ist vom Typ TEdit und somit ein Zeiger auf die Adresse, an der das Objekt im Speicher steht. inet_addr kann damit natürlich nichts anfangen, es braucht die Adresse, an der der String mit der
IP-Adresse anfängt. Das wäre EditScanPorts.Text.
Verstanden?