Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » dynamisches array problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
14.06.2005, 12:06 Uhr
~keine ahnung
Gast


nein hab ich nicht - weiß auch net wie des geht. ich weiß nur vorher mit dem statischen gings und jetzt nicht mehr. hier nochmal die alten sachen:

double myarray[50000];


for (int i = 0; i < arraysize-1; i++)
{

Intens1 = pDoc->Chromy->getPoint(i).y;
Intens2 = pDoc->Chromy->getPoint(i+1).y;
RetTime = pDoc->Chromy->getPoint(i).x;



if (Intens1<MinToleranz)
{
count2++;

if (Intens2>Intens1)
{
Peakweite = count2;

if (Peakweite>dlg.Scanweite)
{

myarray[count] = RetTime/1000;
count++;

}
}
}
}



res.m_pArray = myarray;

und

double *m_pArray;


bestimmt ist irgendwas von den änderrungen nicht sauber programmiert - übergabe und alles funktioniert mit dem statischen ja einwandfrei.

mfg patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
14.06.2005, 13:43 Uhr
GuenniAtWork



So würde ich es Ändern.


C++:
CArray<double> myarray; //double myarray[50000];
...
myarray.Add(RetTime/1000); //myarray[count] = RetTime/1000;
//count überflüssig
...
res.m_pArray = &myarray; //res.m_pArray = myarray;

/////////
CArray<double> *m_pArray;




C++:
//Array auslesen
for (int i = 0; i < m_pArray.GetCount(); i++) //m_pArray.GetCount() statt m_nArraySize (jetzt überflüssig)
{
CString s;
s.Format("%.1f", m_pArray[i]);
m_ctrlListBox.AddString(s);
}




--
Gruß GuenniAtWork

Dieser Post wurde am 14.06.2005 um 13:46 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
14.06.2005, 23:40 Uhr
mmc20
puss in boots


hi,
also die definition müsste eigentlich "CArray<double,double> myarray" sein ( bzw <double,&double> ...aber in seinem fall müsste erstes funktionieren )
... und laut (meiner) MSDN heisst es "myarray.GetSize()" nicht GetCount()
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
15.06.2005, 09:08 Uhr
GuenniAtWork



Morgen.

Die Definition mit CArray<double> myarray geht auch, da als zweiter Datentyp standartmäßig eine Referenz auf den ersten Datentyp verwendet wird.

myarray.GetCount() gibt es auch!

Siehe MSDN CArray Members.
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
15.06.2005, 13:13 Uhr
~AS
Gast


Hallo an Alle,


das eigentliche Problem hat ~keine ahnung bisher noch nicht gepostet.


Die Definition von res.m_pArray


Wenn es so wie GuenniAtWork vorgeschlagen definiert wurde, sollte es funktionieren. Wenn die Definition gleich geblieben ist, dann wurden Äpfel (double *) zu Birnen (CArray<double> *) gemacht.

Mit dem Ergebnis, dass apfelförmige Birnen angezeigt werden.

MFG

AS
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
15.06.2005, 13:42 Uhr
~keine ahnung
Gast


at geuniatwork danke für deine mühe aber irgendwie klappt das einfach nicht - nach den änderrungen steht jetzt gar nichts mehr in der listbox.

at as die definition hab ich schon geändert auf CArray<double>.

wenn man das nicht macht schmeißt es gleich einen kompilerfehler.

das problem ist wie gesagt das es keine kompilerfehler gibt aber die ergebnisse in der listbox stimmer nicht. nuller und komische zeichen.

naja kann nicht immer alles funktionieren - danke trotzdem nochmal

mfg patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
15.06.2005, 13:53 Uhr
GuenniAtWork




@~keineAhnung:
Kannst mir ja mal das Projekt (bitte gepackt) per Mail (guenni.mail@gmx.de) schicken, dann schau ich mal drüber.
--
Gruß GuenniAtWork

Dieser Post wurde am 15.06.2005 um 13:54 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
15.06.2005, 17:15 Uhr
~AS
Gast


Hallo ~keine ahnung

ich habe mir mal kurz ein Testprogramm geschrieben.


C++:

CArray<double,double> myarray;

    myarray.SetSize(90);
    double dummy;
    for (int count=0;count<100;count++)
        {
            dummy = (double)count + .1;
            myarray.SetAtGrow(count,dummy);
        }

CListDlg ld;

    ld.m_pArray = &myarray;

ld.DoModal();


    CDialog::OnInitDialog();
    
    int ArrSize = m_pArray->GetSize();
    for (int i = 0; i < ArrSize; i++)
    {
        CString s;
        s.Format("%.1f", m_pArray->GetAt(i));
        m_ctrlListBox.AddString(s);
    }







Damit bekomme ich eine vernünftige Listbox.

mit


C++:
CString s;
s.Format("%.1f", m_pArray[i]);
m_ctrlListBox.AddString(s);





steht nur Mist drin.


mfg
AS
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
16.06.2005, 01:25 Uhr
mmc20
puss in boots


also... ich hab ebenfalls ein testprojekt erstellt und deklariere eine member :

C++:
    CArray<double,double&> m_array;


das array fülle ich so :
... das mit setsize() würd ich lassen, das CArray "grow't" selbst, also einfach nur Add(...)

C++:
void CTestDatenKlasseDlg::_test()
{
    double tmp = 0.0;
    for ( int i = 0 ; i < 10; i++ ) {
        tmp = (double)i + .1;
        m_array.Add(tmp);
    }
}


und gelesen wird es so :

C++:
void CTestDatenKlasseDlg::_test2()
{
    double tmp1, tmp2;

    CArray<double, double&>* pArray = &m_array; // test-array pointer

    for ( int i = 0; i < m_array.GetSize(); i++ ) {
        tmp1 = m_array.GetAt(i);
        tmp2 = pArray->GetAt(i); // oder über pointer
    }
}




C++:
CString s;
s.Format("%.1f", m_pArray[i]); // <-- m_pArray[i] gibt einen pointer zurück, desshalb nur "mist"
m_ctrlListBox.AddString(s);


Dieser Post wurde am 16.06.2005 um 01:28 Uhr von mmc20 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
16.06.2005, 01:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

das array fülle ich so :
... das mit setsize() würd ich lassen, das CArray "grow't" selbst, also einfach nur Add(...)


Ich weiss nicht wie CArray implementiert ist, aber es kann vermutlich aus Performancegründen schon sehr sinnvoll sein setsize zu benutzen wenn grosse Datenmengen ins Array geschoben werden...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: