wie krieg ich den fehler weg????????
-
hallo erstmal
hab eine billige datenbank entwickelt mit access in will einen neuen daten satz hinzufügen hab auch ein buch zur ahnd aber da gehen die ja auf evtl. auftrettende Fehler nicht ein also kann mir jemand helf der fehler ist laute:G:\MY_PRJECTZ\datenbank\datenbankView.cpp(147) : error C2666: '+' : 4 overloads have similar conversions
kann mir zwar denken was das heisst aber wie ich es behebe da habe ich echt KEIN PLAN
-
Zeig mal die Zeile. Er weiß nämlich nicht, welche Version von + er nutzen soll.
-
das ist die zeile hoffe du kannst damit was anfangen
CString m_lNewID = m_pSet->GetMaxID() +1;
-
naja dein m_lNewID ist vom typ CString, deswegen kanns glaub net klappen
in der msdn nehmen die
var nDispID = window.external.FindSymbol("DISPID"); if (!nDispID.length) { nDispID = GetMaxID(oInterface) + 1; window.external.AddSymbol("DISPID", nDispID);und du kannst nicht in einem CString einfach ein +1 machen. strings und ints sind 2 paar stiefel. und die getmaxid ist glaub vom typ hex kannste also auch nicht einem CString zuweisen

ich hoffe der msdn text hilft dir, wenn nicht dann schau dir komplett bsp an in der msdn
-
im beispiel haten sie es mit long gemacht aber als ich dei datenbank erstellt habe wollte er kein long deshalg gab es probleme nun hab ich alles wo long war auf cString gemacht und es war nur noch 1 fehler deswegen dachte ich das währe die lösung aber naja hab dank muss mal schauen wie ich das jetzt umwurschtel
-
nimm halt long und dann machst ein cast oder so keine ahnung
nur was mich stuzig macht ist folgendes
also das hier geht nicht
CString ID = "hallo" ; ID = ID + 1 ; / geht netdas hier geht aber
CString ID = "hallo" + 1; // ID ist jetzt dann "allo" also geht hmmm :confused:weis jemand warum???
-
Das ist wohl ein Überbleibsel von C.
Wenn du einen char* hast und dann einen hochzählst, gehst du einen char weiter. Also einen Buchstaben.
... verstanden?
Was gibt GetMaxID() zurück?
Also auf einen CString eine Zahl draufzählen ist keine gute Idee.
CString in Zahl wandeln geht mit atoi, vielleicht hilft es. Ich muss jetzt offline, daher die Kurzfassung.
-
estartu_de schrieb:
Das ist wohl ein Überbleibsel von C.
Wenn du einen char* hast und dann einen hochzählst, gehst du einen char weiter. Also einen Buchstaben.
... verstanden?
nicht ganz
das ich dann in der ascii tabelle ein zeichen weitergehe ist klar
aber der loscht ja ein zeichen am anfang und geht ja kein zeichen weiter hmmm
sprich "hallo" + 2 ergibt dann "llo"
-
Schon ganz.
Grob gesagt: Mit +2 setz du einfach den Zeiger 2 Zeichen weiter.
-
Hallo,
das ist ganz einfache Zeiger-Arithmetik, "hallo" wird vom Compiler in einen Zeiger auf const char "umgewandelt". Addition eines Wertes n bedeutet dann, daß der Zeiger n * sizeof(char) Positionen weiterbewegt wird, womit das Verhalten erklärt ist (es werden also keine Zeichen gelöscht, sondern lediglich die Anfangsposition für die Initialisierung des CStrings ist eine andere). Das gleiche kann man auch so erreichen (nur eine Spielerei, zeigt nur, was man alles treiben kann):
CString tst = &("hallo"[2]);auch hier wird in tst die Zeichenkette "llo" stehen

MfG