| Autor |
Beitrag |
cartridge
      
Beiträge: 209
Win XP
D4 Prof,D6 Prof
|
Verfasst: 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 AXMD: Topic aus Algorithmen, Optimierung und Assembler verschoben am Sa 12.03.2005 um 12:53
Einloggen, um Attachments anzusehen!
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 12.03.05 14:42
Hast du es mit STRINGREPLACE() versucht?
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 12.03.05 15:47
Hallo,
ich nutze immer folgende Function:
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
      
Beiträge: 5285
Erhaltene Danke: 29
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Sa 12.03.05 16:39
wenn mich nicht alles täuscht ist das doch einen for schleife ?
Delphi-Quelltext 1: 2: 3:
| Inc(z); ch := S[z]; if ch in[#132,#148,#129,#142,#153,#154,#225] then ... |
gleichzusetzen mit:
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
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Sa 12.03.05 16:43
Nicht ganz
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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 12.03.05 17:36
Hallo,
raziel 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:
Delphi-Quelltext 1: 2: 3: 4:
| ... Case ch of 'ä':Insert('ae',s,z); ... |
MfG Lannes
|
|
|