Newsgroup: it.comp.lang.delphi
Titolo: .lnk

Ciao a tutti!!!
qualcuno sa dirmi come creare un file di collegamento (.lnk)?
Grazie ciao.

Grazie ciao.
seleziona il file -> tasto destro -> crea collegamento
oppure 
nuovo - > collegamento -> seleziona il path
--
Rhymes
--------------------------
rhy...@myself.com
http://www.foxhound-games.it
http://embyte.mascanc.net
--------------------------
Linux User #219707


SINTESI S.r.l. - 
www.sintesi.com
ABLS Team - 
www.abls.it

 Grazie ciao.
Ciao, ti posto questa procedura che ho appena finito di convertire da un
esempio in C trovato in rete.
/////// *********************************************
Uses activex, shlobj;
CONST // prelevato da Ole2.pas
  {$EXTERNALSYM IID_IPersistFile}
  IID_IPersistFile: TGUID = (
D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
Function CreateShortcut (ShortcutFile, Link, Description : PCHAR) :
Boolean;
{ ShortcutFile : percorso completo dell'oggetto a cui bisogna puntare
  Link : percorso completo del file lnk da creare
  Description : descrizione del collegamento}
Var
  ppf : IPersistFile;
  psl : IShellLink;
  wsz : PWideChar;
label ErrorExit;
Begin
 result := false;
 if CoInitialize (nil) <> S_OK then exit;
 if CoCreateInstance
      ( CLSID_ShellLink,
        nil,
        CLSCTX_INPROC_SERVER,
        IShellLink,
        psl) < 0 then goto ErrorExit;
 if psl.QueryInterface (IID_IPersistFile, ppf) < 0 then goto ErrorExit;
 psl._AddRef;
 if psl.SetPath (ShortcutFile) < 0 then goto ErrorExit;
 if psl.SetDescription (Description) < 0 then goto ErrorExit;
 GetMem (wsz, sizeof (word)*(MAX_PATH+1));
 MultiByteToWideChar (CP_ACP, 0, Link, -1, wsz, MAX_PATH);
 if ppf.Save (wsz, true) < 0 then begin
   FreeMem (wsz, sizeof (word)*(MAX_PATH+1));
   goto ErrorExit;
 end;
 FreeMem (wsz, sizeof (word)*(MAX_PATH+1));
 ppf._Release; // di questo non sono sicuro :(
 psl._Release;
 result := true;
ErrorExit:
  CoUninitialize;
End;
/////// *********************************************
Nota: Se devi creare molti link, il CoInitialize e CoUninitialize in
testa e coda puoi metterli fuori dalla proc.
Domanda per tutti :  dopo molto tempo, ho riutilizzato le LABEL... a me
hanno fatto sempre un po' schifo, ma qui si prestava l'utilizzo.... voi
che ne pensate? Le usate (spesso) ?
Ciao!! Davide DG.
PS: Spero funzioni... da me va, ma è la prima volta che uso le
interfacce :)

> Domanda per tutti :  dopo molto tempo, ho riutilizzato le LABEL... a
me
hanno fatto sempre un po' schifo, ma qui si prestava l'utilizzo.... voi
che ne pensate? Le usate (spesso) ? <<
Nello specifico, mi pare si potesse tranquillamente usare un try ...
finally per liberare la risorsa, e un raise qualcosa o Abort per
arrivarci in caso d'errore.
Credo di non aver mai usato un goto in Pascal (non che sia per me
articolo di fede).
Saluti
Paolo Arosio


Saranno oltre dieci anni che non le uso in pascal, le avevo usato col TP3.01
(quando iniziavo ad imparare il pascal).
--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Per rispondere in privato rimuovere 1975 dall'indirizzo
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

io non le ho mai usate, nè label nè goto.


 wrote in message
9nn0fb$8d7uc$1...@ID-30644.news.dfncis.de...


 quelle volte è bene non farsi influenzare da dogmi.
Ho abbandonato l'assembler nel 1979,
il basic (basic quello coi numeri di linea!) poco dopo
da allora non ho più sentito il bisogno di goto e label - me ne ero proprio
dimenticato! :-))
Ciao.
--
Emilio Panozzo
mailto: 
emip...@tin.it

 direttamente fuori da un blocco di codice!
A prima vista, ma la semantica è del tutto differente.
-- 
Roberto Lupi

 A prima vista, ma la semantica č del tutto differente.
Certo.


 ci avevo provato col Delphi 3, (tanto per imparare) poi ho abbandonato...
Un'implementazione tramite puntatori a funzioni è certamente
possibile, ma - con gli strumenti attuali - più opportuno costruire
una classe Automa a Stati Finiti (FSA).
Non è detto, però, che sia più comoda.
La discriminante è la complessità dello stato interno del FSA e delle
sue regole di transizione.
Se l'algoritmo che implementa le regole di transizione è piuttosto
complesso e difficilmente suddivisibile in sotto-problemi, sarebbe un
errore disseminarlo in varie e distanti parti del codice, cosa che
avverrebbe con un'implementazione tabulare - di cui quella "a
puntatori a funzioni" è un caso particolare.
In questo caso è preferibile accentrare la logica di transizione in un
solo punto, demandando ad altre funzioni o metodi l'implementazione
delle azioni da compiere in risposta ad una data transizione.
Nell'implementazione di logiche di transizione complesse, ho spesso
riscontrato una dissonanza rispetto alle strutture classiche di
controllo - in tali casi, usare labels per "implementare" nuovi
strumenti di controllo, può portare a scrivere codice più leggibile
che non tentare di piegare all'uopo le strutture classiche.
-- 
Roberto Lupi

 che non tentare di piegare all'uopo le strutture classiche.
Mai provato, nemmeno a pensarci...
ma ti credo!
