Einzelnen Beitrag anzeigen

Richie1103

Registriert seit: 2. Feb 2009
20 Beiträge
 
#1

Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen

  Alt 22. Mai 2009, 00:17
Hi ich habe folgendes Problem ich wollte mir ein Programm schreiben welches in einem Stringgrid , in den einzelnen Zellen die Umlaute ersetzt.
Dazu folgener Quellcode:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR I,j,Breite,Hoehe:longint;
    s,z:String;
begin
Breite:=Stringgrid1.Colcount-1;
Hoehe:=Stringgrid1.RowCount-1;
For i:=0 to Breite do
 begin
 Label3.Caption:=InttoSTr(i);
 Form1.Refresh;
  for j:=0 to Hoehe do
  begin
 Label4.Caption:=InttoStr(j);
 form1.Refresh;
 s:= Stringgrid1.Cells[j,i];
 z:=umlaute_ersetzen(s);
 Stringgrid1.Cells[j,i]:=z;
  end;
 end;
end;
Die Funktion umlaute_ersetzen hhbe ich selber geschrieben:

Delphi-Quellcode:
function umlaute_ersetzen(s:String):String;
VAR laenge,z:Integer;

  begin
    z:=0;
    If s <>'Then
      begin
        Repeat
        z:=z+1;
          laenge:=length(s);
          If (s[z] = 'Ä')Then
            begin
              delete(s,z,1);
              insert('\216',s,z);
            end
              ELSE If s[z] = 'äThen
                begin
                  delete(s,z,1);
                  insert('\204',s,z);
                end
            ELSE If s[z] = 'ÖThen
                begin
                  delete(s,z,1);
                  insert('\231',s,z);
                end
            ELSE If s[z] = 'öThen
              begin
                delete(s,z,1);
                insert('\224',s,z);
              end
            ELSE If s[z] = 'ÜThen
              begin
                delete(s,z,1);
                insert('\232',s,z);
              end
            ELSE If s[z] = 'üThen
              begin
                delete(s,z,1);
                insert('\201',s,z);
              end
            ELSE If s[z] = 'ßThen
              begin
                delete(s,z,1);
                insert('\341',s,z);
              end;

          Until z=laenge
    end;
    Result:=s;
end;
Die ganzen Sachen mit dem refresch sollen jediglich der Kontrolle dienen ob das Programm durchläuft bzw wo es gerade steht.
Allerdings übersetzt mein Programm die Umlaute nciht wie ich will.
bzw bei kleinen Datenmengen macht es keine Probleme.
Bei großen Datenmengen allerdings schon. habe einen 5 Spaltige Tabelle mit 64000 Zeilen aus einer sql datenbank die ich so übersetzen lassen wollte.
Allerdings tut sich bei einer solch großen Datenmenge nichts.

Was kann ich dagegen machen? Habe ich irgend etwas falsch gemacht?
Ich hoffe auf baldige Antwort.
  Mit Zitat antworten Zitat