![]() |
Re: Hilfe bei Übersetzung VB to Delphi
Sieht jetzt so aus:
Delphi-Quellcode:
TFNGetEON = function(var buf:Single;var len,pi,pty:Integer;ps:String;var ta:Bool;eon:Integer):Boolean;stdcall;
Delphi-Quellcode:
Hmm, ich weiss auch net weiter....komisch, bei GetAFList wars mit deinen Änderungen sofort gut !
function WGetEON1:String;
var aflist1 : array of Single; arysize: Integer; LoopArr: Integer; pseontemp: String; ttaeon1 :Bool; tptyeon1:Integer; tpieon1 :Integer; begin Result := ''; SetLength(pseontemp,8); arysize := 25; SetLength(aflist1, arysize-1); if GetEON(aflist1[0],arysize,tpieon1,tptyeon1,pseontemp,ttaeon1,0) then SetLength(aflist1, arysize-1); //For LoopArr := Low(aflist1) To high(aflist1) do //Result := floattostr(aflist1[LoopArr]); End; Gruß, bluescreen |
Re: Hilfe bei Übersetzung VB to Delphi
var len,pi,pty ???
Kann sein das die Funktion in VB das nicht aktzeptiert. Versuche jede Variable seperat zu definieren nicht getrennt durch Komma.
Delphi-Quellcode:
gruss Emil
var len:Integer; var pi:Integer; var pty:Integer;
|
Re: Hilfe bei Übersetzung VB to Delphi
Zitat:
Die GetEON bringt im array die Frequenzen, sowie in den Vars dazu gehörigige Werte, die man ebenso nutzen kann. Mein Problem ist leider immer noch der Aufruf...ich bekomme kein True zurück, sondern direkt die exception..... Ist nicht ganz so leicht, von der Anwendung über eine dll zu einer weiteren zu debuggen.... Gruß, bluescreen |
Re: Hilfe bei Übersetzung VB to Delphi
Zitat:
Den Source habe ich auch.
Delphi-Quellcode:
Der VB-Code ist auch nur ein Wrapper...
USBRADIO_API bool __stdcall VB_GetEon(float* ary, int* arysize, unsigned int *pi, short *pty, char ps[9], bool *ta, unsigned int eon);
Gruß, bluescreen |
Re: Hilfe bei Übersetzung VB to Delphi
Hmmm ...
Delphi-Quellcode:
Wenn ich das richtig interpretiere sollte Result dir den wert von aflist1[0] zurückgeben wenn der aufruf GetEON = True erfolgreich war.
if GetEON(aflist1[0],arysize,tpieon1,tptyeon1,pseontemp,ttaeon1,0) then
Plus der werte die in tpieon1 abhängig von aflist1[0] enthalten sind. Weis nicht ob in der DLL result = @aflist1 als VarPtr deklariert ist. Das kannst du nur testen. EDIT: Davon abgesehen du deklarierst überall Boolean .. Warum ? Bool wie in c++ das reicht. Nur in VB benötigt man 2 Byte und da gibt es kein Bool. gruss Emil |
Re: Hilfe bei Übersetzung VB to Delphi
Delphi-Quellcode:
hmm kannst du etwas erkennen ?
USBRADIO_API bool __stdcall VB_GetEon(float* ary, int* arysize, unsigned int *pi, short * pty, char ps[9], bool *ta, unsigned int eon)
{ if(eon < 0 || eon > 4) return false; RDSData rds_data; std::map<double, double>::iterator iter; std::vector<rds_EON_struct>::iterator EONMapIter; int i; if (fmRadioDevice.GetRDSData(&rds_data)) { for(EONMapIter = rds_data.EONMap.begin(), i = 0; EONMapIter != rds_data.EONMap.end(); EONMapIter++, i++) if( i == eon) break; if(EONMapIter != rds_data.EONMap.end()) { if(EONMapIter->m_mappedFreq2.size() > 0) { int cnt = 0; for(iter = EONMapIter->m_mappedFreq2.begin(); iter != EONMapIter->m_mappedFreq2.end(); iter++) { ary[cnt] = iter->first; cnt++; if (cnt > *arysize - 1) break; } *arysize = EONMapIter->m_mappedFreq2.size(); } *pi = EONMapIter->m_pi; *pty = EONMapIter->m_pty_ON; EONMapIter->m_psText = ""; for(i = 0; i < 8; i++) { if(!EONMapIter->m_ps[i]) EONMapIter->m_ps[i] = ' '; EONMapIter->m_psText += EONMapIter->m_ps[i]; } strncpy(ps,EONMapIter->m_psText.c_str(),strlen(EONMapIter->m_psText.c_str())); *ta = EONMapIter->m_ta_ON; } } return true; } |
Re: Hilfe bei Übersetzung VB to Delphi
Zitat:
gruss Emil |
Re: Hilfe bei Übersetzung VB to Delphi
Zitat:
die zugriffsverletung ist bei adresse 00000000000 sowie beim lesen an adresse 00000000000 gruß, bluescreen |
Re: Hilfe bei Übersetzung VB to Delphi
Ein Zeiger scheint Nil zu sein
|
Re: Hilfe bei Übersetzung VB to Delphi
Zitat:
gruß, bluescreen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz