Warum funktioniert dieser Code nicht in Object Pascal?
Frage von Muschelknacker | 22.10.2019 um 19:48
Warum funktioniert dieser Code nicht in Object Pascal?
procedure TbestandDataForm.DBEdit1Change(Sender: TObject); var OldChange: TNotifyEvent; OldStart: Integer; begin with (Sender as TDBEdit) do begin OldChange := OnChange; OnChange := nil; OldStart := SelStart; if ((SelStart > 0) and (Text[SelStart - 1] = '')) or (SelStart = 1) then begin SelStart := SelStart - 1; SelLength := 1; SelText := AnsiUpperCase(SelText); end; OnChange := OldChange; SelStart := OldStart; end; end;
Error: Projekt werkzeug hat Exception-Klasse »External: SIGSEGV« ausgelöst.
In Datei 'unit2.pas' in Zeile 69:
if ((SelStart > 0) and (Text[SelStart - 1] = '')) or (SelStart = 1) then
Ähnliche Themen
Delphi/Lazarus: Shortcut für MenuItem im Code zuweisen
Frage | 1 Antwort
Delphi: Mehrzeilige Caption für TLabel (zur Laufzeit und Design Zeit)
Tutorial | 1 Kommentar
Bild vor dem Upload im Browser verkleinern
Tutorial | 5 Kommentare
Lazarus: Betriebssystem erkennen (Compiler Switch)
Tutorial | 3 Kommentare
MySQL: Zeilenumbrüche in MySQL
Tipp | 0 Kommentare
Delphi/Lazarus: Mit STRG+A in ListView alles markieren
Tipp | 0 Kommentare
Google Tipps: Dokumente eines bestimmten Dateityps (PDF, DOC, XLS, TXT, HTM etc) suchen
Info | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Du musst schon ein bisschen mehr Informationen geben und nicht nur hier einen Quelltext hinhauen ohne irgendwelche Erläuterungen zu geben.
Vermutlich wird der Index "SelStart - 1" zu groß sein für die Länge von "Text". Aber viel mehr kann man dazu jetzt nicht sagen ohne weitere Informationen.
Darüberhinaus ist die Rückgabe von Text[SelStart - 1] ein char (Länge von 1, zum Beispiel ein Buchstabe) und kann gar nicht '' (leer) sein. Vielleicht meinst du sowas wie Text = '' stattdessen.
22.10.2019 um 22:04
Entschuldigung, ich war unkonzentriert.
Vor langer Zeit hat ein Herr Warren im SwissDelphiCenter eine Lösung für folgendes Problem vorgestellt : in einem TEdit jedes erste Zeichen eines Wortes in einen Großbuchstaben umwandeln.
Ich hatte vor, diesen Code mal in Pascal mit einem DBEdit zu testen.
Das geht offensichtlich nicht.
(ich habe keinerlei Ausbildung in Programmierung, es ist nur Hobby)
27.10.2019 um 12:52
Warum sagst du das nicht gleich, was du erreichen möchtest?
Probiere doch mal sowas wie das hier:
Habe das jetzt zwar nicht getestet, aber so etwas in die Richtung sollte prinzipiell funktionieren.
27.10.2019 um 18:56
Danke Compi für deinen Denkanstoß.
Was bedeutet s[1] ?
Das erste Zeichen im String ?
Ab dem zweiten Zeichen muß es ja mit LowerCase weitergehen.
Also etwa LowerCase(s[????],.....und irgendetwas);
Habe verschiedene Parameter versucht, kein Erfolg, inkompatieble Typen usw. ??
Letztes Update am 29.10.2019 | Erstellt am 29.10.2019
Sorry, hab hier ein paar Tage nicht rein gesehen.
Genau. Das s[1] ist das erste Zeichen des Strings. Mit [] kannst du auf die einzelnen Zeichen zugreifen.
Das mit lowercase hast du ja auch noch nicht verraten.. Bitte sag doch sowas am Anfang. Mit [] kannst du nur auf einzelne Zeichen zurück greifen. Wenn du mehrere willst, arbeite mit der Funktion copy.
07.11.2019 um 00:01
Hallo Compi,
ich hab nun mein Projekt überarbeitet und die oberste procedure entfernt, wobei ich nun an sinnvoller Stelle für einige Komponenten die Eigenschaft "CharCase" verwende.
Danke für deine Hilfe, bis später mal wieder.....................
03.02.2020 um 18:13