Вверх ↑
Этот топик читают: Гость
Ответов: 138
Рейтинг: 2
#16: 2017-08-26 18:40:59 ЛС | профиль | цитата
RAWY_EX писал(а):
dimosikILA писал(а):
Ну

Что ну? софт нужно обновлять а не пользоваться старым 2010 года выпуска.

Он у меня новый, просто я люблю старый интерфейс!
карма: 0
私はアニメが大好き
0
Ответов: 497
Рейтинг: 16
#17: 2017-08-26 21:05:30 ЛС | профиль | цитата
в версии 4 (о 3,2... ничего не скажу) в заголовке окна содержится артист и название песни

карма: 1
        ]  
0
Ответов: 138
Рейтинг: 2
#18: 2017-08-27 16:46:08 ЛС | профиль | цитата
Пытаюсь воспользоваться
Add(CeFileStream,9225465,147,119)
{
FileName="AIMPRemoteAccessClass"
}
Просит rapi.ddl
в папке hiasm нет такой ддл"ки
карма: 0
私はアニメが大好き
0
Ответов: 138
Рейтинг: 2
#19: 2018-05-27 16:08:09 ЛС | профиль | цитата
Всё же решил вспомнить эту тему
Пытаюсь, впервые, написать IC, но всё время выдает ошибку "Undeclared identifier: 'NativeUInt'"
Перерыл Интернет, вроде эта функция принадлежит Windows.
Буду благодарен за помощь

Add(MainForm,2953706,224,35)
{
link(onCreate,10296752:doFind,[])
}
Add(FindWindow,1593706,343,42)
{
ClassName="AIMP2_RemoteInfo"
SkipParam=1
link(onFind,15880505:doText,[])
}
Add(FindWindow,10296752,280,49)
{
ClassName="AIMP.exe"
link(onFind,1593706:doFindChild,[])
}
Add(Edit,15880505,406,42)
{
Left=10
Top=10
Width=370
}
Add(Button,16461994,210,196)
{
Left=10
Top=35
Width=370
Data=Integer(0)
link(onClick,11158514:doEvent1,[])
}
Add(InlineCode,11816708,336,126)
{
WorkPoints=#5:doGet|
EventPoints=#5:onOut|
VarPoints=#6:AAlbum|7:AArtist|5:ADate|9:AFileName|6:ATitle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|19: AFile: THandle;|16: AInfo: Pointer;|16: ABufferz: Real;|15: AAlbumz: Real;|16: AArtistz: Real;|14: ADatez: Real;|18: AFileNamez: Real;|15: AGenrez: Real;|15: ATitlez: Real;|3: |9: public|20: onOut:THI_Event;|50: procedure doGet (var _Data:TData; Index:word);|58: procedure _var_AAlbum (var _Data: TData; Index: Word);|56: procedure _var_AArtist (var _Data: TData; Index: Word);|54: procedure _var_ADate (var _Data: TData; Index: Word);|58: procedure _var_AFileName (var _Data: TData; Index: Word);|55: procedure _var_AGenre (var _Data: TData; Index: Word);|55: procedure _var_ATitle (var _Data: TData; Index: Word);|4: |5: end;|0:|14:implementation|0:|6: const|45: AIMPRemoteAccessClass = 'AIMP2_RemoteInfo';|37: AIMPRemoteAccessMapFileSize = 2048;|0:|28:procedure THiAsmClass.doGet;|7: begin|71: AFile := OpenFileMapping(FILE_MAP_READ, True, AIMPRemoteAccessClass);|82: AInfo := MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);|2: |71: ABufferz := Pointer(NativeUInt(AInfo) + SizeOf(TAIMPRemoteFileInfo));|57: AAlbumz := ExtractString(ABuffer, AInfo^.AlbumLength); |59: AArtistz := ExtractString(ABuffer, AInfo^.ArtistLength); |55: ADatez := ExtractString(ABuffer, AInfo^.DateLength); |63: AFileNamez := ExtractString(ABuffer, AInfo^.FileNameLength); |57: AGenrez := ExtractString(ABuffer, AInfo^.GenreLength); |56: ATitlez := ExtractString(ABuffer, AInfo^.TitleLength);|2: |25:UnmapViewOfFile(AInfo); |10://finally |20:CloseHandle(AFile); |38:_hi_CreateEvent(_data, @onOut, AFile);|4:end;|0:|29:procedure THiAsmClass.AAlbum;|5:begin|28: dtReal(_Data, AAlbumz);|4:end;|0:|30:procedure THiAsmClass.AArtist;|5:begin|29: dtReal(_Data, AArtistz);|4:end;|0:|28:procedure THiAsmClass.ADate;|5:begin|27: dtReal(_Data, ADatez);|4:end;|0:|32:procedure THiAsmClass.AFileName;|5:begin|31: dtReal(_Data, AFileNamez);|4:end;|0:|29:procedure THiAsmClass.AGenre;|5:begin|28: dtReal(_Data, AGenrez);|4:end;|0:|29:procedure THiAsmClass.ATitle;|5:begin|28: dtReal(_Data, ATitlez);|4:end;|0:|4:end.|
}
Add(Memo,12740452,448,168)
{
Left=10
Top=60
Width=370
Height=200
}
Add(DoData,16134035,336,168)
{
link(onEventData,10120147:doWork2,[])
link(Data,11816708:AAlbum,[])
}
Add(DoData,9587571,343,203)
{
link(onEventData,11275292:doWork2,[])
link(Data,11816708:AArtist,[])
}
Add(DoData,6586898,350,238)
{
link(onEventData,14547456:doWork2,[])
link(Data,11816708:ADate,[])
}
Add(DoData,11510184,357,273)
{
link(onEventData,2387381:doWork2,[])
link(Data,11816708:AFileName,[])
}
Add(DoData,8840521,364,308)
{
link(onEventData,2387381:doWork3,[(417,314)])
link(Data,11816708:ATitle,[])
}
Add(Hub,11158514,273,196)
{
OutCount=5
link(onEvent1,16134035:doData,[(311,202)(311,174)])
link(onEvent2,9587571:doData,[])
link(onEvent3,6586898:doData,[(319,216)(319,244)])
link(onEvent4,11510184:doData,[(322,223)(322,279)])
link(onEvent5,8840521:doData,[(325,230)(325,314)])
}
Add(HubEx,10120147,413,168)
{
link(onEvent,12740452:doAdd,[])
}
Add(HubEx,11275292,413,203)
{
Angle=3
link(onEvent,10120147:doWork3,[])
}
Add(HubEx,14547456,413,238)
{
Angle=3
link(onEvent,11275292:doWork3,[])
}
Add(HubEx,2387381,413,273)
{
Angle=3
link(onEvent,14547456:doWork3,[])
}
карма: 0
私はアニメが大好き
0
Ответов: 16884
Рейтинг: 1239
#20: 2018-05-27 17:46:19 ЛС | профиль | цитата
dimosikILA писал(а):
Пытаюсь, впервые, написать IC, но всё время выдает ошибку "Undeclared identifier: 'NativeUInt'"
FPC должен пропустить.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 138
Рейтинг: 2
#21: 2018-05-27 18:27:58 ЛС | профиль | цитата
Тоже самое
только ошибок больше
карма: 0
私はアニメが大好き
0
Ответов: 211
Рейтинг: 52
#22: 2018-05-28 10:59:35 ЛС | профиль | цитата
dimosikILA, замените NativeUInt на Cardinal или определите в IC тип "type NativeUInt=Cardinal;"
карма: 1
слтв
0
Ответов: 138
Рейтинг: 2
#23: 2018-05-28 17:55:00 ЛС | профиль | цитата
Minkovsky писал(а):
dimosikILA, замените NativeUInt на Cardinal или определите в IC тип "type NativeUInt=Cardinal;"

Помогло
Спасибо
НО!
Теперь ругается на "Undeclared identifier: 'ExtractString'"
Выяснилось, что данная функция принадлежит "Classes"
В Интернете написано, что данная библиотека стандартная, однако если попытаться использовать, то компилятор рявкнет, что нет такого файла ( Fatal: File not found: 'Classes.dcu' )
Найти данную библиотеку я не могу
карма: 0
私はアニメが大好き
0
Ответов: 4621
Рейтинг: 746
#24: 2018-05-29 10:51:25 ЛС | профиль | цитата
dimosikILA писал(а):
Найти данную библиотеку я не могу
Этот файл входит в состав любого Delphi, но тянет за собой кучу зависимостей и обычно нужно будет брать версию поближе к используемому у нас компилятору. В таких случаях кроме простого копипаста кода участок с этой функцией анализируется, чтобы понять что он делает (также читается описание функции в документации Delphi - онлайн на их сайте должна быть, если нет установленного). Затем самостоятельно либо упрощается и пишется своя замена, либо функция копируется из Classes.pas (с некоторыми нужными ей зависимостями, и переписывается, чтобы избавиться от остальных).

Редактировалось 2 раз(а), последний 2018-05-29 14:31:46
карма: 26

0
Ответов: 138
Рейтинг: 2
#25: 2018-05-29 14:11:41 ЛС | профиль | цитата
Спасибо
буду пробовать
карма: 0
私はアニメが大好き
0
Ответов: 138
Рейтинг: 2
#26: 2018-05-29 19:16:43 ЛС | профиль | цитата
Честно говоря, силы на исходе
Как я только не крутился что-бы вытащить от дуда данные...
Add(Button,16461994,105,294)
{
Left=10
Top=35
Width=370
Data=Integer(0)
link(onClick,11816708:doGet,[])
}
Add(Memo,12740452,238,294)
{
Left=10
Top=60
Width=370
Height=200
}
Add(Hub,717186,203,294)
{
link(onEvent1,12740452:doClear,[(227,300)(227,307)])
link(onEvent2,12740452:doAdd,[(227,307)(227,300)])
}
Add(InlineCode,11816708,154,294)
{
WorkPoints=#5:doGet|
EventPoints=#5:onOut|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|19: AFile: THandle;|16: AInfo: Pointer;|18: ABuffer: Pointer;|9: public|20: onOut:THI_Event;|50: procedure doGet (var _Data:TData; Index:word);|4: |5: end;|0:|14:implementation|0:|6: const|45: AIMPRemoteAccessClass = 'AIMP2_RemoteInfo';|37: AIMPRemoteAccessMapFileSize = 2048;|27: type NativeUInt=Cardinal;|6: type|45: PAIMPRemoteFileInfo = ^TAIMPRemoteFileInfo;|37: TAIMPRemoteFileInfo = packed record|23: Deprecated1: DWORD;|21: Active: LongBool;|19: BitRate: DWORD;|20: Channels: DWORD;|20: Duration: DWORD;|20: FileSize: Int64;|20: FileMark: DWORD;|22: SampleRate: DWORD;|23: TrackNumber: DWORD;|23: AlbumLength: DWORD;|24: ArtistLength: DWORD;|22: DateLength: DWORD;|26: FileNameLength: DWORD;|23: GenreLength: DWORD;|23: TitleLength: DWORD;|38: Deprecated2: array[0..5] of DWORD;|6: end;|0:|0:|28:procedure THiAsmClass.doGet;|5:begin|69:AFile := OpenFileMapping(FILE_MAP_READ, True, AIMPRemoteAccessClass);|80:AInfo := MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);|68:ABuffer := Pointer(NativeUInt(AInfo) + SizeOf(TAIMPRemoteFileInfo));|0:|46:_hi_CreateEvent(_data, @onOut, string(AInfo));|1: |24:UnmapViewOfFile(AInfo); |19:CloseHandle(AFile);|44://_hi_CreateEvent(_data, @onOut, (ABuffer));|6:end; |4:end.|0:|
link(onOut,717186:doEvent1,[])
}

Лучшим моим достижением было, вытащить символ Х или М

Редактировалось 1 раз(а), последний 2018-05-29 19:17:16
карма: 0
私はアニメが大好き
0
Ответов: 9906
Рейтинг: 351
#27: 2018-05-30 05:59:20 ЛС | профиль | цитата
Netspirit писал(а):
либо функция копируется из Classes.pas

Netspirit, я тэбе одын умный вэщь скажу, только ты нэ обыжайся ...

Нет в Classes.pas такой функции -- ExtractString.
Есть функция ExtractStrings, но у нее совершенно другая сигнатура (похоже, что и семантика).
Так что, базар был НИ-О-ЧЕМ.

Мастера копипастинга, блин

Редактировалось 3 раз(а), последний 2018-05-30 14:59:34
карма: 9

0
Ответов: 4621
Рейтинг: 746
#28: 2018-05-30 10:50:33 ЛС | профиль | цитата
Ну, таки да.
карма: 26

0
Ответов: 138
Рейтинг: 2
#29: 2018-05-30 11:20:16 ЛС | профиль | цитата
Как можно получить Идентификатор Файлового Потока Проецируемого Файла?
Если уж не могу вытащить данные внутри IC, то хотя бы при помощи DataToFile попытаться что то сделать
Буду признателен
карма: 0
私はアニメが大好き
0
Ответов: 4621
Рейтинг: 746
#30: 2018-05-30 12:27:14 ЛС | профиль | цитата
На, держи:

procedure THiAsmClass.doGet;
var
S: string;
AFile: THandle;
AInfo: Pointer;
ABuffer: Pointer;
begin
AFile := OpenFileMapping(FILE_MAP_READ, True, AIMPRemoteAccessClass);
AInfo := MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);
// AInfo указывает на общую память размером в AIMPRemoteAccessMapFileSize

// Пропускаем структуру TAIMPRemoteFileInfo в начале буфера.
// После неё лежит имя файла в Юникоде (WideString) с завершающим 0
ABuffer := Pointer(NativeUInt(AInfo) + SizeOf(TAIMPRemoteFileInfo));

// Приводим простой указатель к указателю на последовательность WideChar
// символов, оканчивающуюся 0 - PWideChar.
// Присвоение PWideChar строке S (AnsiString) приводит к:
// - чтению WideString по указателю до ближайшего 0
// - преобразованию WideString в AnsiString
S := PWideChar(ABuffer);
// Выдаём прочитанную строку
_hi_OnEvent(onOut, S);

// Убираем после себя
UnmapViewOfFile(AInfo);
CloseHandle(AFile);
end;
карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)