AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Buchstaben ersetzen

Ein Thema von Ricoo · begonnen am 27. Aug 2007 · letzter Beitrag vom 1. Sep 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Buchstaben ersetzen

  Alt 27. Aug 2007, 23:37
Nein, dass klappt so nicht, weil du versuchst auf Element 0 von dem String zuzugreifen. Die fangen aber bei 1 an
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Ricoo

Registriert seit: 10. Jul 2007
35 Beiträge
 
#12

Re: Buchstaben ersetzen

  Alt 28. Aug 2007, 19:53
Danke an euch. Hab gerade kein Delphi zur Hand aber wenn ich das Dreier drauf hab, probier ichs mal.
  Mit Zitat antworten Zitat
Ricoo

Registriert seit: 10. Jul 2007
35 Beiträge
 
#13

Re: Buchstaben ersetzen

  Alt 1. Sep 2007, 15:51
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:
         if zeile[j] = 'bthen
            zeile[j] := 'a';
zu

Delphi-Quellcode:
         if zeile[j] = 'üthen
          begin
            zeile[j] := 'u';
          end;
umgeschrieben habe. Die erste Version funktioniert, bei der Zweiten bekom ich aber eine Exception.

"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...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Buchstaben ersetzen

  Alt 1. Sep 2007, 16:14
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
  Mit Zitat antworten Zitat
Ricoo

Registriert seit: 10. Jul 2007
35 Beiträge
 
#15

Re: Buchstaben ersetzen

  Alt 1. Sep 2007, 17:33
Danke. Habs gerade hinbekommen.

Hab das so gemacht und siehe da, es funktioniert. =D

Delphi-Quellcode:
  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;
Und die Funktion...

Delphi-Quellcode:
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;
Danke an Alle!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz