Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Bedingte Anweisung in Schleife (https://www.delphipraxis.net/148266-bedingte-anweisung-schleife.html)

Christian Seehase 26. Feb 2010 18:55

Re: Bedingte Anweisung in Schleife
 
Moin Michael,

ich habe da meist eine andere Vorgehensweise (Beispiel):

Delphi-Quellcode:
type
  TcsFieldTypes = (ftName,ftDesc,ftKey);

const // Können auch aus einer Konfigurationsdatei stammen
  _asFieldNames : array[TcsFieldTypes] of string = ('Name','Desc','Key');

  _asDefaults  : array[TcsFieldTypes] of string = ('DefaultName','DefaultDesc','DefaultKey');
Dadurch hat man dann direkt Zugriff auf Werte, ohne Funktionen bemühen zu müssen, und kann recht flexibel die Daten ändern, speziell, wenn sie aus einer Datei stammen.
Wahlweise kann man natürlich auch eine Funktion nehmen, um die Vorgabewerte auszulesen.
Wenn man verschiedene Datentypen braucht, geht es auch mit Variants.

Luckie 26. Feb 2010 18:58

Re: Bedingte Anweisung in Schleife
 
OK, da müsste ich aber den Code an drei Stellen ändern, wenn sich was ändert. Und das ist nicht schön. Und ich werde auch unterschiedliche Models haben mit gleichem Feld aber unterschiedlichen Vorgabewerten.

Aber wie gesagt, letzt endlich suche ich eine Lösung für PHP. Das Delphi Beispiel war nur zur Veranschaulichung.

mirage228 27. Feb 2010 21:43

Re: Bedingte Anweisung in Schleife
 
Hey Michael,

So sollte es genauso gehen, wie Du wolltest :) Ich musste allerdings noch ein paar Modifikationen im Gegensatz zu meiner Ursprungsfassung machen, dafür habe ich das ganze etwas weiter kommentiert ;)

Code:
<?php

// "globaler" Standardwert, den zunächst grundsätzliche alle
// Felder erhalten sollen
$globalDefaultValue = 'Standardwert';

// Assoziatives Array
// Es enthält zunächste _alle_ "Produkt"-Felder
// Wo ein abweichender Standardwert existiert für ein Feld,
// wird dieser mit 'feld' => 'wert' angegeben, ansonsten 'feld' => null
$productFields = array(
  'name' => 'Name',
  'desc' => null,
  'key'  => 'Hubba',
  'foo'  => null,
  'bar'  => null,
  'lolli' => null,
  'pop'  => 'Bubba');
 
$categoryFields = array(
  'name'               => 'ajsdbv',
  'kuckuck'            => 'jsgad',
  'feldMitStandardWert' => null);  

// Zum Testen wird hier einfach "Produkt" als Modell festgelegt.
$model = "Produkt";

switch ($model){ 
   case 'Produkt':
      foreach($productFields as $fieldName => $customDefault){
         // Standardwert ist der "globale", falls der "abweichende" Standard-
         // wert im Felder-Array mit "null" angegeben wurde.
         $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue;
         echo "$fieldName: $defaultValue
";
      } 
      break;
   case 'Kategorie':
      foreach($categoryFields as $fieldName => $customDefault){   
         // Standardwert ist der "globale", falls der "abweichende" Standard-
         // wert im Felder-Array mit "null" angegeben wurde.
         $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue;
         echo "$fieldName: $defaultValue
";
      } 
      break;                                                
}
?>
Viele Grüße

Luckie 27. Feb 2010 21:45

Re: Bedingte Anweisung in Schleife
 
Besten Dank. Am Montag werde ich sehen, ob es so klappt wie gewünscht.

Luckie 1. Mär 2010 11:12

Re: Bedingte Anweisung in Schleife
 
Hat wunderbar geklappt. Ich musste allerdings noch ein paar Modifikationen vornehmen:
Code:
$formExt = new formExtension($modelClass);
          switch($modelClass) {
         case 'Product':
             if (!$doneSetDefValues) {
            $doneSetDefValues = $formExt->setDefValues($productFields);
             }         
             break;
         case 'Salutation':
             if (!$doneSetDefValues) {
            $doneSetDefValues = $formExt->setDefValues($salutationFields);
             }
             break;
         default:
             echo "\t\techo \$extendedForm->input('{$modelClass}.{$field}');\n";
          }         
          break;
Code:
    public function setDefValues($fields) {
   $globalDefaultValue = '';
   foreach ($fields as $fieldName => $customDefault) {
       $defaultValue = $customDefault != null ? $customDefault : $globalDefaultValue;
       echo "\t\techo \$extendedForm->input('".$this->modelClass.".".$fieldName."', array('default' => '".$defaultValue."'));\n";
   }
   return true;
    }
Vielen Dank noch mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr.
Seite 2 von 2     12   

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