Tabulator (\t)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,


    ich möchte einen Dialog mit Tabellen erstellen, bei dem Werte aus einer Datenbank gelesen werden,
    und diese dann in die Tabelle gelistet werden.


    Die Kategorien unterteile ich mit \t.


    Das Problem ist allerdings, dass sobald ein ausgelesener Wert länger (von dem Platz, nicht von der Zeichenlänge)
    ist, rückt die ganze Spalte eins zuviel nach rechts.


    Spoiler anzeigen
    Richtig:


    Danke im Vorraus.

  • oh Daran hab ich jetzt garnicht gedacht :D


    was aber gehen müsste, jedoch Kompliziert ist


    von Jeden Buchstaben die Breite auslesen, denn Addieren (denn hast du da die gesammte Länge von dem Wort)
    und dann mit ein switch einfach die einzelden Länge ab gehen
    so wie ich es vll noch versuchen würde

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • Da kannst du nur eins machen: Pixel zählen. Lass dir alle Buchstaben und Zahlen in einem Dialog ausgeben, nimm ein Bildverarbeitungstool wie gimp und zähle dann durch größten Zoom die Pixel.


    Ein Tabulator hat 40 Pixel, für jede 40 Pixel also ein Tabulator weniger.


    Und noch was: Bei Full HD Auflösung sind die Pixelbreiten anders als bei den anderen.


    Anschließend gehst du Buchstabe für Buchstabe deine textzeile durch (Script: schleife) und lässt dir die Anzahl der Pixel bis zu dem Punkt ausgeben an dem du den Tabulator brauchst.


  • strlen würde nicht funktioninieren.


    Ob ich nämlich in der zweiten Spalte "iiiiiiii" oder "MMMMMMMM" habe, macht einen großen Unterschied.


    Ich hab dir mal solch eine funktion geschrieben


    stock ConvertDialogString(string[]){
    new Count[2];
    for(new i,x; ; ++i){
    switch(string[i]){
    case '\n':{
    printf("%d",(i - x));
    if((i - x) > Count[0])Count[0] = (i - x);
    x = i;
    } case EOS:{
    if((i - x) > Count[0])Count[0] = (i - x);
    break;
    }
    }
    }
    for(new i,x=-1; ; ++i){
    switch(string[i]){
    case ' ' :Count[1]= i;
    case '\n':{
    if((i - x) < Count[0])for(; 0 != (Count[0] - (i - x)); ++i)strins(string,"\32;",Count[1],1);
    x = i;
    } case EOS:{
    if((i - x) < Count[0])for(; 0 != (Count[0] - (i - x)); ++i)strins(string,"\32;",Count[1],1);
    break;
    }
    }
    }
    return 1;
    }





    new string[200]="1. Dennis 12.01.1992\n2. Hansmeierdieter 12.01.1992\n3. Gottlob 12.01.1992";
    ConvertDialogString(string);
    printf(string);


    //edit


    Das wäre ein kleine kopie von deinem dialog vom Aufbau her



    new string[200]="ID Name Datum\n1. Dennis 12.01.1992\n2. Hansmeierdieter 12.01.1992\n3. Gottlob 12.01.1992\n4. Wal 12.01.1992";
    ConvertDialogString(string);
    new x = strfind(string,"Datum",false);
    strdel(string,x-5,x);
    printf(string);