Text aus TMemo in char*
-
Hi,
der Titel beschreibt mein Problem. Jetzt werden einige wieder sagen, schau in die FAQ. Hab ich gemacht, hab aber nichts für mich gefunden und Deadline ist heute. Also gebt mir bitte nur brauchbare Ratschläge.
Meine Absicht ist einfach nur den Text aus dem TMemo an einen char* zu übergeben. Hört sich einfach an, ist es aber nicht.
Momentan ist es so, dass ich damit arbeite:
int Error = InsertComment (MedKInfo->KInfoEdit->Text.c_str(), KINFO);
-> int InsertComment (char *QStrg, int Modus)
-> MedKInfo ist vom Typ TForm
-> KInfoEdit ist TMemoDas Problem ist, dass CodeGuard genau an der Stelle anspringt mit der Meldung:
Access in invalid memory
--Attempt to access 4Bytes at 0x00000000 + 752.Also woran könnte es liegen? Im Debugger-Fenster kann ich sehen, dass Werte in KInfoEdit enthalten sind.
-
Du bis dir sicher, dass du für QStrg genügend Speicher reserviert hast ?
-
@maam:
da hier ein call by Reference statt findet wird doch eh nur die adresse übegeben, von daher ist die anforderung von Speicher überflüssig
-
Nein, hab ich nicht gemacht. Aber wie soll ich denn das bei einem Funtionsaufruf machen? Schliesslich ist QStrg ein Parameter im Funktionskopf. Nach meinem Verständnis müsste der Speicher automatisch zur Verfügung gestellt werde. Berichtige mich, wenn ich daneben liege.
Ich hab jetzt auch noch mal den Versuch gemacht den Text aus dem TMemo in einen anderen Ansistring mit
zwStrg += MedKInfo->KInfoEdit->Text;
zu kopieren. Die Meldung von CodeGuard bleibt die gleiche. Also kann ja nur was mit KInfoEdit nicht stimmen.
Edit: War ich wohl wieder zu langsam.
-
Oh sorry, hast ja recht
Hab nicht drangedachtSORRY
-
Ich hab jetzt noch mal ein bisschen mit dem Text rumgespielt. Also ich kann einen String an Text übergeben mit
MedKInfo->KInfoEdit->Text = "blah,blah";
Aber, wenn ich versuche, dann drauf zu zugreifen, dann kommt wieder die Meldung von CodeGuard.
-
Maffe001 schrieb:
int Error = InsertComment (MedKInfo->KInfoEdit->Text.c_str(), KINFO);
Könnte das mal wieder an der Problematik des const-Zeigers liegen, den
c_str() zurückgibt?
Falls Du das noch nicht getan hast, schau mal in der BCB-Hilfe zu c_str()
nach. Dort ist auch ein Vorschlag, wie Du die Funktion korrekt verwendest.
Oder versuch mal die Suchfunktion zum Thema "c_str()".Gruß,
Alexander