![]() |
String prüfen durch eine if anweisung und dann kopieren
so geht es nicht !
Delphi-Quellcode:
ohne eine if anweisung geht es!
procedure TForm1.AdvGlowButton6Click(Sender: TObject);
var s, d, e : String; begin //MessageDlg('Einsatznummer Leitstelle'+#10#13+'wirklich ändern ?', mtConfirmation, mbYesNo, 0) = mrYes then begin if (s = MyTable2.FieldByName('Meldung').Text) and (d = '**') then 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; end else begin if d = '*' then 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; end; end; end;
Delphi-Quellcode:
was muss ich ändern?
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; |
AW: String prüfen durch eine if anweisung und dann kopieren
Welchen Wert hat denn s, wenn Du ihn vergleichst? Ich kann da nirgends eine Zuweisung erkennen.
[edit] Das könnte man auch schön mit dem Debugger prüfen, das Ding ist kein Hexenwerk, das darf man ruhig benutzen. [/edit] |
AW: String prüfen durch eine if anweisung und dann kopieren
Zitat:
|
AW: String prüfen durch eine if anweisung und dann kopieren
Delphi-Quellcode:
S:=
D:= if (s = MyTable2.FieldByName('Meldung').Text) and (d = '**') then begin ShowMessage(S + sLineBreak + D); .. |
AW: String prüfen durch eine if anweisung und dann kopieren
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:
So geht es mit '**' aber es soll auch bei einem '*' gehen!
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; Also eine if Anweisung oder? |
AW: String prüfen durch eine if anweisung und dann kopieren
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? |
AW: String prüfen durch eine if anweisung und dann kopieren
while pos('*',s) do ......
oder gleich von hinter reinlaufen .... |
AW: String prüfen durch eine if anweisung und dann kopieren
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.
|
AW: String prüfen durch eine if anweisung und dann kopieren
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! |
AW: String prüfen durch eine if anweisung und dann kopieren
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 |
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; |
AW: String prüfen durch eine if anweisung und dann kopieren
Ich erinnere
Zitat:
Zitat:
Zitat:
Aber die Krönung: 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. Das Problem lautet (wer lesen kann, ist klar im Vorteil) Zitat:
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:
(Ungetestet)
// 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; 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? |
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! |
AW: String prüfen durch eine if anweisung und dann kopieren
wie wärs damit:
Delphi-Quellcode:
In der SL stehen dann die einzelnen Bereiche je als eigene Zeile und die letzte Zeile ist die Nummer
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; |
AW: String prüfen durch eine if anweisung und dann kopieren
Helmi,
Du wirst es nicht glauben! Es geht! Danke!:lol::lol::lol::lol: |
AW: String prüfen durch eine if anweisung und dann kopieren
Zitat:
Gern geschehen Ich nutz die StringList gerne mal als Trenner - erspart man sich viel String-Arbeit |
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:
|
AW: String prüfen durch eine if anweisung und dann kopieren
@DeddyH: Erfahrungswerte ??? :lol:
|
AW: String prüfen durch eine if anweisung und dann kopieren
Zitat:
gruss |
AW: String prüfen durch eine if anweisung und dann kopieren
Zitat:
Zitat:
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:
Zitat:
|
AW: String prüfen durch eine if anweisung und dann kopieren
@mkinzler
Zitat:
|
AW: String prüfen durch eine if anweisung und dann kopieren
Zitat:
Ich möcht noch eine Variante zeigen:
Delphi-Quellcode:
Die Idee mit
var
i: Integer; S: String; begin S := 'Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1**123456 789'; //oder: //S := 'Feuerwehr Einsatz*Testhausen*Testdorfstraße66*Feuer1*bei Müller*123456789'; i := LastDelimiter('*', S); ShowMessage(copy(S, i + 1, length(S))); end;
Delphi-Quellcode:
hab ich aus der SysUtils-Function
LastDelimiter
Delphi-Quellcode:
ExtractFilePath
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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