AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Konvertieren von OEM-Zeichensatz zu Char
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertieren von OEM-Zeichensatz zu Char

Ein Thema von DBman · begonnen am 14. Jun 2003 · letzter Beitrag vom 15. Jun 2003
Antwort Antwort
Seite 1 von 2  1 2      
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#1

Konvertieren von OEM-Zeichensatz zu Char

  Alt 14. Jun 2003, 18:42
Hallo Delphifreunde!
Ich habe folgendes Problem:
Ich möchte eine Feld einer Datenbank , dessen Inhalt noch im OEM-Zeichensatz ist Konvertieren , so dass die ü's und ö's und ä's auch ü's und ö's und ä's sind.
Da gibts ja die schöne Funktion OEMtoChar...

Ich habe jetzt also diese Schleife hier , die vom Feld MAT1 den Inhalt konvertiert und dann dem Datensatz zuweist , also den Inhalt austauscht.
Delphi-Quellcode:
  while not Table1.Eof do
  begin
    sZellenInhalt:=Table1.FieldByName('MAT1').AsString;
    OEMtoChar(PChar(sZellenInhalt), PChar(sZellenInhalt));
    Table1.Edit;
    Table1.FieldByName('MAT1').AsString:=sZellenInhalt;
    Table1.Next;
  end;
 Table1.Post;
 Table1.First
Ich dachte ich nehme table1.eof als Abbruchbedingung , und ansonsten gehe ich mit Table1.Next immer einen Datensatz weiter.
Ich bekomme aber ganz am Ende des Konvertierungsvorgangs eine Exception
EAccesViolation.
Das muss irgendwie an dem eof liegen...
(Konvertiert worden ist alles ansonsten korrekt , bis auf die Exception)
Hm , kann mir da jemand meinen Fehler nennen , ich seh ihn absolut nicht.
Danke schonmal
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#2
  Alt 14. Jun 2003, 18:49
Hallo DBman,

wenn Du Haltepunkte einsetzt und Dich mit F7 durch Dein Programm hangelst, wirst Du feststellen, daß die Fehlermeldung bei Table.Post kommt.

Lösche diese Zeile oder setzte noch ein Table.Edit davor, weil Next vom EditModus auf den BrowserModus umschaltet.

mfg
eddy
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#3
  Alt 14. Jun 2003, 19:00
Hm...nein.

Mein Code sieht jetzt so aus:
Delphi-Quellcode:
 while not Table1.Eof do
  begin
    sZellenInhalt:=Table1.FieldByName('MAT1').AsString;
    OEMtoChar(PChar(sZellenInhalt), PChar(sZellenInhalt));
    Table1.Edit;
    Table1.FieldByName('MAT1').AsString:=sZellenInhalt;
    Table1.Next;
  end;
 Table1.First
end;
Und funktioniert nicht. Immer noch die Exception.
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#4
  Alt 14. Jun 2003, 19:52
Hallo DBman,

böse Falle, es sieht so aus, als ob OEMtoChar leere Strings nicht verkraftet. Habe Deine Fehler nachvollziehen können. Nachfolgender Code lief bei mir ohne Fehler.

Code:
begin
  Tab1.First;
  while not Tab1.Eof do begin
    sZellenInhalt:=Tab1.FieldByName('Ort').AsString;
    if trim(sZellenInhalt) <> '' then begin
      OEMtoChar(PChar(sZellenInhalt), PChar(sZellenInhalt));
      Tab1.Edit;
      Tab1.FieldByName('Ort').AsString:=sZellenInhalt;
    end;
    Tab1.Next;
  end;
  Tab1.First;
end;
mfg
eddy
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 14. Jun 2003, 20:03
Hallo,

vielleicht bringt Dir das was.
http://www.delphipraxis.net/viewtopic.php?t=848

Grüsse, Daniel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6
  Alt 14. Jun 2003, 20:12
Der Link ist echt gut, ich hab das so gemacht mit alten Daten, die nach Interbase mußten. Waren zwar nur ca. 30 MB reine Daten, ohne Bilder, aber das ging einwandfrei. Der vorgefertigte Kram ist schön und gut, aber hausgemacht ist meist besser.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#7
  Alt 14. Jun 2003, 20:29
Hallo Leute,

ich gebe zu, ich habe bei der Übernahme meiner "alten" dBase-Datenbanken nach Paradox auch noch nichts von OEMtoChar gewußt, aber ich denke, der lange Weg war nicht DBman's Problem.

mfg
eddy
  Mit Zitat antworten Zitat
DBman

Registriert seit: 31. Mai 2003
Ort: nähe hannover
77 Beiträge
 
#8
  Alt 14. Jun 2003, 20:31
Oh dankesehr!!!
Da wäre ich sicherlich alleine nicht so schnell oder gar nicht drauf gekommen.
Denn die Dinge , die wir erst lernen müssen , bevor wir sie tun , lernen wir beim Tun. - Aristoteles
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9
  Alt 15. Jun 2003, 18:36
wo lag jetzt eigentlich das Problem ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#10
  Alt 15. Jun 2003, 20:15
Hallo Hansa,

1. Fehler: Tab.Post
2. Fehler: Leere Zeichenketten

Offensichtlich verkraftet OEMtoChar keine leere Zeichenketten. Ich hatte in meiner Testdatei zwei Einträge, bei denen "Ort" (= das von mir verwendete Feld) keinen Text enthielt. Genau bei diesen beiden Zeilen gab's die Fehlermeldung.

mfg
eddy
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 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