mehre Wörter in einer Variable speicern
-
Ich meine das so, du gehst in die Dlg.h rein und schreibst dort eine private Funktion nach der Message-Map:
Dlg.h :
public: CReminderDlg(CWnd* pParent = NULL); // standard constructor //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CReminderDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: HICON m_hIcon; ....... .. ....... .... .. //}}AFX_MSG DECLARE_MESSAGE_MAP() [b][u]private: void WriteArray();[/u][/b] }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_REMINDERDLG_H__7233C9D7_83FF_4912_8BB9_59180FA76CD8__INCLUDED_)
Jetzt gehst du in deine CProgrammDlg.cpp rein und kannst dort den Code in die Funktion reinschreiben :
... ..... void CProgrammDlg::WriteArray() { CStringArray strArray; strArray.SetSize(3); strArray[0] = "Hallo \n"; strArray[1] = "C++ "; strArray[2] = "Programmierer"; for(int i = 0; i < strArray.GetSize(); i++) { AfxMessageBox(strArray[i]); } }
So, jetzt kannst du von jeder anderen Funktion auf die WriteArray zugreifen !
einfach mit :
... WriteArray() ....
Falls es Probleme gibt einfach hier posten ...
Gruß
:: NoName ::
-
ok, danke, probier ich gleich morgen mal aus.
Und kann ich auch direkt auf strArray[0] statt auf WriteArray zugreifen?
Oder muss ich das dann so in die Klammern machen?
Also irgendwie so: WriteArray(strArray[0]) oder wie?
-
Ja, dann musst du in der Dlg.h folgendes schreiben :
private: void WriteArray(CString A, CString B, CString C);
Und dann in der CPP:
void CProgrammDlg::WriteArray(CString A, CString B, CString C) { CStringArray strArray; strArray.SetSize(3); strArray[0] = A; strArray[1] = B; strArray[2] = C; for(int i = 0; i < strArray.GetSize(); i++) { AfxMessageBox(strArray[i]); } }
Aufrufen :
WriteArray("Hallo ", "C++ ", "Programmierer!");
Gruß
:: NoName ::
-
aber jetzt muss ich ja wissen, wie viele Speicherplätze also Arrays ich brauche, oder nicht? Ok, ich reserviere vielleicht 50 speicherplätze, aber vieleicht werden nicht alle beschrieben.
Und wie kann ich auf nur z.B. strArray[1] zugreifen, dass er nur strArray[1] z.B. in einem Eingabefeld anzeigt?
-
supersass1 schrieb:
...Ok, ich reserviere vielleicht 50 speicherplätze, aber vieleicht werden nicht alle beschrieben.
Das würde ich nicht machen, soweit ich weiß kann es passieren das in dein Programm ein Speicherfehler entsteht !
supersass1 schrieb:
Und wie kann ich auf nur z.B. strArray[1] zugreifen, dass er nur strArray[1] z.B. in einem Eingabefeld anzeigt?
WriteArray("", "Bla Bla", "");
Gruß
:: NoName ::
-
also ich möchte mit
SetDlgItemText(ID_Feld, Variable)
einen der drei Werte ausgeben, indem ich statt "Variable" da irgendwas mit strArray[0] reinschreibe.
-
Ja, dann beutze es so wie es gemacht habe :
So muss es dann ausehen :
void CProgrammDlg::WriteArray(CString A, CString B, CString C) { CStringArray strArray; strArray.SetSize(3); strArray[0] = A; strArray[1] = B; strArray[2] = C; for(int i = 0; i < strArray.GetSize(); i++) { SetDlgItemText(ID_DEINER_EDIT_BOX, strArray[i]); } }
Und irgendwo in einer anderen Funktion schreibst du es dann so:
void CProgrammDlg::Test() { WriteArray("Hier für strArray[0]", "Hier für strArray[1]", "Und hier für strArray[2]"); }
Gruß
:: NoName ::
-
aber dann muss ich ja wieder wissen, wie viele Variablen ich beschreibe, und das weiß ich ja nicht.
also, ich brauch mind. 50 Variablen, die ich nicht alle auflisten will, also nicht x1, x2, x3, ... x50, ..., sondern irgendwie so x[50], aber da meintest du ja, dass man das nicht machen sollte, aber wie soll ich es sonst machen?
-
mit verketteten Listen, einfach mal danach suchen wurde schon ziemlich oft besprochen
-
Wer weiß. Vielleicht ist das Thema ja schon ein halbes Jahrhundert her. Ich habe schon nach dem Problem wo anders gesucht und nix gefunden. Also, wer noch weitere Hinweise weiß, sollte diese hier noch posten.
Und an den lieben Supersass1:
Du könntest hier ja mal deine endgültige Problemlösung hinschreiben, wenn du sie schon gefunden hast.
Tschau
MCNight
-
Wie soll ich ne Problemlösung hinschreiben, wenn ich gar keine Lösung zum Problem habe???
Ich suche immer noch wie ich nun genau diese verketteten Listen mache, da ich nicht wirklich was sinnvolles gefunden habe.
supersass1
-
schau mal hier:
http://www.ica1.uni-stuttgart.de/Courses_and_Lectures/C++/script/node26.html
oder hier :
http://wwwai.wu-wien.ac.at/~hahsler/CPPAG/stl/stl/download/stl_2.pdf
Sven