Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

Re: Missing operator in verbindung mit ORD

  Alt 7. Okt 2006, 18:25
Zitat von 3_of_8:
Was ist BWidth? Eine Funktion? Wenn es was anderes ist, wird diese Syntax garantiert nicht funktionieren.
BWidth : Variant;

Habe es aber neu definiert!

Delphi-Quellcode:
TSplitStrArray = array of String;
BWidth : TSplitStrArray;
gruß

Edit: hier mal die ganze Function!

Delphi-Quellcode:
function Tfrm_Gen.GetBitArray(StrView: String): Single;
Var
 IntI : Integer; //Zähler
 StrPosX : String; //X Position im Bitmap
 StrPosW : String; //Weite des Buchstaben
 IntPos : Dword; //Zähler für die Buchstabenweite

 DelemiterCol : TCOLOR; //Delemiter als Farbe
 IntDelPos : Integer; //Aktuelle Delemiter Position
 ColFound : Boolean; //Farbe gefunden, ergebnis = Buchstabenweite
 BWidth : TSplitStrArray; //Resultat der gefundenen Buchstabenweiten Spliten
 PosX : Variant; //
 NewPos : Dword;
 StrS : String;
 IntX : Integer;

 begin
    IntPos := 0;
    IntX := 0;
    IntDelPos := 0;
    ColFound := False;
    NewPos := 0;

    PicMapDC := PicMap.Picture.Bitmap.Canvas.Handle;
    //******************** Schleife zum ermitteln der Buchstabenweite *********************
    ///////////////////////////////////////////////////////////////////////////////////////
    //Ermitteln der Delemiter Farbe
    DelemiterCol := GetPixel(PicMapDC, 0, 88);

    //Schleife durchlaufen bis 26* die Delemiter Farbe gefunden wurde
    For IntI := 1 To picMap.Width do
        begin
        //Raus hier wenn Farbe 26* gefunden
        If IntDelPos = 26 Then Break;

        //Aktuelle Position der Buchstabenweite um eins erhöhen
        inc(IntPos);
        //Wenn aktuelle position im Bitmap die gleiche Farbe
        //enthält wie DelemiterCol ..
        If GetPixel(PicMapDC, IntI, 88) = DelemiterCol Then
            begin
            If IntDelPos <= 24 Then
              begin
                //Position zum StrPosX addieren und Delemiter komma anhängen
                StrPosX := StrPosX + IntToStr(IntI) + ',';
              end
             Else
                //Letze Position zum StrPosX addieren ohne Delemiter
                StrPosX := StrPosX + IntToStr(IntI);
            //Zähler für Farbe um eins erhöhen
            inc(IntDelPos);
            //Farbe gefunden
            ColFound := True;
            End;
        //wenn Farbe gefunden
        If ColFound Then
          begin
            //weite des Buchstaben zum StrPosW addieren
            If IntDelPos <= 25 Then
             begin
                StrPosW := StrPosW + IntToStr(IntPos - 1) + ',';
            end
            Else
                StrPosW := StrPosW + IntToStr(IntPos - 1);
            //Buchstabenweite löschen
            IntPos := 0;
        End;
        //Farbe gefunden zurück setzen
        ColFound := False;
    end;
    BWidth := Split(StrPosW, ',');
    PosX := Split(StrPosX, ',');

    For IntI := 0 To Length(StrView) do
       begin
        StrS := MidStr(StrView, IntI + 1, 1);
        If StrS > ' Then
            begin
// IntX := IntX + BWidth(ORD(UpperCase(StrS)) - 65);
            end
         Else
            //Bei Leerstring 5 hinzufügen
            IntX := IntX + 5;

        If StrS > ' Then
        begin
// IntPos := PosX(ORD(UpperCase(StrS)) - 65) - BWidth(ORD(UpperCase(StrS)) - 65);
        end
        Else
            IntPos := 61;

        
        If (IntI > 0) And (StrS > ' ') Then
        begin
// NewPos := IntX - BWidth(ORD(UpperCase(StrS)) - 65);
        end
        Else
        If IntI = 0 Then
          NewPos := IntX - 6
        Else
          NewPos := IntX - 5;


        If StrS > ' Then
        begin
            picTopTextSrc.Width := (IntX * 15);
            SetImage(picTopTextSrc, NewPos, 0, IntX, 7, picMap, IntPos, 88);
        end
        Else
            picTopTextSrc.Width := IntX * 15;
            SetImage(picTopTextSrc, NewPos, 0, IntX, 7, picMap, IntPos, 4);
        end;

    GetBitArray := IntX + Length(StrS) - 1;

End;
  Mit Zitat antworten Zitat