- Код: Выделить всё
D:\Program Files\WinRAR\rar.exe a D:\temp @d:\file.lst
так тоже работает, в чем проблема не понимаю, app.path указать проблема?
D:\Program Files\WinRAR\rar.exe a D:\temp @d:\file.lst
Но, ведь при ByRef тоже ошибка!
Да, указатель на разные типы данных просто указатель, и он проходит. Но ведь это ошибка, т.к. процедура ожидает Long, а ей суют Double. И, если бы целая часть в Double не занимала младшие биты, фиг бы вам тут прошло! Ой...
Function First()
Dim aaa As Long
Dim bbb As Double
aaa = 777
bbb = 888
Second aaa, bbb
' aaa по прежнему будет 777, а не 0
' bbb будет 0
End Function
Function Second(ByRef x As Double, ByRef y As Double)
x = 0
y = 0
End Function
Ну и возникают потом переполнения. Вообще, не нужно было бы делать преобразований, а строго следить за типами!Когда параметр ByVal-ный и типы не совпадают, исходное значение просто приводится к нужному типу. Это можно сделать, и это делается.
Да чё это я должен в параметрах rar-у указывать полные пути? Должно и так работать. Rar должон смотреть файло из своей папки запуска! Хакер, если ты такой умный, и для тебя всё так прозрачно, расколдуй принцип действия ShellD:\Program Files\WinRAR\rar.exe a D:\temp @d:\file.lst
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Сейчас этот форум просматривают: Google-бот, Mail.ru [бот] и гости: 10