AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein String prüfen durch eine if anweisung und dann kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

String prüfen durch eine if anweisung und dann kopieren

Ein Thema von Alterauge · begonnen am 15. Sep 2012 · letzter Beitrag vom 25. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#1

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

  Alt 15. Sep 2012, 10:13
Also hier ein Beispiel 1 für das Feld 'Meldung'!

Feuerwehr Einsatz * Testhausen * Testdorfstrasse 15 **12346789

Beispiel 2 für das Feld 'Meldung' !

Feuerwehr Einsatz * Testhausen * Testdorfstrasse 15 * bei Meier *12346789

Ich möchte einfach nur die Einsatznummer 123456789 übernehmen!
Delphi-Quellcode:
procedure TForm1.AdvGlowButton6Click(Sender: TObject);
 var
  s, d: String;
begin
MyTable2.Edit;
 s := MyTable2.FieldByName('Meldung').Text;
 d := '**';
  Delete(s, 1, Pos(d, s) - 1 + Length(d));
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  s := Trim(s);
  MyTable2.FieldByName('E.-Nr:').Text := Copy(MyTable2.FieldByName('Meldung').Text, Length (MyTable2.FieldByName('Meldung').Text+(s))-9, 10)+(s);
MyTable2.Post;
DBedit1.ReadOnly:=false;
So geht es mit '**' aber es soll auch bei einem '*' gehen!
Also eine if Anweisung oder?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.877 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 15. Sep 2012, 10:26
Warum so kompliziert?
Was soll das Löschen von '**' wenn es gar nicht Teil des Stringes ist?
Warum While-Schleifen um Zeichen zu Ersetzen, welche nicht Teil des Strings sind?
Warum trennst du den String nicht anhand vorhandener Delimitern?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

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

  Alt 15. Sep 2012, 10:28
while pos('*',s) do ......

oder gleich von hinter reinlaufen ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.660 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 15. Sep 2012, 10:28
Wäre es nicht besser, die DB zu normalisieren anstatt hier wilde Stringoperationen durchzuführen? Für mich sieht das so aus, als würden mehrere Werte in einem Feld gespeichert, das verletzt die 1. Normalform.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.877 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 15. Sep 2012, 10:51
Er weiss sicherlich überhaput nicht, wovon wir Reden, und noch Schlimmer, er scheint ihn auch nicht zu Jucken!
In seinem diversen Fragen hat man ihm viele Fehler verbessert, Verbesserungsvorschläge gemacht und Tipps gegeben.
Aber er hat keinen der Verbesserungsvorschläge umgesetzt noch beherzigt er unsere Tipps!
Im fehlt Grundlagenwissen in sämtlichen Bereichen und er sieht auch keinen Sinn darin, sich dieses notwendige Wissen zu beschaffen!
Markus Kinzler
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 15. Sep 2012, 11:40
herr mkinzler, wieso haben sie eigentlich immer so eine negative einstellung?

natürlich versuche ich alles zu verstehen!
nehme auch eure vorschläge an!

aber geben sie mir die zeit , diese dinge umzusetzen, zu testen und
natürlich zu verstehen!

kann nicht immer sofort antworten! dann teste ich gerade was!

danke

Geändert von Alterauge (15. Sep 2012 um 11:44 Uhr)
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#7

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

  Alt 15. Sep 2012, 12:56
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.877 Beiträge
 
Delphi 11 Alexandria
 
#8

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

  Alt 16. Sep 2012, 15:35
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 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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

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

  Alt 16. Sep 2012, 17:11
@mkinzler
Zitat:
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.
Sch.... Job
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

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

  Alt 15. Sep 2012, 13: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
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 Uhr.
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