Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem beim Verknüpfung erstellen (https://www.delphipraxis.net/128459-problem-beim-verknuepfung-erstellen.html)

Sir K 30. Jan 2009 09:05


Problem beim Verknüpfung erstellen
 
Hallo Leute!
ich benutze die untere function von Delphi-Treff.de um eine Verknüpfung anzulegen...
Delphi-Quellcode:
function CreateLink(const AFilename, ALNKFilename, ADescription: string) : Boolean;
var
  psl : IShellLink;
  ppf : IPersistFile;
  wsz : PWideChar;
begin
  result:=false;
  if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil,
  CLSCTX_inPROC_SERVER, IID_IShellLinkA, psl)) then
  begin
    psl.SetPath(PChar(AFilename));
    psl.SetDescription(PChar(ADescription));
    psl.SetWorkingDirectory(PChar(ExtractFilePath(AFilename)) ;);
    if SUCCEEDED(psl.QueryInterface(IPersistFile, ppf)) then
    begin
      GetMem(wsz, MAX_PATH*2);
      try
        MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH);
        ppf.Save(wsz, true);
        result:=true;
      finally
        FreeMem(wsz, MAX_PATH*2);
      end;
    end;
  end;
end;
Nur hab ich jetzt das Problem dass ich in einer Zeile beim compilieren die Meldung erhalte "Inkompatible Datentypen 'Char' und 'AnsiChar'". Kann mir einer sagen obs dafür ne funktion wie z.b IntToStr() oder StrToDate... usw gibt?
Delphi-Quellcode:
MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH);
Gruß
Sir K

nahpets 30. Jan 2009 10:00

Re: Problem beim Verknüpfung erstellen
 
Hallo,
Deine Funktion läßt sich mit meinem Delphi 7 problemlos kompilieren, deshalb muss ich mal die :glaskugel: befragen:
Probiere es bitte mal mit
Delphi-Quellcode:
MultiByteToWideChar(CP_ACP, 0, PAnsiChar(ALNKFilename), -1, wsz, MAX_PATH);

Klaus01 30. Jan 2009 10:08

Re: Problem beim Verknüpfung erstellen
 
.. mal eine kleine Frage am Rande,

Ist die Konvertierung von MultiByte(Ansi?) nach WideChar durch MultiByteToWideChar
überhaupt noch notwendig?

Zitat:

Zitat von DelphiHilfe
The MultiByteToWideChar function maps a character string to a wide-character (Unicode) string. The character string mapped by this function is not necessarily from a multibyte character set.

Bei Delphi2009 ist doch ein String schon ein UniCode String.
Grüße
Klaus

Sir K 30. Jan 2009 10:43

Re: Problem beim Verknüpfung erstellen
 
Zitat:

Zitat von nahpets
Hallo,
Deine Funktion läßt sich mit meinem Delphi 7 problemlos kompilieren, deshalb muss ich mal die :glaskugel: befragen:
Probiere es bitte mal mit
Delphi-Quellcode:
MultiByteToWideChar(CP_ACP, 0, PAnsiChar(ALNKFilename), -1, wsz, MAX_PATH);

Also habs jetzt selber mal untder Delphi7 ausprobiert und du hast recht da funktionierts einwandfrei, nur unterm RAD Studio 2009 bleibt die fehlermeldung... hab dann mal im 2009er das PChar() durch PAnsiChar() ersetzt. Dann wirds zwar compiliert aber der link wird nicht mehr erstellt.

Gruß
Sir K

Klaus01 30. Jan 2009 10:46

Re: Problem beim Verknüpfung erstellen
 
.. und wie schaut es so aus?

Delphi-Quellcode:
 begin
      //GetMem(wsz, MAX_PATH*2);
      try
        //MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH);
        ppf.Save(ALNKFileName, true);
        result:=true;
      finally
        //FreeMem(wsz, MAX_PATH*2);
      end;
    end;
Grüße
Klaus

nahpets 30. Jan 2009 10:46

Re: Problem beim Verknüpfung erstellen
 
Hallo,

dann befolge bitte mal den Rat von Klaus und lass die Zeile
Delphi-Quellcode:
MultiByteToWideChar(CP_ACP, 0, PAnsiChar(ALNKFilename), -1, wsz, MAX_PATH);
weg. Nach Aussage von Klaus ist dies für Deine Delphiversion nicht mehr erforderlich.

Sir K 30. Jan 2009 10:50

Re: Problem beim Verknüpfung erstellen
 
...dann gibts die meldung ink. datent. String und PWideChar ind der Zeile
Delphi-Quellcode:
ppf.Save(ALNKFileName, true)

nahpets 30. Jan 2009 10:53

Re: Problem beim Verknüpfung erstellen
 
Hallo,
Zitat:

Zitat von Sir K
...dann gibts die meldung ink. datent. String und PWideChar ind der Zeile
Delphi-Quellcode:
ppf.Save(ALNKFileName, true)

dann mal mit
Delphi-Quellcode:
ppf.Save(PWideChar(ALNKFileName), true)
versuchen.

DeddyH 30. Jan 2009 10:54

Re: Problem beim Verknüpfung erstellen
 
Dann versuch es mal so:
Delphi-Quellcode:
    if SUCCEEDED(psl.QueryInterface(IPersistFile, ppf)) then
    begin
      {GetMem(wsz, MAX_PATH*2);
      try
        MultiByteToWideChar(CP_ACP, 0, PChar(ALNKFilename), -1, wsz, MAX_PATH);
        ppf.Save(wsz, true);
        result:=true;
      finally
        FreeMem(wsz, MAX_PATH*2);
      end;}
      ppf.Save(PWideChar(ALNKFilename), true);
      result:=true;
    end;
Edith sagt: zu langsam :?

Sir K 30. Jan 2009 10:59

Re: Problem beim Verknüpfung erstellen
 
Zitat:

Zitat von nahpets
Hallo,
Zitat:

Zitat von Sir K
...dann gibts die meldung ink. datent. String und PWideChar ind der Zeile
Delphi-Quellcode:
ppf.Save(ALNKFileName, true)

dann mal mit
Delphi-Quellcode:
ppf.Save(PWideChar(ALNKFileName), true)
versuchen.

jo damit klappts nur seltsamerweise steht in dem erzeugten link kein ziehl...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz