hallo ich hab mal wieder ein problem und hoffe das ihr mir wieder weiterhelfen könnt.
ich mache eine datenbankabfrage und bekomme x,y werte zurück die ich in ein array speichere. anschließend möchte ich anhand der y koordinaten lokale minimas erkennen. die ausgabe ist in einer listbox. mein compiler gibt keinen fehler an aber wenn ich die exe ausführe rechnet mein pc erst eine zeitlang und dann bekomme ich den fehler: an invalid argument was encountered.
hier mal mein code:
C++:
int arraysize = pDoc->Chromy->getMaxScan(); double myarray[50000]; double Intens1 = 0; double Intens2 = 0; int count = 0;
for (int i = 0; i < arraysize; i++) { Intens1 = pDoc->Chromy->getPoint(i).y; Intens2 = pDoc->Chromy->getPoint(i+1).y;
was ist wenn arraysize größer als 50000 ist? das fängst du nicht ab. Warum nutzt du nicht CArray<double> anstatt deines festen double-arrays? Ansonsten könnt ich mir vorstellen das folgendes schiefgeht:
C++:
for (int i = 0; i < arraysize; i++) { Intens1 = pDoc->Chromy->getPoint(i).y; Intens2 = pDoc->Chromy->getPoint(i+1).y;
Was ist wenn i = arraysize-1 dann liefert dir Intens2 die obige Fehlermeldung, da Element
pDoc->Chromy->getPoint(arraysize) nicht existiert und dadurch auch keinen y-wert hat. -- class God : public ChuckNorris { };
@all vielen dank es geht jetzt. wenn mann die lösung hier liest ist es sooo einfach! klar wenn die schleife bis arraysize zählt gibt es keinen punkt mehr für i+1. die lösung war also:
for (int i = 0; i < arraysize-1; i++)
@floSoft also arraysize ist nicht größer als 50000 allerdings nervt mich das feste array auch tierisch. CArray<double> hab ich so noch nicht gesehen aber meine erfahrung ist auch nicht besonders. kannst du mir da mal bitte ein beispiel geben wie man das einsetzt? ich hatte folgendes probiert:double myarray[arraysize]; da hab ich dann vom compiler immer den fehler bekommen das er einen konstanten ausdruck erwartet.
@flosoft danke für das ausführliche beispiel. ich habe jetzt mal die änderrungen gemacht allerdings bekomm ich jetzt an der pointer stelle in die andere klasse (res.m_pArray = myarray folgenden fehler: error C2440: '=' : cannot convert from 'CArray<TYPE>' to 'double *' with [ TYPE=double ]
ich hab das afxtempl.h in beiden klassen + header included. was kann ich falsch gemacht haben?
hoi also das erste hatte ich auch schon versucht aber mit der gleichen fehlermeldung. mit dem zweiten dazu gings dann. ich hab das & schon ein paarmal gesehen und weiß das es was mit pointern zu tun hat aber wirklich verstanden hab ichs nicht. kannst du mir das bitte nochmal genauer erklären was das macht und wie und wann man es einsetzt?
das problem war jetzt das das programm zwar lief aber in meiner listbox standen jetzt nur noch komische sachen drin (lauter nuller und 2-3 zahlen). mit dem festen array stand das drin was drin stehen sollte. irgendwas läuft also wieder mal schief bei mir aber was?
int* piZahl = NULL; //Zeiger auf Adresse NULL int iZahl = 5; //Vaiable mit Wert 5
//Da man einen Wert einem Zeiger nicht direkt zuweisen kann, sondern nur Adressen, //muß man die Adresse der Variabeln an den Zeiger übergeben. //Das macht man mit den Adressoperator '&'
piZahl = &iZahl;
//Will man jetzt den Wert des Zeigers haben muß man dereferenzieren mit '*'
*piZahl = 10; iZahl = *piZahl;
-- Gruß GuenniAtWorkDieser Post wurde am 01.06.2005 um 12:23 Uhr von GuenniAtWork editiert.