Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#12

AW: String prüfen durch eine if anweisung und dann kopieren

  Alt 15. Sep 2012, 14:00
Ich erinnere
Ich möchte einfach nur die Einsatznummer 123456789 übernehmen!
Die Antworten:
Warum so kompliziert?
Wäre es nicht besser, die DB zu normalisieren ...das verletzt die 1. Normalform.
Get noch, ist auf jeden Fall freundlich.
Aber die Krönung:
Er weiss sicherlich überhaput nicht, wovon wir Reden, und noch Schlimmer, er scheint ihn auch nicht zu Jucken!
So ihr Profis: Auf der einen Seite trötet ihr von Nettiquette und wie man Forenbeiträge beantworten sollte bzw. regt euch auf, wenn man euren hohen Erwartungen nicht gerecht wird und auf der anderen Seite beantwortet ihr nicht einmal eine sehr einfache Frage oder geht einfach auf das Problem ein. Stattdessen zeigt ihr mit dem Finger auf vermeindliche Fehler oder mäkelt am bisherigen Lösungsweg herum und verwechselt Anfängerprobleme mit Kritikresistenz.

Toll, das ihr die volle Ahnung habt und toll, das ihr bei jeder Frage antwortet. Vielleicht wäre hier zur Abwechslung Klasse besser als Masse.

Das Problem lautet (wer lesen kann, ist klar im Vorteil)
Zitat:
Ich möchte einfach nur die Einsatznummer 123456789 übernehmen!
Sie lautet nicht "Wie verbessere ich meine DB-Struktur" und auch nicht "Was mache ich falsch". Klar, es wurde Code gepostet, aber dann geht wenigstens direkt und konstruktiv darauf ein.

Die imho direkte, höfliche und jegliche Kritik vermeidende Antwort würde lauten (Tataa):
Um die Einsatznummer zu übernehmen, könntest Du, von hinten beginnend, nach dem Trenner suchen und dann alles rechts davon herauskopieren, etwa so:
Delphi-Quellcode:
// Wenn der String 'abcXX123' ist und der Trenner='XX', dann liefert die
// Funktion als Resultat '123' und der String ist hinterher 'abc'
Function LetzterTeilstring(Var DerString : String; Trenner : String) : String;
Var
  i, trennerLaenge : Integer;
Begin
  trennerLaenge := Length(Trenner);
  i := Length(DerString) - trennerLaenge;
  While (i>trennerLaenge) And (Copy (DerString,i-trennerLaenge, trennerLaenge)<>Trenner) do dec(i);
  // i zeigt nun auf das 1.Zeichen des letzten
  if (i<=trennerLaenge) then begin
    result := TeilString;
    DerString := '';
    end
  else begin
    result := Copy(DerString,i,maxint);
    TeilString := Copy(DerString,1,i-trennerLaenge-1);
  end
end;
(Ungetestet)

Ein Moderator sollte im Übrigen moderieren und sich nicht über die etwaige Kritikresistenz anderer öffentlich äußern (speziell Nicht-Profis gegenüber), obwohl letzteres auch für Normalsterbliche gilt. Für direkte Kritik gibt es die 'PN'. Das hätte Niveau. (Und: "Ja", die eigene Nase, ich weiß).

Vielleicht denken die Angesprochen einmal über das Prädikat: "Arroganz" bzw. "Überheblichkeit" nach. Ich tue das jedenfalls, da ich diesbezüglich hier und da gerüffelt wurde.

@AlterAuge: Dein neuer Code funktioniert nicht, wenn die Einsatznummer einmal nicht 10 Zeichen beträgt.

Auch wenn ich die Art der Kritik von DeddyH (dem man aber eigentlich nichts vorwerfen kann) nicht zielführend finde, hat er in jedem Fall recht: Das mit der Datenbankstruktur ist nicht robust. Versuche mal, diese '*' Geschichte durch einzelne Eingabefelder zu lösen. Oder sind das Daten, die schon so vorhanden sind?
  Mit Zitat antworten Zitat