Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Zeiger auf CString bzw. CStringArray

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 <
000
11.01.2005, 12:03 Uhr
mstank



Hallöchen!

Ich möchte einen Zeiger auf ein CString bzw. ein CStringArray aus der Ansichtsklasse - OnDraw - holen. Leider weiß ich nicht wie!

Wenn ich CString* oder *Data verwende, heißt es immer, daß ein eine Konvertierung nicht nöglich sei. So Kompiler sind doch recht uneinsichtige Prog's.

Wer kann mir helfen?

THX Markus
--
Hier spricht die dunkle Seite der Macht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.01.2005, 12:31 Uhr
Th



Poste mal dein Beispiel, dann ist es leichter zu erklären ... und zu verstehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.01.2005, 12:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


versteh ich nicht so ganz wie du dir das vortsellst... zeig mal ein wenig code...

Bearbeitung:

verdammt schon wieder zu spät...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 11.01.2005 um 12:31 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.01.2005, 09:33 Uhr
mstank



Hallo alle zusammen!

Hier der Code, den ich verwenden möchte:

Die Variable:

C++:
private:
    CString sMsg;



Die Member_Funktion OnTestStart in der Dokumentenklasse, die ich über das Menü der SDI aufrufe:


C++:
[void CRS232SerialComDoc::OnRs232Lesen()
{
    // TODO: Code für Befehlsbehandlungsroutine hier einfügen


    //Versuch einer fortlaufenden while-Schleife, zum gesteuerten Beenden
    //des Einlesens der NMEA0183-Daten

    CSerialCom Serial;

    m_Beenden = FALSE;


        //Open Port: COM1 für Notebook, COM2 für PC-HOME, PC-FH evtl. COM1
        if (!Serial.OpenPort("COM1"))
        {
            AfxMessageBox("Failed to open port!");
        }

        //Configure COM1 für Notebook, COM2 für PC-HOME, PC-FH evtl. COM1
        Serial.ConfigurePort(4800,          //Baud Rate
                             8,             //Data Bits
                             FALSE,         //Has Parity
                             NOPARITY,      //Parity Bits
                             TWOSTOPBITS    //Stop Bits
                            );

        //Read data from GPS
        char Data[100]="\0";

        BYTE DataByte='\0';
        int nIndex=0;

        //Obtaining information from GPS character by character
        //Note: NMEA0183 sentences will finished by "\r\n" characters!
        BOOL Return=Serial.ReadByte(DataByte);
        while (DataByte!='\r' && DataByte!='\n' && Return==TRUE)
        {
            Data[nIndex]=DataByte;
            nIndex++;
            Return=Serial.ReadByte(DataByte);
        }
            
        Data[nIndex++]='\r';
        Data[nIndex++]='\n';
        Data[nIndex++]='\0';

        //Remove garbage characters if any exists!
        nIndex=0;
        while (Data[nIndex]!='$' && nIndex<100)
            nIndex++;

        //CString sMsg;  fällt hier weg, da nun als Member-Variable deklariert

        //Umwandeln des char-Array in ein Character-String, damit der
        //Inhalt sowohl von der MessageBox, als auch von TextOut
        //gelesen werden kann
    for (int i=0; i<100; i++)
        sMsg.Format("%s", (const char*)Data);
        AfxMessageBox(sMsg);


    Serial.ClosePort();

}/cpp]

Und nun die Ausgabe in OnDraw:


C++:
void CRS232SerialComView::OnDraw(CDC* pDC)
{
    CRS232SerialComDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen


const CString *pData = pDoc->GetData();
pDC->TextOut(0,0, (const CString*)pData);

}



Dazu habe ich noch Anmerkung, daß die Daten ständig eingelesen werden. Jedesmal, wenn ein CString erzeugt ist, soll dieser angezeigt werden.

Gruß Markus
--
Hier spricht die dunkle Seite der Macht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.01.2005, 12:53 Uhr
Tommix



Hallo,
möglicherweise habe ich die Frage nicht ganz verstanden, aber mach doch einfach:

C++:
CString CRS232SerialComDoc::GetData() const
{
    return sMsg;
}

void CRS232SerialComView::OnDraw(CDC* pDC)
{
// ...
    pDC->TextOut(0, 0, pDoc->GetData());
}



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: