Я не вижу никаких проблем в вашем коде из указанных проблем. Но что может помочь вам узнать, что ваша анимация что-то делает, так это проверить два выхода angular-animation предоставляет вам: Start и Done ( AnimationEvents ). Вы получите событие, которое содержит информацию о ваших новых штатах. Если вы получите что-то, то вам, возможно, придется детально проверить анимацию или CSS.
animationDone(event) {
console.log(event)
}
animationStarted(event) {
console.log(event)
}
У меня нет Дельфи 2009 здесь, таким образом, я не могу проверить его. Но возможно необходимо попробовать:
s := PAnsiChar(AnsiString(Application.ExeName));
Как gabr уже указал, это не очень хорошая практика, и Вы будете только использовать ее, если Вы будете на 100% уверены. Строка только содержит символы, которые имеют прямое отображение на диапазон ANSI.
Вот почему необходимо получить предупреждение, потому что Вы преобразовываете Unicode в ANSI.
Gamecat явные работы преобразования. Я объясняю проблему более подробно ниже так, чтобы, возможно, кто-то мог указать на лучшее решение.
я использую следующую функцию для получения даты компиляции приложения:
function LinkerTimeStamp(const FileName: string): TDateTime;
var
LI: TLoadedImage;
begin
{$IFDEF UNICODE}
Win32Check(MapAndLoad(PAnsiChar(AnsiString(FileName)), nil, @LI, False, True));
{$ELSE}
Win32Check(MapAndLoad(PChar(FileName), nil, @LI, False, True));
{$ENDIF}
Result := LI.FileHeader.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta;
UnMapAndLoad(@LI);
end;
MapAndLoad требует PAnsiChar для Параметра ImageName, таким образом, я должен преобразовать строку unicode. Действительно ли там кто-либо другой альтернативен для явного преобразования в AnsiString сначала?
У меня была та же самая проблема. PAnsiChar
только точки к первому символу. Я записал следующую функцию для обработки старой функциональности.
// This function converts a string to a PAnsiChar
// If the output is not the same, an exception is raised
// Author: nogabel@hotmail.com
function StringToPAnsiChar(stringVar : string) : PAnsiChar;
Var
AnsString : AnsiString;
InternalError : Boolean;
begin
InternalError := false;
Result := '';
try
if stringVar <> '' Then
begin
AnsString := AnsiString(StringVar);
Result := PAnsiChar(PAnsiString(AnsString));
end;
Except
InternalError := true;
end;
if InternalError or (String(Result) <> stringVar) then
begin
Raise Exception.Create('Conversion from string to PAnsiChar failed!');
end;
end;
Я думаю, что Вы немного не в себе. Каждая функция Win32 API имеет аналог Unicode, если она ожидает строку. Попробуйте MapAndLoadW вместо MapAndLoad ...
Вместо использования типа String
используйте RawByteString
:
s: RawByteString;
s := LoadSomeRegularString(usually a string type);
PAnsiChar(s) <<< all fine.