Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi|Работа с ярлыками.Типы данных. (http://forum.oszone.net/showthread.php?t=69953)

Crowner 17-08-2006 04:57 473242

Delphi|Работа с ярлыками.Типы данных.
 
Везде в инете один и тот-же пример работы с ярлыками.Поэтому я его сюда включать не буду.Но проблема собственно вот в чем.
Вот это работает:
Код:

FillChar(LinkInfo, SizeOf(LinkInfo), #0);
LinkInfo.FullPathAndNameOfLinkFile:='С:\Ярлык.lnk';
GetLinkInfo(@LinkInfo);
link:=LinkInfo.FullPathAndNameOfFileToExecute;

А вот это уже нет:
Код:

FillChar(LinkInfo, SizeOf(LinkInfo), #0);
perem:='С:\Ярлык.lnk';
LinkInfo.FullPathAndNameOfLinkFile:=perem;
GetLinkInfo(@LinkInfo);
link:=LinkInfo.FullPathAndNameOfFileToExecute;

[Error] Unit1.pas(329): Incompatible types: 'Array' and 'String'

Я для perem уже какие только типы ни пробовал.Подскажите пожалуйста !
Заранее благодарен !

ivank 17-08-2006 13:21 473458

Проблема в том, что у perem тип String, а LinkInfo.FullPathAndNameOfFileToExecute - array of char. Надо преобразовать одно в другое, например так:
Код:

procedure stringtoarray(ar:PChar; str:string; beg:integer; length:integer);
  var i:integer;
  begin
  inc(ar, beg-1);
  for i:=1 to length do
    begin
    ar^:=str[i];
    inc(ar);
    end;
  end;

Найдено в гугле по запросу Delphi+StringToArray. Наверняка есть стандартная функция, но мне лень с дельфи разбираться.

XCodeR 17-08-2006 13:39 473473

Crowner
ivank, как всегда прав...
а функция ткаого вида: var.c_str();
посомтри в хелпе по "объекту" String....

Crowner 19-08-2006 20:19 474530

Не получается преобразовать :(

ivank 19-08-2006 22:37 474580

Рискну предположить, что StringToArray(LinkInfo.FullPathAndNameOfLinkFile, perem, 1, length(perem)+1); вам поможет. Дельфей не имею, так что никак не проверить. Ещё можно попробовать LinkInfo.FullPathAndNameOfLinkFile := Addr(perem). Но вряд ли поможет. Не знаком я с дельфи :(

XCodeR
ivank не всегда прав, просто старается молчать, когда не знает что сказать по делу :) Кстати, c_str() в дельфях нет, её роль выполняет просто преобразование к PChar (через Addr). Это фишка builder'овских String (или AnsiString, или как их там), чтобы более удачно маскироваться под std::string.


Время: 14:31.

Время: 14:31.
© OSzone.net 2001-