Autor Beitrag
cartridge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 209

Win XP
D4 Prof,D6 Prof
BeitragVerfasst: Sa 12.03.05 12:51 
Hallo Leute!

Ich weiß nicht genau, in welche Sparte mein Problem passt. Deshalb hab ich sie mal hier her gemacht. Es geht um ASCII- ANSI Umwandlung.
Ich habe eine Datenbankdatei in ASCII (oder vielleicht auch nicht). Aus der mache ich "richtige" Datenbanken im Paradox- Format. Klappt auch alles so weit gut, außer, dass ich die Umlaute und dass eSzett (ß) nicht hinbekomme. Ich habe es mit der Funktion OEMtoANSI versucht, wie es auch in einem Buch beschrieben wurde. Dies hat aber leider überhaupt zu keinem Erfolg geführt, will heißen, es hat sich nichts geändert. Nun habe ich versucht, die falschen Zeichen zu entschlüsseln und sie durch die richtigen zu ersetzen. Dazu habe ich die einzelnen Zeichen eines Strings duirchlaufen und sie ersetzt. Dies hat zwar zu einer Veränderung geführt, jedoch sind die Zeichen immernoch nicht als Klartext sichtbar, sondern werden durch einen Cluster dargestellt:
z.B. "Universit|t zu K|ln" oder "Landesberufsgericht f|r Architekten"
(Ich hab das hier mal durch eine Pipe simuliert, weil die Listbax sich anders darstellt! S. auch Anhang!)

Wo liegt der Fehler?

Beste Grüße
Ingo


Moderiert von user profile iconAXMD: Topic aus Algorithmen, Optimierung und Assembler verschoben am Sa 12.03.2005 um 12:53
Einloggen, um Attachments anzusehen!
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Sa 12.03.05 14:42 
Hast du es mit Suche in: Delphi-Forum, Delphi-Library STRINGREPLACE() versucht?

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 12.03.05 15:47 
Hallo,

ich nutze immer folgende Function:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Function UmlauteErs(S:string):string;
var ch:char;
     z:Byte;
begin
  z := 0;
  if s <> '' then begin
    repeat
      Inc(z);
      ch := S[z];
      if ch in[#132,#148,#129,#142,#153,#154,#225] then
      begin
        Delete(s,z,1);
        Case ch of
          #132:Insert('ä',s,z); #148:Insert('ö',s,z); #129:Insert('ü',s,z);
          #142:Insert('Ä',s,z); #153:Insert('Ö',s,z); #154:Insert('Ü',s,z);
          #225:Insert('ß',s,z);
        end;
      end;
    until z=Length(s);
  end else S:=' ';
  UmlauteErs:=S;
end;

Ich hoffe, das ist es, was Du suchst: :)
MfG Lannes
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 12.03.05 16:39 
wenn mich nicht alles täuscht ist das doch einen for schleife ?
ausblenden Delphi-Quelltext
1:
2:
3:
     Inc(z);  
     ch := S[z];  
     if ch in[#132,#148,#129,#142,#153,#154,#225] then  ...


gleichzusetzen mit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
for z:= 1 to length(z) do
  begin
    ch := S[z];
    if ch in[#132,#148,#129,#142,#153,#154,#225] then ...


oder etwa nicht ?


Zuletzt bearbeitet von F34r0fTh3D4rk am Sa 12.03.05 17:45, insgesamt 1-mal bearbeitet
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Sa 12.03.05 16:43 
Nicht ganz ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
for z:= 1 to length(z) do
  begin
    ch := S[z];
    if ch in[#132,#148,#129,#142,#153,#154,#225] then ...


Du musst mit 1 beginnen.

_________________
JSXGraph
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Sa 12.03.05 17:36 
Hallo,
user profile iconraziel hat folgendes geschrieben:

Du musst mit 1 beginnen.

weil im String das erstes Zeichen die 1 ist.

Die repeat-Schleifen-Function ist im Gegensatz zur for-Schleife
mit wenigen Änderungen auch für folgendes nutzbar:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
...
Case ch of
  'ä':Insert('ae',s,z);
...

MfG Lannes