Beitrag von Claus Christmeier (598 Beiträge) am Montag, 23.April.2001, 18:41.
@Christoph - 2 Fragen
Hallo Christoph,
1. Warum steht "Id" nicht in "%_loop"?
2. Kann an folgendem Code noch etwas optimiert werden?
Ziel = Ausgabe nach Feldnummerm wie definiert!
<perl>
init "/cccs/pfeifenkopf/sr";
%_loop = ();
%h1 = %{$$_db{_fnr}};
@h0 = sort zahlsort values %h1;
foreach $wert (@h0)
{
while (@dummy = each(%h1))
{
if ($dummy[1] == $wert)
{
out $dummy[0] . " = " . $dummy[1] . "<br>";
next;
}
}
}
out "<br>";
#
sub zahlsort
{
if ($a < $b)
{
return -1;
}
else
{
if ($a == $b)
{
return 0;
}
else
{
return 1;
}
}
}
</perl>
<loop code=perl db=/cccs/pfeifenkopf/sr sort^=srNR range^=0,20>
foreach $wert (@h0)
{
while (@dummy = each(%h1))
{
if ($dummy[1] == $wert)
{
out $dummy[0] . "=" . $_loop{$dummy[0]} . "|";
next;
}
}
}
out "<br>";
</loop>
Für Deine Bemühungen vielen Dank
Gruß
Claus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 23.April.2001, 23:25.
Re: @Christoph - 2 Fragen
1. Im normalen "loop" wird das extra rausgenommen - als $_id steht es ja immer zur Verfügung. Brauchst Du das irgendwo?
2. Versteh das Bedürfnis danach nicht, weil baseportal eigentlich automatisch nach Feldnumerierung ausgibt, nicht?
Optimieren lässt es sich auf jeden Fall so:
init "/cccs/pfeifenkopf/sr";
%_loop = ();
%h1=%{$$_db{_fnr}};
@felder=sort { $h1{$a} <=> $h1{$b} } keys %h1;
foreach $feld (@felder)
{
out "$feld=".$$_db{_fnr}{$feld}."<br>";
}
out "<br>";
<loop code=perl db=/cccs/pfeifenkopf/sr sort^=srNR range^=0,20>
foreach $feld (@felder)
{
out "$feld=".$_loop{$feld}."|";
}
out "<br>";
Sortierung nach Zahl lässt sich sehr einfach mit dem "<=>"-Operator machen, der liefert genau das was Du mit der sub gemacht hast, also -1, 0 und 1 bei $a<$b, $a==$b und $a>$b
Dann hab ich mir eine andere Rangehensweise ausgedacht: Gleich alle Feldnamen in der richtigen Reihenfolge speichern, da sparst Du Dir ne Menge Schleifen... Das wird alles in der "sort"-Zeile erledigt, diese wird zwar nach den "values" von %h1 sortiert ($h1{$a} <=> $h1{$b}), aber zurückgegeben werden die Feldnamen.
Klar?
Grüsse.
Christoph...
Antworten
Beitrag von Claus Christmeier (598 Beiträge) am Dienstag, 24.April.2001, 15:34.
Re: @Christoph - 2 Fragen
Hallo Christoph,
vielen Dank für Deine Antwort. Nach 3maligem durchlesen hat´s dann bei mir geklingelt - im Nachhinein eigentlich ganz einfach, man muss halt nur darauf kommen.
Wegen "Id"; ich möchte nach jedem Lesebefehl "%_loop" sichern und muss jetzt halt immer noch zusätzlich eine Befehl absetzten:
%_srSatz = %_loop;
Warum stört "Id" denn im "%loop"?
Gruß
Claus
PS:
Warum geht´s denn im "BETA"-Forum nicht weiter?
Warte immer noch auf Deine Antworten zu den gemeldeten Fehlern.
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 24.April.2001, 20:40.
Re: @Christoph - 2 Fragen
Naja, manchmal denkt man einfach um zuviele Ecken, geht mir genauso ;-)
zu "Id": Also es stört an sich nicht, nur %_loop wird aus der tatsächlichen Ausgabe erzeugt und da will man im Normalfall das "Id" nicht haben... Es gibt einen Aufruf von "loop" bei dem man (wie bei "listfields=" beim "do action=all") die Felder die man haben will explizit angeben kann, aber das ist noch nicht ganz rund, d.h. ich muss mir da die genaue Definition noch überlegen, bevor ichs freigeben kann...
Mmh, ob Du wirklich jedes %_loop speichern musst, ich weiss nicht, gibt bestimmt eine andere Möglichekit ;-) So oder so glaube ich aber dass man das Ergebnis automatisch in einem eigenen Hash geliefert bekommt, muss ich mir nochmal genauer anschauen...
Zur beta: Naja, ich programmiere natürlich ständig daran weiter, aber es hat ja keinen Sinn einen halbfertigen Zwischenstand aufzuspielen, der dann überhaupt nicht richtig läuft, deshalb gibts neue beta-Versionen halt alle paar Tage/Wochen, sobald ein vernünftiger weiterer Schritt erreicht ist... Davor denke ich, macht es auch nicht richtig Sinn zu antworten, weil einige der angesprochenen Sachen in der neuen Version dann ja verbessert sind (also ich könnte höchstes anworten: xxx geht jetzt, nur könnt ihr das nicht testen, weil die neue Version noch nicht auf dem Server ist, aber da sehe ich nicht so recht den Sinn drin)
Du kannst aber sicher sein, dass ich Deine Nachrichten alle lese und (wenn ich nicht was übersehe, was natürlich manchmal auch vorkommen kann) die Fehler verbessere und mir auch sonst meine Gedanken dazu mache! ;-)
Grüsse,
Christoph...
Antworten
Beitrag von Claus Christmeier (598 Beiträge) am Dienstag, 24.April.2001, 23:59.
Re: @Christoph - 2 Fragen
Hallo Christoph,
wegen "BETA" bin ich etwas anderer Meinung:
1.) Wenn Du schon Lösungvorschläge willst und dann auch welche bekommst, solltest Du wenigstens dazu Stellung nehmen.
2.) Wenn wir Dir einen Fehler melden, dann wäre es doch sehr interressant zu erfahren, was Du dazu zu sagen hast, egal ob das dann gleich behoben wird oder nicht. Gedankenaustausch ist doch das A&O oder nicht?
3.) Wenn soviel gemeldet wird, und der Zeiträume zwischen den "neuen Beta´s" zu gross werden, verliert man leicht den Überblick (glaube sagte ich heute schon mal), um dann ALLE Punkte die man gemeldet hat zu überprüfen, ob alles richt funktioniert.
Könnte man da nicht etwas an der Arbeitsweise verändern, damit die "Respondszeiten" kürzer werden?
Gruß
Claus
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 25.April.2001, 09:06.
Re: @Christoph - 2 Fragen
Das sind aber jetzt langsam mehr als 2 Fragen ;-)
Ok. Es ist so: Es gibt ja verschiedene Stadien in der sich so eine Software befinden kann. Momentan ist die beta ein bisschen wie ein auseinandergebasteltes Auto (oder Rechner oder sonstwas) - da fehlen Kleinigkeiten, die dann grosse Auswirkungen haben. Bei bestimmten tieferliegenden Sachen ändern sich täglich Dinge, es hat also nicht viel Sinn, bei diesen Sachen nach Fehlern zu suchen, weil durch eine Änderung morgen a) der Fehler von selbst wieder weg sein kann oder b) ein ausgebauter (oder anderer) Fehler wieder drin sein kann. Beispiel: Im Moment geht das "loop" nicht so (garnicht?) wie in der normalen Version - gerade da gibts aber noch viele Änderungen - wenn ich mich jetzt auf die Suche nach dem Fehler begebe brauch ich vielleicht 5 Minuten, vielleicht aber auch ne Stunde. Dann mach ich morgen ne Änderung und dann funktionierts vielleicht wieder nicht...
Verloren geht von den Fehlermeldungen nichts, steht alles im beta-Forum und ich geh die Punkte alle einzeln durch (wenns soweit ist)...
Grüsse,
Christoph...
Antworten