Funktionen...


  • TheMillenium
  • 1984 Aufrufe 4 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Funktionen...

    Wie kann ich eine Funktionschreiben, die unendlich Parameter aufnehmen kann und wie greife ich dann auf die einzelnen Parameter zu...gibt es dann eine Funktion die sagen kann parameter[0] , parameter[1],... und so in der ARt.

    Ich brauche es für eine Funktion, mit der man die Tastaturbelegung flexibel ändern kann...

    Code:

    PHP-Quellcode

    1. //Aktionen festlegen
    2. //AB = AktionButton
    3. In_Datei_abspeichern(
    4. int AB_FORWARD = GetButton(),
    5. int AB_BACKWARD = GetButton(),
    6. int AB_LEFT = GetButton(),
    7. int AB_RIGHT = GetButton(),
    8. int AB_FIRE = GetButton(),
    9. int AB_EXIT = GetButton(),
    10. );
    11. //....
    Alles anzeigen



    GetButton() erzeugt eine Texteingabe drücke eine Taste und liefert den Wert für die Taste zurück der dann in AB_FORWARD, ABD_BACKWARD,... gespeichert wird.

    Ich möchte also alle Variablen die da oben mit AB_ beginnen in eine Textdatei speichern und am Anfang soll das Programm dann alle Belegungen auslesen...

    So Feuerstein, beweise, dass du mit Recht hier Moderator bist. Du weist ja ein Mod muss über alles in den Bereichen in denen er eingeteilt Bescheid wissen...Mal schauen, ob du meine "Aufnahmeprüfung" bestehst... :)

    Cu TheMillenium
  • vielleicht solltest du mal die gewünschte sprache dazuschreiben :P ;)

    am einfachsten wäre das mit arrays, nur leider kann man an funktionen keine arrays übergeben :(

    also musst du das ganze mit zeigern machen.

    bei unendlichen tastaturabfragen gibt es - je nach sprache - einen befehl um mit dynamischen speicherplätzen zu arbeiten ( free, new, .. )

    das speichern in nem ascii file kannst du ja bestimmt?!?
  • Hi Millenium,

    soweit ich weiss, habe ich dir schon einmal eine Programmierfrage zu deinem GTA3-Modding Projekt beantwortet. Reicht das denn nicht als ''Aufnahmeprüfung''? :D (Thread).
    Ausserdem habe ich nie behauptet, dass ich ''Bescheid weiss''. Ich habe in einigen Sprachen lediglich Grundkenntnisse. (Man kann ja auch nicht alle Bibliotheken kennen, oder ?). Transmitter dagegen beeindruckt mich immer wieder durch seine Fachkenntnisse :)

    Zu deiner aktuellen Frage:

    Transmitter meinte ja, das man Arrays nicht übergeben kann. Ich denke aber schon das das in PHP geht, kann es aber leider im Moment selbst nicht ausprobieren, da ich derzeit kein PHP installiert habe und es mir per Modem nicht unbedingt saugen möchte. Also muss ich es so probieren:

    Wenn deine Daten alle vom gleichen Typ sind (in deinem Fall dann wohl eine Kombination von AB-Namen mit int Werten), dann solltest du die Daten VOR der Übergabe in einem Hash speichern und dann deiner Funktion den kompletten Hash übergeben. Mit der foreach - Anweisung kannst du den Hash dann bequem auslesen. PHP erweitert den Hash auch dynamisch zur Laufzeit, wenn du mal neue Daten hinzufügen must.

    Ein Hash heist in PHP auch ''assoziatives Array'' und wird folgendermassen gebildet:

    PHP-Quellcode

    1. $zu_uebergebendes_Array['AB_FORWARD'] = GetButton();
    2. $zu_uebergebendes_Array['AB_BACKWARD'] = GetButton();

    usw.

    das Array kannst du dann übergeben mit:

    PHP-Quellcode

    1. Uebergabefunktion($zu_uebergebendes_Array);


    sollte das aus dem von Transmitter genannten Grund nicht klappen, wirdst du dich nicht davor drücken können, die Daten entweder (wie von TM vorgeschlagen) erst in eine ASCII-Datei zu sichern und davon wieder einzulesen, - oder eine eigene Klasse AB_Keycodes als verkettete Liste oä. zu implementieren und diese Liste dann an deine Funktion zu übergeben.

    Leider kann ich dir kein verifiziertes Codebeispiel liefern, da ich wie bereits erwähnt, derzeit keinen PHP-Interpreter installieren kann. :(
  • ja stimmt schon, dass man nciht überall bescheid wissen kann!!!:D

    Aber eigentlich meinte ich, wie man das in C++ codet...


    HAb ich wohl vergessen hin zuschreiben...:rolleyes:


    Cu TheMillenium
  • Wie TM auch geschrieben hat, wirst du das dann mit Zeigern machen müssen. Da aber in C/C++ jede Array-Variable ein Zeiger auf das erste Element des Arrays selbst ist, stellt das wohl kein Problem dar :). Bei Strukturen und Klassen gibt es ja den this-Zeiger.

    Du hast dann 2 Möglichkeiten.

    a) Entwickelst du eine Struktur oder Klasse, die sowohl einen String (für die Bezeichnung zB ''AB_FORWARD" enthält, als auch den entsprechenden Tastencode (int, char oder String ?) und einen Zeiger auf das nächste Objekt (verkettete Liste) und übergibst dann deiner Funktion den Zeiger auf das erste Element der Liste.

    b) baust du 2 Arrays auf, eins für die Bezeichnungen und eines für den Tastencode, die du mit derselben Zählvariable durchläufst. Wie TM oben schon schrieb, must du dabei allerdings für jedes neue Element neuen Speicher anfordern (allozieren), zB mit new und free. Dann übergibst du einfach die beiden Zeiger an deine Funktion ...

    Viel Erfolg :)

    EDIT: Schon lange nichts mehr passiert hier. Scheint sich wohl erledigt zu haben. Wenn nicht - kurze PN. soweit:

    --- CLOSED ---