AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Blockread konvertirungsprobleme von D5 nach D2010
Thema durchsuchen
Ansicht
Themen-Optionen

Blockread konvertirungsprobleme von D5 nach D2010

Offene Frage von "h_johr"
Ein Thema von h_johr · begonnen am 21. Feb 2011 · letzter Beitrag vom 22. Feb 2011
Antwort Antwort
h_johr

Registriert seit: 18. Aug 2008
Ort: Bad Harzburg
7 Beiträge
 
Delphi 5 Professional
 
#1

Blockread konvertirungsprobleme von D5 nach D2010

  Alt 21. Feb 2011, 17:42
Hallo wer kann mir helfen.

Ich habe ein Problem mit chinesischen Schriftzeichen bei der Umstellung auf D2010 !

Habe bisher mit D5 TXT Dateien problemlos eingelesen.
(ich lese immer 1 Zeichen ein um Feldtrenner ';' und Satzende 0A0D zu erkennen.)

var
MFELD1 : array [0..0] of char;
mtest0,mtest1,mtest2:char;
MAFELD1:String;
MDatei: File;
Mk: File;
nread:integer;
.
.
procedure Lesen;
begin
MAFELD1:= '';
while not eof(mk) do begin
blockread(MK,MFeld1,sizeof(MFeld1),nread);
if (MFeld1=MTest1) then begin
blockread(MK,MFeld1,sizeof(MFeld1),nread); // einlesen #10
break;
end;
if (MFeld1<>MTest0) then begin
mafeld1:=mafeld1+MFeld1;
end;
if (MFeld1=MTest0) then break;
end;
end;

procedure TForm444.Button1Click(Sender: TObject);
begin
MTEST0:= ';';
MTEST1:= CHR(13);
MTEST2:= CHR(10);
fname:='J:\Ponn\Auft\Data\DEG\datanorm.001';
assignfile(MK,fname);
reset(MK,1);
lesen();
if copy(MAFELD1,1,1)='V' then begin
.
.


Mit der Umstellung auf D2010 ist der Vergleich von char und Array [0..0] of char nicht mehr möglich. Also habe ich die Variable MTest0,MTest1,MTest2 welche ich mit dem Array vergleiche ebenfalls als
Array[0..0] definiert.

Jedoch schon bei der Zuweisung MTEST0:=';' hat die Variable den Wert '䜰' ... auch alle Zeichen die mit Blockread eingelesen werden sind Chinesische Schriftzeichen.

Was mache ich falsch ?
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

AW: Blockread konvertirungsprobleme von D5 nach D2010

  Alt 21. Feb 2011, 17:53
Mit der Umstellung auf D2010 ist der Vergleich von char und Array [0..0] of char nicht mehr möglich. ...
Hallo,

der hätte nie möglich sein dürfen, es muss MFELD1[0] heissen.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Blockread konvertirungsprobleme von D5 nach D2010

  Alt 21. Feb 2011, 20:30
MFELD1 ist ein statisches Array, das klappt schon, auch wenn die [0] nicht schaden kann,
aber seit Delphi 2009 ist ein Char 2 Bygte groß, da Char = WideChar und SizeOf(WideChar) = 2.
Davor war Char = AnsiChar und demnach 1 Byte groß-

Lösung: nimm AnsiChar und verwende zuküftig niewieder dynamische Typen zum Speichern (kein Char, kein Integer, kein Real usw.)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
h_johr

Registriert seit: 18. Aug 2008
Ort: Bad Harzburg
7 Beiträge
 
Delphi 5 Professional
 
#4

AW: Blockread konvertirungsprobleme von D5 nach D2010

  Alt 22. Feb 2011, 00:11
Hi himitsu,

私は、おかげでそれを理解する
(Watashi wa, okage de sore o rikai suru)

Kunst kommt eben von Können und nicht von Wollen,
sonst hieße es Wunst!

Mit AnsiChar klappt es wie in Delphi5 auch ohne [0]!

あなたの知識をありがとう!
(Anata no chishiki o arigatō!)
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:40 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