![]() |
Re: Inkompatible Typen: Char und 'String'
Ein Char kann nicht leer sein - es enthält immer exakt ein Zeichen.
|
Re: Inkompatible Typen: Char und 'String'
okay, danke! Und wie kann ich dann auf einem anderen Weg erreichen, dass ein Zeichen gelöscht wird?
Ziel ist ja, dass ich ein Wort (z.B. Stuttgart) eingebe, und ein Zeichen (z.B. t) eingebe, und dann in dem Beispiel alle 't' aus dem Wort 'Stuttgart' gelöscht werden, so dass nur noch "Sugar" ausgegeben wird. |
Re: Inkompatible Typen: Char und 'String'
Schau dir mal StringReplace() an
|
Re: Inkompatible Typen: Char und 'String'
Wenn Du ein Zeichen im String "z" löschen willst, dann
Delphi-Quellcode:
aber Du müsstest dann rückwärts durch den String gehen, da z ja u.U. immer kürzer wird und "ende" dann über den String hinaus zeigt.
if a[i] = z then Delete(z,i,1)
Dann hast Du (soweit ich das sehe) eine Enlosschleife mit while, weil Du "i" nicht veränderst (immer i = ende = 0) Dann innerhalb der Schleife Zuweisung an "a" und "z", was irgenwie alles nutzlos macht ;) |
Re: Inkompatible Typen: Char und 'String'
dankeschön für eure Tipps :)
hat mir echt geholfen habs nun auch - fast! einziges Problem: das Wort "Stuttgart" liefert bei der Aufforderung, alle t zu löschen, "Sutgar" kann ich da noch was dementsprechend ändern? Oder müsste ich dann nochmal alles umschmeißen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; var a, z: string; begin a := edit1.text; for i := 1 to length(a) do begin z := edit2.text ; if a[i] = z then delete(a,i,1); end; label1.caption := a; end; end. end. |
Re: Inkompatible Typen: Char und 'String'
Delphi-Quellcode:
Von hinten durch den String, sehe ich jetzt so auf den ersten Blick.
for i := length(a) downto 1 do
Du musst ja bedenken, das der String immer kürzer wird und am Ende nicht mehr Length(a) hat. Dazu musst Du auch wissen, das die for-Schleife sich beim ersten Durchlauf Length(a) merkt und den wert nicht an die neue Länge anpasst. €: Das doppelte end. kann auch weg, müsste Delphi sogar darauf hinweisen. Zuweisung an z aus der Schleife raus, das ändert sich ja nicht ständig:
Delphi-Quellcode:
PS: bei Deinem letzten Code-Beispiel hat man schon gesehen, das Du die Vorschläge umgesetzt hast, auch wenn nicht alles war wohl zu viel. Achte ein bischen auf die Formatierung (also Einrückung), dann siehst Du besser wenn sich mal ein doppeltes End oder Begin eingeschlichen hat.
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; a, z: string; begin a := edit1.text; z := edit2.text; for i := length(a) downto 1 do begin if a[i] = z then delete(a,i,1); end; label1.caption := a; end; end. PPS: Der Vorschlag von mkinzler darfst Du Dir jetzt auch anschauen. Da hättest Du nicht sooo viel gelernt, aber wärst vor einer Stunde mit der Aufgabe fertig gewesen ;) |
Re: Inkompatible Typen: Char und 'String'
Hallo,
@Melli012345 hab' hier 'ne Funktion zum Löschen von Zeichen in Verzeichnissen/Pfaden, lässt sich mit wenig AUfwand für deine Zwecke "umbauen"
Delphi-Quellcode:
function CheckInvalidChars(const FilePath: String): String; // replace invalid Path-File-Chars
var sFilePath, sFileName: String; l, i : Integer; Const RePath : array[1..13] of String = ('/', '*', '?', '"', '<', '>', '|', '!', '§', '$', '%', '&', '#'); // Chars to replace in Path ReFile : array[1..15] of String = ('/', '\', ':', '*', '<', '>', '?', '"', '|', '!', '§', '$', '%', '&', '#'); // Chars to replace in File ReP : String = '_'; // replace invalid chars in Path with '_' ReF : String = '_'; // replace invalid chars in File with '_' begin l := 0; for i := 1 to Length(FilePath) do begin if FilePath[i] = '\' then l := i; end; sFileName := copy(FilePath, l+1, length(FilePath)-l+1); sFilePath := copy(FilePath, 0, l); // File - Path, check and replace for i := 1 to 13 do sFilePath := StringReplace(sFilePath, RePath[i], ReP, [rfReplaceAll, rfIgnoreCase]); // File - Name, check and replace for i := 1 to 15 do sFileName := StringReplace(sFileName, ReFile[i], ReF, [rfReplaceAll, rfIgnoreCase]); Result := sFilePath + sFileName; end; |
Re: Inkompatible Typen: Char und 'String'
Wobei natürlich jede Lösung mit StringReplace den Haken hat, das Zeichen getauscht und nicht gelöscht werden können.
|
Re: Inkompatible Typen: Char und 'String'
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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