Hilfe bei VBA in PHP konvertieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Hilfe bei VBA in PHP konvertieren

    Hallo Forumler!

    Habe den Code einer VBA Funktion und bräuchte diesen umgeschrieben als PHP Funktion, kenne mich dafür aber leider zu wenig aus mit beiden Programmiersparchen und würde mich daher freuen, wenn mir hier jemand weiterhelfen könnte

    Hatte auch schon emsig gegooglet, ob es hierfür ja vielleicht ein Programm gegeben hätte, das so was automatisch macht, hab aber leider nix gefunden

    Der VBA Code sieht so aus:

    Code:
    Private Function all_variations(Zeichenmenge As String, laenge As Integer) As String()
            Dim menge_tmp As Variant
            Dim gesamtmenge() As String
            Dim wort As Variant
            Dim zeichen As Variant
            Dim i As Integer, j As Integer
            ReDim gesamtmenge((Len(Zeichenmenge) ^ laenge) - 1)
            If laenge > 1 Then
                i = 0
                menge_tmp = all_variations(Zeichenmenge, laenge - 1)
                For j = 1 To Len(Zeichenmenge)
                    For Each wort In menge_tmp
                        gesamtmenge(i) = Mid(Zeichenmenge, j, 1) & wort
                        i = i + 1
                    Next wort
                Next j
            Else
                ' Länge = 1, Gesamtmenge ist Zeichenmenge^1 groß = len(Zeichenmenge)
                For i = 1 To Len(Zeichenmenge)
                    gesamtmenge(i - 1) = Mid(Zeichenmenge, i, 1)
                Next i
            End If
            all_variations = gesamtmenge
    End Function

    Ja und umgewandelt sollte das ne PHP Funktion alla

    Code:
    function Schreibweisen() {
    ...
    ...
    ...
    }
    werden.

    Würde mich wirklich sehr freuen, wenn mir da jamand weiterhelfen könnte auf die Schnelle.

    Viele Grüße
    Elliot

  • #2
    Ist leider das falsche Forum, daher verschieb ich es mal.

    Peter

    PS: Wenn du bereit bist, dafür Geld auszugeben, so poste das bei den Jobangeboten
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Welche Art von Strings möchtest du verarbeiten?
      PHP-Strings können nicht mit Unicode umgehen.
      Man muss dafür Erweiterungen benutzen, die nicht in jeder PHP-Installation vorhanden sind.
      Das würde die Sache verkomplizieren.
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar


      • #4
        Hallo fireweasel,

        danke erstmal für deine Antwort

        Mh, da fragst du mich jetzt aber was. Ich hab mal bei meinem Hoster (hosteurope.de) nachgeschaut und dort läuft die PHP-Version 5.2.12 (Zend: 2.2.0).

        Hilft das dir evtl. weiter? Wäre natürlich gut, wenn das dann schon irgendwie universell programmiert wäre auch für PHP 4, weil wer weiss, wenn man mal den Hoster wechseln müsste.

        Gruß
        Elliot

        Kommentar


        • #5
          PHP 4 ist seit fast 2 Jahren offiziell tot. Es ist sehr leichtsinnig ein System zu verwenden, bei dem 2 Jahre keine Sicherheitsupdates eingespielt wurden und sowas sollte man auch nicht unterstützen.

          Kommentar


          • #6
            @h3ll

            Wenn das so ist, dann gebe ich dir natürlich vollkommen Recht. Kenne mich da zu wenig aus und dachte, dass die vielleicht immer noch verwendet wird, weil ich schon öfter mal was von Version 4 gelesen hatte.

            Klar, wenn die dann eh nicht mehr eingesetzt wird, müsste das auch nicht kompatibel für PHP 4 geschrieben sein.

            Gruß
            Elliot

            Kommentar


            • #7
              Zitat von elliot Beitrag anzeigen
              Wenn das so ist, dann gebe ich dir natürlich vollkommen Recht. Kenne mich da zu wenig aus und dachte, dass die vielleicht immer noch verwendet wird, weil ich schon öfter mal was von Version 4 gelesen hatte.

              Klar, wenn die dann eh nicht mehr eingesetzt wird, müsste das auch nicht kompatibel für PHP 4 geschrieben sein.
              Sicher wird PHP 4 noch eingesetzt. Aber nur von Leuten, die

              a) keine Ahnung haben

              oder

              b) denen das Risiko egal ist.

              Kommentar


              • #8
                Zitat von elliot Beitrag anzeigen
                ... Ich hab mal bei meinem Hoster (hosteurope.de) nachgeschaut und dort läuft die PHP-Version 5.2.12 (Zend: 2.2.0).

                Hilft das dir evtl. weiter? ...
                Nicht wirklich. Hilfreicher wäre gewesen, per PHP-Info nachzuprüfen, ob die mbstring- oder die iconv-Erweiterung installiert sind. Aber deine Funktion scheint auch mit Single-Byte-Kodierung auszukommen. Also stellt das kein Problem dar.

                Wäre natürlich gut, wenn das dann schon irgendwie universell programmiert wäre auch für PHP 4, weil wer weiss, ...
                Ich sehe jetzt da nichts, was in PHP4 und PHP5 unterschiedlich gehandhabt werden müsste. Die beiden Versionen unterscheiden sich vor allem im Bereich objekt-orientierte Programmierung. Die wird hier nicht gebraucht.

                Hast du mal ein paar Beispiel-"Zeichenmengen" und die passenden Rückgabewerte, die deine Originalfunktion dazu liefert?

                Ich habe zwar auf die Schnelle eine Umsetzung gebaut, aber die macht nicht ganz das, was ich mir vorgestellt hatte.

                PHP-Code:
                // dies ist quasi eine 1-zu-1-Umsetzung, 
                // einigen VB-Unsinn kann man in PHP weglassen,
                // aber erstmal muss das richtig funktionieren ...
                function all_variations(
                    
                $zeichenmenge,
                    
                $laenge
                ) {
                    
                $menge_tmp '';
                    
                $gesamtmenge '';
                    
                $wort '';
                    
                //$zeichen = '';
                    
                $i 0$j 0;
                    
                // ReDim gesamtmenge((Len(Zeichenmenge) ^ laenge) - 1   

                    
                if ($laenge 1) {
                        
                $i 0;
                        
                $menge_tmp all_variations($zeichenmenge$laenge 1);
                        for (
                $j 0$j strlen($zeichenmenge); ++$j) {
                            
                //foreach ($menge_tmp as $wort) {
                            
                for ($k 0$k strlen($menge_tmp); ++$k) {
                                
                $wort $menge_tmp[$k];
                                
                //$gesamtmenge($i) = substr($zeichenmenge, $j, 0) . $wort;
                                
                $gesamtmenge substr_replace(
                                      
                $gesamtmenge
                                      
                substr($zeichenmenge$j1) . $wort
                                      
                $i
                                
                );
                                
                $i $i 1;
                            }
                        }
                    }
                    else {
                        
                // Länge = 1, Gesamtmenge ist Zeichenmenge^1 groß = len(Zeichenmenge)
                        
                for ($i 0$i strlen($zeichenmenge); ++$i) {
                            
                //$gesamtmenge($i - 1) = substr($zeichenmenge, $i, 1);
                            
                $gesamtmenge substr_replace(
                                
                $gesamtmenge
                                
                substr($zeichenmenge$i1), 
                                
                $i 1
                            
                );
                        }
                    }
                    return 
                $gesamtmenge;

                Für all_variations('abc', 3) gibt es 'aaaaaaabbbbbbbcccccccc' als Rückgabewert. Das kann nicht so gewollt sein. Ich hätte mir eher sowas wie 'aaaaabaacabaabbabcacaacbacc[...]ccc' vorgestellt ...

                Möglicherweise hab ich auch die Stellen mit substr_replace(..., substr()) falsch umgesetzt. PHP zählt Zeichenpositionen Null-basiert, VB ist da anderer Meinung.
                Zuletzt geändert von fireweasel; 02.05.2010, 19:50.
                Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                Kommentar


                • #9
                  Hallo fireweasel,

                  echt nett von dir, dass du mir da weiterhilfst

                  Also die Funktion soll mir alle erdenklichen Schreibweisen einer Wort- bzw. Zeichenkombination zurückgeben. Ich geb dir am besten mal ein Beispiel:

                  Angenommen ich übergebe der Funktion folgendes:

                  HL 1040 D e

                  Dann soll mir die Funktion zurückgeben:

                  HL 1040 De,HL 1040D e,HL 1040De,HL1040 D e,HL1040 De,HL1040D e,HL1040De


                  Egal also was ich der Funktion als Wert übergebe, sie soll mir immer alle möglichen Schreibweisen zurückliefern. Das oben war jetzt wie gesagt nur ein Beispiel, die Zeichenkombination könnte auch größer oder kleiner sein, wie z.B nur HL 5500 e

                  Es wäre jetzt aber nicht schlimm und sogar wünschenswert, wenn der eigentliche Begriff (im Beispiel HL 1040 D e) auch nochmal im Rückgabewert enthalten wäre, was die VBA-Funktion - wie man oben am erstellten Beispiel auch sieht - nicht macht.

                  Hoffe ich hab das einigermaßen verständlich erklärt und du weißt, was ich meine. Wenn nicht, einfach nochmal nachfragen.

                  Ansonsten sieht die Funktion schonmal nicht schlecht aus Ich denke, ihr müsste aber wohl nur ein einziger Wert übergeben werden, die "3" in deinem Beispiel könnte dann wohl entfallen?

                  Ich habe die Funktion übrigens auch mal in Perl geschrieben gekriegt, vielleicht kannst du da mehr rauslesen? Für mich ist der Perl Code aber nochmal einen drauf und absolut Böhmische Dörfer

                  Grüße
                  Elliot

                  Kommentar


                  • #10
                    Hallo elliot,

                    meinst du sowas wie in diesem Thread? http://www.php-resource.de/forum/php...tml#post634315

                    Gruß,

                    Amica
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      @AmicaNoctis

                      Ja, so wie das aussieht, kommt das der Sache ziemlich nah. Allerdings bräuchte ich das ohne array, also so:

                      $begriff = "HL 1040 D e";
                      $ergebnis = all_variations($begriff);

                      Wenn ich dann $ergebnis ausgeben lassen würde, sollte das raus kommen:

                      HL 1040 D e,HL 1040 De,HL 1040D e,HL 1040De,HL1040 D e,HL1040 De,HL1040D e,HL1040De

                      Gruß
                      Elliot

                      Kommentar


                      • #12
                        Zitat von elliot Beitrag anzeigen
                        Allerdings bräuchte ich das ohne array
                        Ja dann erzeugst du aus dem Array halt deine gewünschte Ausgabe, bspw. per implode ...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          @wahsaga

                          Wenn ich wüsste wie das ginge, hätte ich ja dieses Thema nicht eröffnet
                          Ich kenne mich "leider" in VB noch in PHP sonderlich gut aus

                          Deshalb bräuchte ich sozusagen halt was Mundfertiges für Dummies

                          Gruß
                          Elliot

                          Kommentar


                          • #14
                            Zitat von elliot Beitrag anzeigen
                            Deshalb bräuchte ich sozusagen halt was Mundfertiges für Dummies
                            Da du damit leider nicht das PHP Handbuch mit seinen vielen Beispielen und Anwenderkommentaren zu meinen scheinst, solltest du dir dessen bewusst sein, dass Anfänger die nach kostenlosem, fertigem Code fragen immer etwas wie Schnorrer wirken.

                            Ich habe die in dem anderen Thread beschriebene Funktion in der Schublade liegen, bin aber irgendwie gerade nicht überzeugt, warum ich sie dir schenken sollte. Du kannst ja mal versuchen, die Beschreibungen aus dem anderen Thread umzusetzen und deinen Code zu posten. Dann helfe ich dir damit. So hättest du wenigstens selbst auch was dazugetan und nochwas dabei gelernt.

                            Gruß,

                            Amica
                            Zuletzt geändert von AmicaNoctis; 03.05.2010, 11:59.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              @AmicaNoctis

                              Also ein Schnorrer bin ich mal auf gar keinen Fall, auch wenn das jetzt so den Eindruck auf dich haben sollte! Meine tägliche Arbeitszeit beträgt nebenbei bemrekt im Schnitt übrigens an die 12 Stunden...muss mir da also wirklich nicht nachsagen lassen, dass ich bequem bin.

                              Wenn ich etwas dazu beitragen könnte, dann würde ich das defintiv auch tun !!! Ich bin aber nunmal kein Programmierer und brauche PHP-Kentnisse in meinem Beruf nicht, weshalb es für mich in diesem Fall einfach in keinem Verhälnis stehen würde, mich wie lange hinzusetzen und PHP zu lernen, nur um jetzt diese an sich kleine Funktion zu schreiben. Und was man nicht braucht, vergißt man dann bekanntlich auch wieder ziemlich schnell.

                              Deshalb hab ich mir hier im Forum Hilfe gesucht, weil es Leute gibt, die das gelernt haben und das viel viel besser können als ich. Wobei aber ja keiner gezwungen ist mir zu helfen und ich verlange das auch nicht.

                              Gruß
                              Elliot

                              Kommentar

                              Lädt...
                              X