Originariamente inviato da colde
I CoClass non li ho inseriti io, erano già di default quando ho creato un nuovo progetto per DLL.
No, non li crea automaticamente, se stiamo parlando del semplice DLL Wizard, che è ciò che si deve utilizzare.

Originariamente inviato da colde
Sono daccordo sulle tue osservazioni e cercherò di migliorare anche nella comprensione del linguaggio ma tornando al mio problema, se includo AdPort nelle uses è vero che l'oggetto ApdComPort mi viene riconosciuto ma le proprietà no e non capisco il perchè dato che sono parte di quell'oggetto e senza di quelle non mi serve a nulla.
Nel tuo codice non viene mai creato un oggetto di tipo TAdpComPort, quindi non sarà mai possibile utilizzarlo (la variabile AdpComPort vale nil); qualsiasi tentativo di accedere alla proprietà o invocare metodi dell'oggetto (inesistente) referenziato dalla variabile che non è impostata (vale nil) provoca un Access Violation.

E' necessario crearlo l'oggetto prima di poterlo utilizzare.

codice:
AdpComPort := TAdoComPort.Create(nil);
Quando hai un oggetto creato, allora sì che puoi impostarne le proprietà e farne uso.

Al termine dell'uso, è sempre bene distruggerlo chiamando il metodo Free (che libera la memoria allocata), magari usando un costrutto try...finally per garantire che, qualunque cosa succeda, tale operazione venga eseguita.

Per fornire un esempio funzionante di codice in base a quello che hai proposto:
codice:
function Connect(): string;
var
  AdpComPort: TAdpComPort;
begin
  AdpComPort := TAdpComPort.Create(nil);
  try
    ApdComPort.ComNumber := 1;
    ApdComPort.Baud := 9600;
    ApdComPort.Parity := pNone;
    ApdComPort.DataBits := 8;
    ApdComPort.StopBits := 1;
    ApdComPort.BufferFull := 0;
    ApdComPort.BufferResume := 0;
    ApdComPort.DeviceLayer := dlWin32;
    ApdComPort.DTR := true;
    ApdComPort.AutoOpen := true;
    ApdComPort.Open := false;
    ApdComPort.InitPort;
    if ApdComPort.Open then
    begin
      ApdComPort.PutString('YO!!!');
      Result := 'SEI TROPPO FIGO!!';
    end
    else
      Result := 'VAI A GIOCARE A BOCCE!!';
  finally
    AdpComPort.Free;
  end;
end;
Ciao!