Кажется, я здесь задаю вопрос почти каждый день. Я не уверен, хорошо это или плохо ...
Сегодняшний «Flavor-Of-The-WTF» подразумевает мою полную и полную невежественность при использовании функции из объекта NI Measurement Studio. Как и в большинстве моих предыдущих вопросов, это касается проекта стажировки, где мне было поручено перевести проект VB6 на C # в .Net Framework 2.0.
Исходный код VB выглядит примерно так:
Public Sub FFT(ZData() As Single, FFTData() As Single)
Dim realdata As Variant
Dim imgdata As Variant
// (... Some unrelated other code in here ...)
// Here we pass three variables to a NI CWDSP object's ReFFT function
CWDSP1.ReFFT ZData, realdata, imgdata
// (... More unrelated code ...)
End Sub
В какой-то момент я застрял в MsgBox, чтобы посмотреть, как интерпретируются realdata и imgdata. Они оба Double()
с. Это прекрасно работает для оригинальной программы. По общему признанию, мои глубокие познания в оригинальной программе являются лишь посредственными, так как я недавно начал проект, и у меня за плечами всего несколько лет программирования (и никаких лет машиностроения. Программист был инженером-механиком, само приложение) измерительный инструмент для выхода машины).
Перенеся код на C #, я попытался переписать его так:
private void FFT(float[] ZData, float[] FFTData){
double[] realData = new double[1000];
double[] imgData = new double[1000];
// (... Unrelated intermediate code ...)
DSP.ReFFT(ZData, realData, imgData);
// (... Unrelated intermediate code ...)
}
Как видите, я начал с того, что делал в основном так же, как и оригинальный VB. Возникла следующая ошибка: Cannot Convert double[] to ref object
Ну, это не хорошо. Итак, я попробовал: DSP.ReFFT(ZData, ref realData, ref imgData);
Только чтобы вернуться: Cannot Convert ref double[] to ref object
Так что я сделал то, что считал очевидным. Я упаковал realData и imgData в object
s и передал их функции. Это не слишком любит это, однако. Если я передаю новые объекты без ref
, он настаивает на том, чтобы мне нужно было передать их с ref
. Если я передаю их с ref
, это дает мне ошибку:
Cannot Convert ref double[] to ref object
.
Да ... это выглядит знакомо. Наконец, я получаю, чтобы компилятор прекратил выдавать ошибки, когда я изменяю double[]
на Object
при создании двух переменных. Но ... когда я запускаю функцию, я получаю ошибку Type Mismatch
.
Я действительно понятия не имею, куда я иду отсюда. В Интернете практически нет информации о программировании для C # с Measurement Studio. Даже если бы и было, я уверен, что решение намного проще, чем я ожидаю. История научила меня, что когда есть ошибка, которую я не могу понять, это почти всегда что-то глупое.