Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Übergabe von String

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
15.07.2005, 11:02 Uhr
~Marc91
Gast


Hi Leute

Bin gerade am C++ lernen und daher noch ziemlich Anfänger.

Ich lese mit Hilfe von CStudioFile ein .txt File Zeilenweise aus und möchte jede Zeile anschliessend aus einer anderen Klasse (z.B. in einer Tabelle) darstellen lassen.

Eine Zeile besteht aus Tracknummer, Trackname, Interpret und TrackDauer
--> 01 / Radio / Robbie Williams / 3:42

Die Zeilen kann ich ohne Probleme lesen (jede Zeile wird als String zurückgeben) und kann sie dann auch in einem TRACE ausgeben.

Nun zu meinem Problem:
Ich möchte mit einer Funktion wie ’getCDInfo(zeilen)’ aus meiner Klasse CreadFile die gewünschten CD Informationen holen. Ich weiss aber leider nicht, wie ich das anstellen kann. :-(

Ich muss doch die gelesenen Zeilen wieder temporär speichern und dann der Klasse zurückgeben, die dann die Informationen darstellen soll.
Als was speichere ich die String-Zeilen ab und wie gibt man sie dann zurück? Ist Pointer auch ein Thema?

Brauche eure Hilfe!

Gruss Marc
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.07.2005, 11:14 Uhr
Tommix



Hallo,
falls Du mit String CString meinst, kannst Du CStringArray als Speicher nehmen. Die gelesenen Zeilen fügst Du mit der Add Methode hinzu und lesen kannst Du wie in einem normalen Array mit [].

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2005, 11:45 Uhr
~Marc91
Gast


Ja habe mit String einen CString gemeint.

Habe das mit dem CStringArray gerade ausprobiert.
Das abfüllen und lesen aus dem CStringArray klappt.

Erstellt mit:

C++:
CStringArray myCDArray;



Abgefüllt mit:

C++:
myCDArray.Add(szCDLine);



Ausgelesen mit:

C++:
int nAnzahl = myCDArray.GetSize();
for(int k = 0; k < nAnzahl; k++)
{
     TRACE(_T("%s\n"),myCDArray.GetAt(k));
}



Aber wie übergebe ich nun das CStringArray der Klasse, die meine Methode aufruft???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.07.2005, 11:57 Uhr
Tommix



Naja ich kenne Deinen Programmaufbau nicht. Falls die Klasse (d.h. deren Instanz), die die Daten liest noch weiter besteht, kannst Du Ihr z.B. eine Funktion (public)

C++:
CString GetLine(int nr) const
{
    if ((nr >= 0) && (nr < myCDArray.GetSize())
        return myCDArray[nr];
    else
        return ""; // oder irgend eine Fehlerbehandlung
}


spendieren. Ansonsten ist es evtl. günstiger das Array in der Klasse zu haben, die die Daten benutzt und in der Lese-Klasse dann etwas in der Art

C++:
void FillArray(CStringArray& arr)
{
    // Array arr belegen wie vorher myCDArray
}


zu machen.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.07.2005, 13:49 Uhr
~Marc91
Gast


Hallo Tommix

1. Vielen Dank für deine bisherige Hilfe.

2. Zur Übergabe

Ich habe eine Klasse cdFile welche die Funktion ’getCDInfo()’ der Klasse cdFileReader aufrufen soll. Danach soll die Funktion mir das Array urückgeben.

Klasse ccdFile:

C++:
CStringArray myArray; // ist das richtig?
myCcdFileReader->getCDInfo(wert, myArray); // ist das richtig?

// Und anschliesend kann ich das Array 'myArray' gebrauchen?



Klasse cdFileReader

C++:
BOOL CcdFileReader::getCDInfo(int wer, CStringArray& myCDArray) // ist das richtig?
{
  bool status = true;
  CString szCDLine;
  CStringArray myCDArray;
  ...
  while(status)
  {
    status = readFile(szCDLine);
    myCDArray.Add(szCDLine);
    ...
  }
}



Verstehe ich das richtig?
Übergebe ich so nur die Referenz auf das CStringArray? Ich meine bei einer solchen Übergabe benötige ich nicht den Speicherplatz für zwei Arrays?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.07.2005, 13:56 Uhr
Tommix



Genau so meinte ich das. Es gibt dann nur ein Array, nämlich myArray in ccdFile und myCDArray ist "nur" eine Referenz darauf. Eine Übergabe per Copy ist in den CArray-Klassen gar nicht vorgesehen.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.07.2005, 14:05 Uhr
~Marc91
Gast


Dank Tommix. Du hast mier sehr geholfen.

gruss Marc
 
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: