Translate$ + Arrays

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Anbei mal eine Proc, die Strings in einem Array sucht und ersetzt.

    Ganz ohne Schleife :idee:


    Vielleicht kann es ja jemand brauchen.

  • coole Idee - sollte einiges an Zeitgewinn bringen, da die Move Funktionen ja wirklich schnell sind.

    Könnte ich ja mal mit etwas größeren Array testen (so ca. 200 000 - 500 000)

    Der Flaschenhals wird hier möglicherweise die Zeile mit Translate$() sein.


    Du beherrschst ja auch Assembler. Wär das für dich aufwändig, nur die Translate$() - Zeile mit Assembler Code zu ersetzen?

    Das wär dann schon eine richtige Rakete. Kriegst das hin?

    "zeile" sollte ja als zusammenhängender String im Speicher stehen - sonst wird's nix.

    Gruß Jörg


    Ideen gibt es viele - man muß sie nur haben...
    Win7-Pro / Linux Mint

  • War ja auch dazu gedacht. dass die Nutzer früherer

    Versionen auch was davon haben.

    Wie schnell das mit größerern Arrays geht, interessiert

    mich auch. Habe aber leider nicht soviele Daten parat.


    Assembler kann ich nur ganz wenig bis gar nicht.

    Da müsste man mal schauen, was es hier im Forum

    an ASM-Codes für XProfan gibt und evtl. etwas

    anpassen.


    Vielleicht liest ja auch mal Volkmar mit. Der kennt sich

    etwas besser mit ASM aus. Dem traue ich das durchaus

    zu, so etwas in Asm nachzubilden. Und einen Bytecode,

    der sich dann mit Call für die früheren Versionen nutzen

    lässt, gibt es ja dann obendrein.

  • So gut nun auch wieder nicht :lol:

    Das würde ich gar nicht erst versuchen, denn hier mußt Du mit einem zweiten Speicherbereich für die Ausgabe arbeiten, dessen Größe Du vorher überhaupt nicht abschätzen kannst. Schließlich kann jedes Vorkommen beliebiger Länge durch einen String einer anderen beliebigen Länge ersetzt werden. Heißt also, sich auch noch mit der dynamischen Speicherverwaltung rumzuschlagen. Und reguläre Ausdrücke dürfen da auch mitspielen. :(


    Gruß Volkmar

  • Naja, ich würde mal so sagen :

    Nach Jörg's Aussage wäre ja nur das Translate$() betroffen.

    Eine gewisse Vorarbeit könnten wir ja schon leisten, soll heißen,

    das Array in einen String mit Trenner zu schieben. Da hast du

    also nur den String. Und diesen dann mit ASM ala Translate$

    (suchen + ersetzen) zu bearbeiten.

    Ich dachte da z.B. an dein :

    Brackets(Text#, TextLänge%, Funktion%, AusgabePuffer#, AusgabePufferLänge%, Addr(KlammerPaar$))

    u. a.


    Da steckt ja schon eine gewisse Vorarbeit drin. Da wäre nur eine gewisse

    Modifikation notwendig. Wenn dir ein Bereich# lieber ist, kann man den

    String vorher auch in einen Bereich# schieben.

    Den modifizierten String/Bereich# kann man dann selber wieder in ein Array schieben.

  • Hier noch, wie man es mit der MoveListProc machen kann.


    Probier mal aus, was schneller ist.

    Nachteilig ist, daß man das Array nicht als Parameter übergeben kann.