Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mal wieder Delphi nach PHP Probleme (https://www.delphipraxis.net/201420-mal-wieder-delphi-nach-php-probleme.html)

DieDolly 20. Jul 2019 15:22


Mal wieder Delphi nach PHP Probleme
 
Ich habe diesen Codeschnipsel. Am Ende sollte s1 in etwa 50 bis 70 Zeichen lang sein.
Bei meinem PHP-Versuch ist der String am Ende aber so lang, dass selbst Firefox Probleme mit der Anzeige bekommt. Also der verlängert sich stetig exponentiell wie es scheint.

Weiß wer Abhilfe?

Delphi
Delphi-Quellcode:
s1 := aAlphabet;
 s2 := '';
 for i := 1 to Length(ss) do
  begin
   x := Pos(ss[i], s1);
   if x > 0 then
    s1 := Copy(s1, 1, x - 1) + Copy(s1, x + 1, Length(s1));
  end;
PHP
Code:
  $s1 = $alphabet;
  $s2 = '';
  for ($i = 0; $i < strlen($ss); $i++) {
    $x = strpos($s1, $ss[$i]);
    if ($x > -1) {                                                              // bis hierhin ist alles korrekt
      // s1 = Copy(s1, 1, x - 1) + Copy(s1, x + 1, Length(s1));
      $s1 = substr($s1, 0, ($x1 - 1)) . substr($s1, ($x + 1), strlen($s1) - 1); // DIESE Zeile ist falsch. Deswegen ist $s1 dann fortlaufend auch falsch.
    }
  }
$s1 beinhaltet anfangs ein Alphabet sowie alle Zahlen 0-9.
$ss ist ein zufälliger String etwa 10 bis 16 Zeichen lang.

jaenicke 20. Jul 2019 15:52

AW: Mal wieder Delphi nach PHP Probleme
 
Woher kommt denn plötzlich $x1?

DieDolly 20. Jul 2019 18:27

AW: Mal wieder Delphi nach PHP Probleme
 
Das war wohl Fehler Nummer 1. Ein echt dummer. Aber ich glaube es gibt noch einen zweiten denn ab der dritten Iteration ist $i um mehrere Stellen verschoben was sich dann immer weiter steigert. Dass PHP-Strings bei 0 beginnen weiß ich. Aber ich bin mir nicht sicher, wie die Zeile abzuändern ist.

timog 20. Jul 2019 21:41

AW: Mal wieder Delphi nach PHP Probleme
 
Code:
<?php

  $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $ss = "DFECDFR12345";

  $s1 = $alphabet;
 
  echo $ss."<br>\n";
  echo $s1."<br>\n";

  for ($i = 0; $i < strlen($ss); $i++) {
    $x = strpos($s1, $ss[$i]);
    echo $ss[$i] . " an " . $x . ". Stelle <br>\n";
    if ($x > -1) {                                 
      // s1 = Copy(s1, 1, x - 1) + Copy(s1, x + 1, Length(s1));
      $s1 = substr($s1, 0, ($x)) . substr($s1, ($x + 1), strlen($s1)); // Bedeutung von start und length bei null indizierten Strings bedenken; negativer start parameter nimmt string von rechts
    }
    echo "$i) ". $s1 . "<br>\n";
  }
 
  echo $s1." (PHP)<br>ABGHIJKLMNOPQSTUVWXYZ06789 (Pascal)\n";
 
?>

DieDolly 20. Jul 2019 21:57

AW: Mal wieder Delphi nach PHP Probleme
 
Das Ergebnis ist leider nicht das, was mir Delphi ausgibt.
Ignorier das. Copy und Paste Fehler meinerseits. Irgendwas hatte die Zwischenablage zerhauen.

Redeemer 21. Jul 2019 08:13

AW: Mal wieder Delphi nach PHP Probleme
 
Zitat:

Zitat von timog (Beitrag 1437193)
Code:
<?php

  $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $ss = "DFECDFR12345";

  $s1 = $alphabet;
 
  echo $ss."<br>\n";
  echo $s1."<br>\n";

  for ($i = 0; $i < strlen($ss); $i++) {
    $x = strpos($s1, $ss[$i]);
    echo $ss[$i] . " an " . $x . ". Stelle <br>\n";
    if ($x > -1) {                                 
      // s1 = Copy(s1, 1, x - 1) + Copy(s1, x + 1, Length(s1));
      $s1 = substr($s1, 0, ($x)) . substr($s1, ($x + 1), strlen($s1)); // Bedeutung von start und length bei null indizierten Strings bedenken; negativer start parameter nimmt string von rechts
    }
    echo "$i) ". $s1 . "<br>\n";
  }
 
  echo $s1." (PHP)<br>ABGHIJKLMNOPQSTUVWXYZ06789 (Pascal)\n";
 
?>

Der gesamte obige Beitrag in einer Zeile:
Code:
$s1 = preg_replace('/[DFECDFR12345]/', '', $ss);


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz