(Gast)
n/a Beiträge
|
Re: Missing operator in verbindung mit ORD
7. Okt 2006, 19: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;
|
|
Zitat
|