Как стать автором
Обновить

Комментарии 13

Я что-то не понял — через тернии к звездам? Если это пример использования JNI, то можно было подобрать вариант который не вызывает интуитивного отторжения?
Менее бесполезный (в смысле, в Дельфи же можно удалять файлы без JNI, правда)?
Это демонстрация того, что в запущенном Java приложении при помощи JNI можно использовать любой Java метод.
Чтобы использовать из Дельфи методы через JNI, нужно сначала запустить JVM — а это дорого. Для такого применения, как удалить файл — чрезмерно дорого. Поэтому этот пример — дурь.
Никто еще не запрещал DLL. Легко и просто засунуть все это в DLL, там сделать подключение к JVM (Пример подключения я уже описал) и делай что хочешь в «УЖЕ ЗАПУЩЕННОЙ СТОРОННЕЙ JVM»
Заметьте — я не говорил, что вообще идея вызывать Java-методы из Дельфи плохая. Идея нормальная (хотя на практике чаще все-таки нужно именно DLL из Java, а не наоборот). Да и пример именно для Дельфи видимо встречается не часто.

Я лишь говорю, что пример вызова удаления файла через JNI бессмысленный, потому что это все умеет и дельфи. Ну а про запущенную стороннюю JVM — вы же это сразу не написали, поэтому и уточнил, что дорого. И про это стоило бы явно писать.
Типа того. Вот код из проги
DeleteFile(<Имя файла>);…
Блин. Я просто понимаю что вызов нужного метода может понадобиться, но Delphi это немного другой язык, чтобы в нем так изголяться… Я лично подвис…
Любой пример должен быть понятным и вменяемым. А когда ты знаешь что та же самая операция делается очень просто (ну или очень-очень-очень просто), то смысл от такого примера нивелируется правоприменением других функций.

Только вот вчера нашёл свою программу 2009 года, написанную ещё в Delphi 7, качнул свежую бесплатную IDE от Embarcadero, и попытался собрать. Спустя часа три от кучи багов стало приходить ощущение, что проще и быстрее будет переписать её с нуля на каком-нибудь шарпе. Хотя, раньше, я был ярым фанатом делфи, да и до сих пор не могу "отпустить" его.

А я иногда балуюсь. Именно 7-й. Для написания мелких инстпументов, сервисов или еще чего, связанного с ассемблером самое милое дело.

Её, наверное, уже и не добыть нигде, кроме как на торрентах с сомнительной нагрузкой.
А чем FreePascal не подходит?
Если имеется ввиду что-то из последних — то да. Проще пересобрать. Но я например завис на BDS2006, хотя сейчас еще и RIO прикупил. Есть большие отличия если используешь сторонние компоненты. Есть особенности и расширения. 7-ка расширена очень сильно.
В плане WINDOWS меня вполне устраивает BDS2006 (ну или TurboDelphi, ее покупал). Но т.к. мой мозг завис еще в те годы, то RIO вполне устраивает. При известных танцах с бубном (будем говорить при целом концерте с бубном) можно написать приложение которое будет работать на всех платформах. Во всяком случае WIN и Android точно работают.
Тратить время на изучение Android Studio — я забил. Есть куча других проблем. Я лучше на интерфейс налягу :-)
DirtyJOE. КИдаем туда класс File и в методах ищем нашу функцию.

Зачем?
Исходник: https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/io/File.java
Документация: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/File.html
Правила формирования дескриптора: https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.3


PwideChar(WideString(FilePath))

В сигнатуре тип параметра объявлен как String, а это синоним UnicodeString в современных версиях. Скорее всего у вас тут ненужная неявная конвертация.


Для примера стоило выбрать что-то, чего нет в стандартной библиотеке Delphi. Пример с удалением файла слишком натянуто выглядит. Либо аргументировать выбор в статье.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории