JEDI Codeformatierer

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
RUB
Beiträge: 15
Registriert: Do 5. Nov 2009, 13:02

JEDI Codeformatierer

Beitrag von RUB »

Hallo,

nach längerem Suchen habe ich herausgefunden warum der Codeformatierer bei mir nicht funktioniert, es liegt an den case-Anweisungen. Weiß jemand wie ich das Problem umgehen kann?

Code: Alles auswählen

function MaskeBits(Zahl:Byte):Cardinal;
begin
  case Zahl of
    0:  Result:=%0000000000000000;
    1:  Result:=%0000000000000001;
    2:  Result:=%0000000000000011;
    3:  Result:=%0000000000000111;
    4:  Result:=%0000000000011111;
    5:  Result:=%0000000000111111;
    6:  Result:=%0000000001111111;
    7:  Result:=%0000000011111111;
    8:  Result:=%0000000111111111;
    9:  Result:=%0000001111111111;
    10: Result:=%0000011111111111;
    11: Result:=%0000111111111111;
    12: Result:=%0001111111111111;
    13: Result:=%0011111111111111;
    14: Result:=%0111111111111111;
    15: Result:=%1111111111111111;
  end
end;
und

Code: Alles auswählen

TDwRec = packed record
    case byte of
      0: (Bits: bitpacked array[0..15] of Boolean);
      //1: (HighByte,LowByte: Byte);
      1: (LowByte, HighByte: byte);
      2: (Word: word);
      3: (CharRight, CharLeft: char);
  end;
mit freundlichen Grüßen
Bernd
Zuletzt geändert von RUB am Do 1. Mär 2012, 19:40, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2809
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: JADI Codeformatierer

Beitrag von m.fuchs »

1.) Was funktioniert denn nicht?

2.) Ist zwar nicht deine Frage, aber welchen Sinn hat denn deine Funktion MaskeBits?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: JADI Codeformatierer

Beitrag von theo »

RUB hat geschrieben: Weiß jemand wie ich das Problem umgehen kann?
Einfach erstmal den Formatierer nicht benutzen? :wink:
Ansonsten Im Bugtracker melden und / oder das Problem selber reparieren und einen Patch in den Bugtracker posten.

P.S. Es gibt übrigens schon einige Reports die in eine ähnliche Richtung gehen:
http://bugs.freepascal.org/view.php?id=19754" onclick="window.open(this.href);return false;

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: JADI Codeformatierer

Beitrag von schnullerbacke »

theo hat geschrieben:
RUB hat geschrieben: Weiß jemand wie ich das Problem umgehen kann?
Einfach erstmal den Formatierer nicht benutzen? :wink:
Ansonsten Im Bugtracker melden und / oder das Problem selber reparieren und einen Patch in den Bugtracker posten.

P.S. Es gibt übrigens schon einige Reports die in eine ähnliche Richtung gehen:
http://bugs.freepascal.org/view.php?id=19754" onclick="window.open(this.href);return false;
Seht euch mal die Deklaration von TdwRec genauer an, dass ist ne typisierte Konstante. Da muss normal immer eine gleiche Anzahl von Parametern existieren. Bei 2: ist das aber nicht der Fall.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: JADI Codeformatierer

Beitrag von Socke »

schnullerbacke hat geschrieben:Seht euch mal die Deklaration von TdwRec genauer an, dass ist ne typisierte Konstante.
Das ist ein Typ; für eine typisierte Konstante fehlt eindeutig ein Konstantenname.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Re: JADI Codeformatierer

Beitrag von schnullerbacke »

Socke hat geschrieben:
schnullerbacke hat geschrieben:Seht euch mal die Deklaration von TdwRec genauer an, dass ist ne typisierte Konstante.
Das ist ein Typ; für eine typisierte Konstante fehlt eindeutig ein Konstantenname.
Pardon, im Halbschlaf sollte man keine Weiheiten verbreiten. Varianter Record ist richtig, aber beim Benutzen muss man dann auch aufpassen, das die Wahl mit case auch ein zutreffendes Ziel findet, sonst geht das schief.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

RUB
Beiträge: 15
Registriert: Do 5. Nov 2009, 13:02

Re: JADI Codeformatierer

Beitrag von RUB »

Das mit dem Record funktioniert schon. Da ich auf den Daten auf sehr unterschiedliche weise zugreife, mal auf einzelne Bits mal als Char und da habe ich einfach keine Lust mit Zeiger um mich zu schmeißen oder ständig Bits aus und einzumaskieren. Die "absolute"- Anweisung wäre auch eine Alternative.

die Funktion "MaskeBits" liefert einfach eine Bit-Maske zurück um eine Zahl zwischen 1 und 15 auszumaskieren oder welche Bits benötigt werden um eine Zahl zu Speichern.
alternativ sollte auch das funktionieren:
$FFFF shr (15-Zahl)

Antworten