Buenas programadores y no tan programadores,

Bueno, dudo que el titulo diga mucho, pero ahora os explico para que quede claro, seguramente sea algo relativamente sencillo, pero por mucho que le doy al coco no consigo hallar una manera de hacerlo. Bueno vamos a ello:

Quiero permitir una función que permita al usuario crear su propia pregunta, y guardarlo en un .ini, mas o menos en esta estructura;

[1] -- Esto seria la ID de la pregunta
p="¿Eres mayor de edad?" -- La pregunta
r1= "Si"
r2="No"

Bueno, hacer que creen la pregunta es fácil, la duda viene cuando el usuario quiera eliminar una pregunta, pongamos que crea 4 preguntas, por lo que habrán 4 ids, entonces al mostrar las preguntas solo tengo que poner un:
while ini_section_exists(ii) {
    //Código
    ii++;
}

Pero si elimina una pregunta, por ejemplo la 3, al llegar al 2, el código verá que no hay 3 y parará, no llegará al 4. Mientras escribía se me ha ocurrido poner en cada pregunta un "eliminado=false" y así en el while, si esta eliminado, ignorarlo, pero no seria muy limpio. Alguien sabría una solución mejor?

Gracias,
Un saludo

Creo que para eso sería mejor que usaras estructuras de datos en vez de simplemente archivos INI. Guardar las preguntas y respuestas en una lista (donde solucionarías el problema que tienes), y dentro de ella un arreglo o mapa con la pregunta y las respuestas.
alaberga regué el café.

BA:STFW&RTFM

El problema es que nunca he llegado a usar los ds_list y todo eso, ya que nunca me he visto en la obligación de usarlos, supongo que ahora si😅

Había pensado algo así:

Primero crea un script llamado array así:
[gml]
///array(val1, ..., valN);
var n = argument_count;
var s;
for(var i = 0; i < n; i++)
    s = argument;
return s;
[/gml]
Ahora, en cada evento que requieras:
[gml]
///Evento create de algún controlador
globalvar preguntas;
preguntas = ds_list_create();
[/gml]
[gml]
///Donde quieras añadir las preguntas
//Añade un arreglo a la lista, que contendrá una pregunta.
ds_list_add(preguntas,
    array(
        "La pregunta",
        1, //La respuesta correcta
        "Respuesta 1",
        "Respuesta 2",
        "Respuesta 3"

        /*
        Estos arreglos que se guardan en cada índice de la lista
        guardan los datos de la pregunta: El índice
  • sería el
            texto de la pregunta, el índice [1] sería la respuesta
            correcta (siendo el número 1 el índice [2]), y del índice
            [2] hacia adelante son las posibles respuestas.
            */
        ));
    /*
    Repite todo este código con tantas preguntas como necesites,
    obviamente modificando los datos de cada pregunta.
    */
    [/gml]
    [gml]
    ///Y cuando queras borrar una pregunta
    ds_list_delete(preguntas, 0); //Borramos la primera pregunta
    [/gml]
    La lista se usaría algo así:
    [gml]
    ///Por ejemplo, un ciclo que recorra todas las preguntas
    for(var i = 0; i < ds_list_size(preguntas); i++)
    {
        var pregunta   = preguntas[| i];
        var respuestas = "";

        for(var j = 2; j < array_length_1d(pregunta); j++)
        {
            /*
            Recorremos las respuestas, que se encuentran desde el
            índice [2] hasta el último.
            */
            respuestas += string(j - 1) + ". " + pregunta[j] + "#";
            /*
            Añadimos cada respuesta en una línea, de la forma:
            1. respuesta 1
            2. respuesta 2
            etc.
            */
        }
        show_message(
            "La pregunta es: " + pregunta[0] + "#" +
            "La respuesta es la número " + string(pregunta[1]) + "#" +
            "Las respuestas son:#" + respuestas

            /*
            Mostramos un mensaje que debería verse así:

            La pregunta es: La pregunta
            La respuesta es la número 1
            Las respuestas son:
            1. Respuesta 1
            2. Respuesta 2
            3. Respuesta 3
            */
        );
    }
    [/gml]

    Tal vez te sirva revisar las funciones de listas para entenderlas mejor:
    http://docs-gamemaker-es.blogspot.com.co/2017/09/estructuras-de-datos.html

    El código podría tener errores, no lo he probado aún.
alaberga regué el café.

BA:STFW&RTFM