Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String prüfen durch eine if anweisung und dann kopieren (https://www.delphipraxis.net/170398-string-pruefen-durch-eine-if-anweisung-und-dann-kopieren.html)

Alterauge 15. Sep 2012 12:56

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

habe ein wenig über Trim gelsen,
da nicht immer alle zehen Zeichen copiert werden! (ich denke, da sind leer Zeichen im Spiel!)

Habe zur Zeit diesen Code, wie gesagt zur 90% copiert er 10 Zeichen!
Wie muß ich den Code umstellen?
Delphi-Quellcode:
procedure TForm1.AdvGlowButton3Click(Sender: TObject);
begin
MyTable2.Edit;
  MyTable2.FieldByName('E.-Nr:').Text := Copy(MyTable2.FieldByName('Meldung').Text, Length (MyTable2.FieldByName('Meldung').Text)-9, 10);
   MyTable2.Post;
end;

Furtbichler 15. Sep 2012 13:00

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

Zitat von Alterauge (Beitrag 1182979)
Ich möchte einfach nur die Einsatznummer 123456789 übernehmen!

Die Antworten:
Zitat:

Zitat von mkinzler (Beitrag 1182983)
Warum so kompliziert?

Zitat:

Zitat von DeddyH (Beitrag 1182985)
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:
Zitat:

Zitat von mkinzler (Beitrag 1182987)
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?

Alterauge 15. Sep 2012 13:43

AW: String prüfen durch eine if anweisung und dann kopieren
 
Hallo,
erstmal viellen Dank, für Deine Aufmerksamkeit!

Ich bekomme den Text, so geliefert bzw.übermittelt!
Der Text befindet sich dann in einem Memo!

Als Beispiel:
Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1*bei Müller*123456789 // hier mit Name (Müller)*
oder es ist auch möglich!
Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1**123456 789 // hier ohne Namen **

So die Einsatznummer hat immer zehn Zeichen! Aber ich vermute, dass hin und wieder mal, hinter der Einsatznummer sich leer Zeichen befinden!

Das zweite Problem ist der Trenner mit '*'! Dieser Trenner kommt öfters vor!
Beim Trenner '**' würde es gehen!



Danke!

Helmi 15. Sep 2012 14:25

AW: String prüfen durch eine if anweisung und dann kopieren
 
wie wärs damit:

Delphi-Quellcode:
var
  SL: TStringList;
begin
  SL := TStringList.Create;

  try
    SL.StrictDelimiter := true;
    SL.Delimiter      := '*';

    SL.DelimitedText := 'Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1*bei Müller*123456789'; // hier mit Name (Müller)*

    //geht auch ohne Namen
    //Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1**123456 789 // hier ohne Namen **

    ShowMessage(SL.Strings[Pred(SL.Count)]);
  finally
    FreeAndNil(SL);
  end;
end;
In der SL stehen dann die einzelnen Bereiche je als eigene Zeile und die letzte Zeile ist die Nummer

Alterauge 15. Sep 2012 14:37

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

Du wirst es nicht glauben!
Es geht!

Danke!:lol::lol::lol::lol:

Helmi 15. Sep 2012 14:41

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

Zitat von Alterauge (Beitrag 1183022)
Du wirst es nicht glauben!
Es geht!

Danke!:lol::lol::lol::lol:

Ich weiss! :mrgreen:
Gern geschehen

Ich nutz die StringList gerne mal als Trenner - erspart man sich viel String-Arbeit

DeddyH 15. Sep 2012 16:27

AW: String prüfen durch eine if anweisung und dann kopieren
 
@Furtbichler: wenn jemand schreibt, dass er einen stinkenden Fisch im Kühlschrank hat, diesen deshalb in eine Plastiktüte einpacken will und daher fragt, welche Sorte Plastiktüten besonders geeignet ist, dann kann man ihm entweder eine Marke empfehlen oder ihm stattdessen vorschlagen, den Fisch gegen einen frischen auszutauschen. Ich würde immer die 2. Variante wählen, ob Du das nun zielführend findest oder nicht :roll:

haentschman 15. Sep 2012 16:32

AW: String prüfen durch eine if anweisung und dann kopieren
 
@DeddyH: Erfahrungswerte ??? :lol:

EWeiss 15. Sep 2012 16:46

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

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.
Ah jo also doch noch nicht so Alt um dazu zu lernen ;) (IRONIE) wie auch immer.

gruss

mkinzler 16. Sep 2012 15:35

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

Zitat von Alterauge (Beitrag 1182993)
herr mkinzler, wieso haben sie eigentlich immer so eine negative einstellung?

Das macht das Leben halt aus einem.
Zitat:

natürlich versuche ich alles zu verstehen!
nehme auch eure vorschläge an!
Und deshalb hast du auch die einfachsten Dinge, die man dir gesagt hat noch nicht umgesetzt?

Aber du hast Recht, ich hätte mich einfach zurückziehen sollen, wie viele andere, die versucht haben dir zu Helfen, anstatt hier meinen Frust, über mich selbst, der die Hoffnung gehabt hat, das du deinen Versprechungen, dich mit unseren Antworten und Tipps zu beschäftigen uach Taten folgen.

Zitat:

Zitat von http://www.delphipraxis.net/members/66845-furtbichler.html
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.

Es geht hier nicht nur um die Frage, sondern auch darum, wie er auf Tipps von anderen (nicht) reagiert hat.

http://www.delphipraxis.net/170361-i...t-aendern.html

Zitat:

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.
Na dann hätte ich ja noch nie eine Antwort Posten können.
Zitat:

Ein Moderator sollte im Übrigen moderieren und sich nicht über die etwaige Kritikresistenz anderer öffentlich äußern (speziell Nicht-Profis gegenüber)
Ja ein Moderator hat seine Aufgaben zu erfüllen und darf keine eigene Meinung haben; muss immer höflich sein und hat die Schauze zu halten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.
Seite 2 von 3     12 3      

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