Комментарии 13
Я лишь говорю, что пример вызова удаления файла через JNI бессмысленный, потому что это все умеет и дельфи. Ну а про запущенную стороннюю JVM — вы же это сразу не написали, поэтому и уточнил, что дорого. И про это стоило бы явно писать.
DeleteFile(<Имя файла>);…
Блин. Я просто понимаю что вызов нужного метода может понадобиться, но Delphi это немного другой язык, чтобы в нем так изголяться… Я лично подвис…
Любой пример должен быть понятным и вменяемым. А когда ты знаешь что та же самая операция делается очень просто (ну или очень-очень-очень просто), то смысл от такого примера нивелируется правоприменением других функций.
Только вот вчера нашёл свою программу 2009 года, написанную ещё в Delphi 7, качнул свежую бесплатную IDE от Embarcadero, и попытался собрать. Спустя часа три от кучи багов стало приходить ощущение, что проще и быстрее будет переписать её с нуля на каком-нибудь шарпе. Хотя, раньше, я был ярым фанатом делфи, да и до сих пор не могу "отпустить" его.
А я иногда балуюсь. Именно 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. Пример с удалением файла слишком натянуто выглядит. Либо аргументировать выбор в статье.
JNI и Delphi. Использование Java методов при помощи JNI