Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen (https://www.delphipraxis.net/134439-programm-um-umlaute-tabelle-stringgrid-zu-uebersetzen.html)

Richie1103 22. Mai 2009 00:17


Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen
 
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.

mkinzler 22. Mai 2009 07:06

Re: Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen
 
Warum ersetzt du nicht, bevor die Daten im Grid landen (z.B. beim Einlesen aus DB)?

Richie1103 22. Mai 2009 10:16

Re: Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen
 
Das ahtte in meinen AUgen den Vorteil das man in dem Grid noch die Daten ändern kann bevor sie wieder in die Datenbank hochgeladen werden.
Werde aber mal versuchen das beim einlesen bereits einzubauen.
Schonmal Danke. Melde mich dann ob es läuft.

Richie1103 22. Mai 2009 18:55

Re: Programm um Umlaute in Tabelle(Stringgrid) zu Übersetzen
 
OK Danke für die Hilfe. Hat geklappt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 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