![]() |
Re: Buchstaben ersetzen
Nein, dass klappt so nicht, weil du versuchst auf Element 0 von dem String zuzugreifen. Die fangen aber bei 1 an ;)
|
Re: Buchstaben ersetzen
Danke an euch. Hab gerade kein Delphi zur Hand aber wenn ich das Dreier drauf hab, probier ichs mal. :-D
|
Re: Buchstaben ersetzen
Leider Funktioniert das Ganze immer noch nicht so ganz.
Ich hab eure Ratschläge befolgt und das funktioniert soweit auch. Nur hab ich das jetzt erweitert indem ich
Delphi-Quellcode:
zu
if zeile[j] = 'b' then
zeile[j] := 'a';
Delphi-Quellcode:
umgeschrieben habe. Die erste Version funktioniert, bei der Zweiten bekom ich aber eine Exception.
if zeile[j] = 'ü' then
begin zeile[j] := 'u'; end; "Im Projekt umlProject1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung "Zugriffsverletzung bei der Adresse 0045A35B in Modul umlProject1.exe". Lesen von Adresse FFFFFF' aufgetreten." sagt er dann immer Der Text, den ich in mein Programm geladen hab, hat einige Absätze. Kann das damit was zutun haben? Denn bis zur Exception wird alles korrekt eingelesen, bearbeitet und auch ausgegeben. Die Exception tritt dann auf, wenn der erste Absatz, bzw. die erste Leerzeile kommt... |
Re: Buchstaben ersetzen
Hallo,
diese Stelle verursacht nicht einen solchen Fehler. Prüfe mal deine ganze Verarbeitung. Der Zeilenindex muss von 0 bis Lines.Count-1 laufen, der Buchstabenindex von 1 bis Length(Lines[i]). Auf die Absatztrenner (sLineBreak bzw. #13#10) kannst du bei Verwendung von Lines[] gar nicht zugreifen. Die werden beim Einlesen herausgefiltert und interpretiert und beim Zugriff auf die Eigenschaft Text wieder eingebaut. Grüße vom marabu |
Re: Buchstaben ersetzen
Danke. Habs gerade hinbekommen.
Hab das so gemacht und siehe da, es funktioniert. =D
Delphi-Quellcode:
Und die Funktion...
if OpenDialog1.Execute Then
begin AssignFile(Datei, OpenDialog1.FileName); Reset(Datei); While not EOF(Datei) do Begin Readln(datei,Zeile); Memo1.Lines.Add(Zeile); end; closeFile(datei); end; for i:= 0 to (Memo1.Lines.Count - 1) do begin zeile := Memo1.Lines[i]; if zeile <> '' then begin for j:= 0 to length(zeile) do begin case zeile[j] of 'ä': Zeile := UmlWandeln(zeile ,j); 'ö': Zeile := UmlWandeln(zeile ,j); 'ü': Zeile := UmlWandeln(zeile ,j); end; end; Memo2.Lines.Add(Zeile); end; end;
Delphi-Quellcode:
Danke an Alle!
Function UmlWandeln(umlZeile: String; Stelle: Integer):String;
begin if Form1.CheckBox1.Checked then begin if umlZeile[Stelle]= 'ä' then begin umlZeile[Stelle] := 'a'; insert('e', umlZeile, Stelle + 1); end; end; if Form1.CheckBox2.Checked then begin if umlZeile[Stelle]= 'ö' then begin umlZeile[Stelle] := 'o'; insert('e', umlZeile, Stelle + 1); end; end; if Form1.CheckBox3.Checked then begin if umlZeile[Stelle]= 'ü' then begin umlZeile[Stelle] := 'u'; insert('e', umlZeile, Stelle + 1); end; end; Result:= umlZeile; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 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