При попытке отправить символ в DLL это кажется неправильным (показано в «result_20170207»). Ниже код о DLL:Fortran DLL в vb6: ошибка о «символе» и «чтении предложения»
subroutine char_1(pfilename)
!DEC$ ATTRIBUTES stdcall,DLLEXPORT::char_1
!DEC$ ATTRIBUTES ALIAS:"char_1"::char_1
!DEC$ ATTRIBUTES reference :: pfilename
character(len=512)::pfilename
!integer::i !(about ERROR TWO)
write(*,*)trim(pfilename)
!read(*,*)i !(about ERROR TWO)
open(unit=18,file="result_20170207",status='replace',action='write')
write(18,*)"This is dll"
write(18,*)trim(pfilename)
write(18,*)"the third line"
close(18)
end subroutine
Ниже код в VB6.0:
Private Declare Sub char_1 Lib "D:\try_vb\char_1\char_1_dll\char_1_dll\Debug\char_1_dll.dll" (ByVal char As String)
Private Sub Command1_Click()
Dim char As String
char = "c:/desktop/aaa.txt"
Text1.Text = char
Call char_1(char)
End Sub
Private Sub Command2_Click()
End
End Sub
ОШИБКА ONE: произошло Ошибка в файле результатов является: wrong result
Я думаю, это из-за характера. Почему это происходит и как я могу это исправить? Спасибо!
ОШИБКА ВТОРАЯ: Кстати, когда я добавить код «чтения (,) я», еще одна ошибка met.Shown ниже: severe(39) коды я добавляю показаны в коде, которые закомментированные : Я озадачен двумя проблемами.
Согласно ответу MarkJ, я есть изменить свой DLL код, как показано ниже (ERROR ONE; код в "модуле String_Functions" опущено здесь):
subroutine char_1(pfilename)
!DEC$ ATTRIBUTES stdcall,DLLEXPORT::char_1
!DEC$ ATTRIBUTES ALIAS:"char_1"::char_1
!DEC$ ATTRIBUTES reference :: pfilename
use String_Functions !--------here--------!
character(len=512)::pfilename
character(len=512)::filename
integer::ii
ii=Clen(pfilename) !--------here--------!
filename=Ctrim(pfilename) !--------here--------!
open(unit=18,file="result_20170207",status='replace',action='write')
write(18,*)"This is dll"
write(18,*)filename(1:ii) !--------here--------!
write(18,*)"the third line"
close(18)
end subroutine
Я не понимаю ваши фотографии. Что они показывают? У вас есть сообщения об ошибках, которые вы можете показать в виде текста? –
Извините, что не прояснили. Ниже приведены дополнительные пояснения: –
Я нажимаю «Ввод», и комментарий был отправлен. Поэтому я добавляю оставшиеся ниже: (1) ОШИБКА ОДИН: это не «ошибка», потому что она может нормально завершаться. Но в результирующем файле «result_20170207» не сохраняется правильный символ (т. Е. Строка 2 в файле результатов является либерской). Почему строка 2 не может храниться правильно (например, строка 1 «Это DLL» и строка 3 «третья строка»)? (2) ОШИБКА ДВА: это ошибка, и это время выполнения, поэтому все сообщения об ошибке - это изображение «серьезное (39)», которое указывает, что строка 11 «read (*, *) i» неверна. Мне было интересно, почему это предложение может быть неправильным. –