Einzelnen Beitrag anzeigen

Gerd L

Registriert seit: 7. Mär 2007
Ort: ERZ
7 Beiträge
 
Delphi 6 Personal
 
#6

AW: Excel - kyrillischen Text auswerten

  Alt 7. Nov 2012, 15:06
So, hier nun mal, wie ich das auswerte:
Ich nehme die ersten 3 Stellen, Count braucht man als Parameter da eigentlich nicht, aber ich will noch anderes Zeugs auswerten.
Ich baue aus den kyrillischen Zeichen eine Zeichenkette im 'normalen' ASCII-Zeichensatz und diese kann ich dann vergleichen.
Also es wird nichts übersetzt. Die ersten drei Stellen sind eindeutig, wenn man weiß, dass da nur eine Monatsangabe kommt.

Function RuMoNameZuMoNr(S: WideString ; Count: LongInt): integer;
type t_ma=record
case byte of
0b:array[0..10] of byte);
1c:array[0..10] of char);
end;

var t:t_ma;
n:byte;
mon:integer; // = Monatszahl oder <=0 bei Fehler
mons:string;
Begin
fillchar(t,sizeof(t),$0);
Count:=3; // ich werte die ersten 3 Buchstaben aus
If Count < 0 Then Count := 0;
If Count > Length(S) Then Count := Length(S);
If Count > 0 Then Begin
Move(S[1], t.b[0], Count shl 1);
End;
mon:=0;
mons:='';
for n:=0 to pred(count) do begin
if t.b[n*2+1]<>4 then dec(mon); // 04 - kyrillischer Zeichensatz, wenn nicht, dann wird 'mon' negativ
end;
if mon=0 then begin
for n:=0 to pred(count) do begin
if t.b[n*2]<$30 then t.b[n*2]:=t.b[n*2] + $20; // alles in Kleinbuchstaben wandeln, damit egal wie es kommt
mons:=mons+t.c[n*2];
end;
if mons='O=2' then mon:=1;
if mons='D52' then mon:=2;
if mons='<0@' then mon:=3;
if mons='0?@' then mon:=4;
if mons='<0O' then mon:=5;
if mons='8N=' then mon:=6;
if mons='8N;' then mon:=7;
if mons='023' then mon:=8;
if mons='A5=' then mon:=9;
if mons='>:B' then mon:=10;
if mons='=>O' then mon:=11;
if mons='45:' then mon:=12;
end;
RuMoNameZuMoNr:=mon;
End;
  Mit Zitat antworten Zitat