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.