No, non li crea automaticamente, se stiamo parlando del semplice DLL Wizard, che è ciò che si deve utilizzare.Originariamente inviato da colde
I CoClass non li ho inseriti io, erano già di default quando ho creato un nuovo progetto per DLL.
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.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.
E' necessario crearlo l'oggetto prima di poterlo utilizzare.
Quando hai un oggetto creato, allora sì che puoi impostarne le proprietà e farne uso.codice:AdpComPort := TAdoComPort.Create(nil);
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:
Ciao!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;![]()

Rispondi quotando