Dynamisch int-Felder erzeugen
-
Ähm... also den Variablennamen wirst du wahrscheinlich nicht zur Laufzeit erzeugen...
Du kannst aber Variablen an sich schön dynamisch anlegen.. also musst du nicht vorher wissen ob du 10 oder 10000 Ints brauchst.
Oder vielleicht kapier ich die Frage auch net richtig
-
Hm, hast Recht. Danke für die Hilfe, jetzt komme ich schon zurecht.
-
Hallo
schau dir mal DynamicArray im Builder an
- DynamicArray
- F1-Taste
- Beispiel (unten)MfG
Klaus
-
Shit, ich komme doch nicht zurecht. Um bei Deinem Beispiel zu bleiben. Ich erstelle da also ein dynamisches Feld. Wie kann ich auf diese Art mehrere Felder erzeugen. Irgendwie klappt es nicht. Ich habe versucht es so zu machen:
if(Anzahl==1) int** geraet1;
if(Anzahl==2) int** geraet1, geraet2;...
Ich kann dann die Namen nicht weiter benutzen, der Compiler meckert, dass er die Geräte nicht findet!!??
"Du kannst aber Variablen an sich schön dynamisch anlegen.. also musst du nicht vorher wissen ob du 10 oder 10000 Ints brauchst."
Wie kann ich also mehrere Felder auf diesem Wege erzeugen?
-
Ich glaube da ist ein kleiner Denkfehler drin.
Du kannst Variablennamen nicht während der Laufzeit anlegen.
Du kannst aber locker wie WebFritzi es gemacht hat ein dynamisches Array aus Integerwerten anlegen.
Die Namen mit denen du dann Programmintern zugreifst sind dann aber immer gleich.Mist.. ich weiss nicht wie ich das erklären soll.. ausser mit einem Verweis auf Zeigerarithmetik und Variablendeklarationen unter C++.
-
Edit: (muss mich mal registrieren...)
Die zweite Zeile ist nicht ganz richtig.. aber auf seine Fragestellung gemünzt kommt es doch einigermaßen hin.
-
Den Variablennamen legst du im Vorfeld fest (siehe WebFritzi: feld)
Die größe des Feldes kannst du dann so wie WebFritzi es gezeigt hat erzeugen.
Dein Problem ist dann nur noch die Feldposition einem bestimmten Code bzw. Ereignis zuzuordnen. Über z.Bsp.: feld[12][5] kannst du aber eine genaue Positionierung vornehmen. Wobei das Format dann in etwa so aussehen könnte:
feld[Geräteidentifizierung][Index der zu speichernden Daten] .
-
Jungs, Ihr gebt Euch echt Mühe. Mit einem Feld ist es ja wunderbar, was ist aber wenn ich mehrere brauche?? Muß ich di ealle im Vorfeld deklarieren?? Ich weiss doch nciht wieviele ich brauche? Die Höchstgrenze liegt bei 64. Wenn ich aber alle 64 vorher festlege und ich aber dann doch nur 5 brauche, nimmt das nicht zu viel Speicher weg??
-
Ich finde das lustig,
genaus das selbe hatte ich vor 2 Tagen gefragt,
warum benutzt ihr nicht die suche ?
-
@mango:
Du kennst die Anzahl deiner Felder im Voraus nicht? Kein Problem. Dann erzeuge halt dynamisch ein paar Felder. Du brauchst halt einen Array vom Typ int**.int feld_anzahl = 35; int*** feld_array; feld_array = new int**[feld_anzahl];
So, und jetzt kannst du Speicher für jedes der Felder feld_array[0], ..., feld_array[34] allokieren. Danach ist es dann so: Den Eintrag in der x-ten Zeile und y-ten Spalte des i-ten Feldes ist (feld_array[i])[x][y]. Ich weiß nicht genau, ob die Klammern nötig sind. Hab sowas noch nie machen müssen.