AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

NToBE ?

Ein Thema von Bjoerk · begonnen am 2. Mär 2014 · letzter Beitrag vom 8. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2   
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

NToBE ?

  Alt 2. Mär 2014, 09:29
Ich hab folgenden (wohl FreePascal) Code. Da gibst eine (vermutlich) function NToBE.
Kennt die jemand?

Delphi-Quellcode:
procedure DecodeASCII85(ASource: string; var ADest: TFPVUByteArray);
var
  CurSrcPos, CurDestPos: Integer;
  lDataDWordPtr: PCardinal;
  lDataCurChar: Char;
begin
  SetLength(ADest, 0);
  CurDestPos := 0;

  CurSrcPos := 1;
  while CurSrcPos <= Length(ASource) do
  begin
    lDataCurChar := ASource[CurSrcPos];

    // Compressed block of zeroes
    if lDataCurChar = 'zthen
    begin
      SetLength(ADest, Length(ADest)+4);
      ADest[CurDestPos] := 0;
      ADest[CurDestPos+1] := 0;
      ADest[CurDestPos+2] := 0;
      ADest[CurDestPos+3] := 0;
      Inc(CurDestPos, 4);
      Inc(CurSrcPos, 1);
      Continue;
    end;

    // Common block of data: 5 input bytes generate 4 output bytes
    SetLength(ADest, Length(ADest)+4);
    lDataDWordPtr := @(ADest[CurDestPos]);
    if CurSrcPos+4 <= Length(ASource) then
    begin
      lDataDWordPtr^ := (Byte(ASource[CurSrcPos])-33)*85*85*85*85
       + (Byte(ASource[CurSrcPos+1])-33)*85*85*85 + (Byte(ASource[CurSrcPos+2])-33)*85*85
       + (Byte(ASource[CurSrcPos+3])-33)*85 + (Byte(ASource[CurSrcPos+4])-33);
      lDataDWordPtr^ := NToBE(lDataDWordPtr^);
    end
    else if CurSrcPos+3 <= Length(ASource) then
    begin
      lDataDWordPtr^ := (Byte(ASource[CurSrcPos])-33)*85*85*85*85
       + (Byte(ASource[CurSrcPos+1])-33)*85*85*85 + (Byte(ASource[CurSrcPos+2])-33)*85*85
       + (Byte(ASource[CurSrcPos+3])-33)*85 + (Byte('u')-33);
      lDataDWordPtr^ := NToBE(lDataDWordPtr^);
      SetLength(ADest, Length(ADest)-1);
    end
    else if CurSrcPos+2 <= Length(ASource) then
    begin
      lDataDWordPtr^ := (Byte(ASource[CurSrcPos])-33)*85*85*85*85
       + (Byte(ASource[CurSrcPos+1])-33)*85*85*85 + (Byte(ASource[CurSrcPos+2])-33)*85*85
       + (Byte('u')-33)*85 + (Byte('u')-33);
      lDataDWordPtr^ := NToBE(lDataDWordPtr^);
      SetLength(ADest, Length(ADest)-2);
    end
    else if CurSrcPos+1 <= Length(ASource) then
    begin
      lDataDWordPtr^ := (Byte(ASource[CurSrcPos])-33)*85*85*85*85
       + (Byte(ASource[CurSrcPos+1])-33)*85*85*85 + (Byte('u')-33)*85*85
       + (Byte('u')-33)*85 + (Byte('u')-33);
      lDataDWordPtr^ := NToBE(lDataDWordPtr^);
      SetLength(ADest, Length(ADest)-3);
    end
    else
    begin
      raise Exception.Create('[DecodeASCII85] Too few bytes remaining to decode!');
    end;

    Inc(CurDestPos, 4);
    Inc(CurSrcPos, 5);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: NToBE ?

  Alt 2. Mär 2014, 09:45
Wenn du denkst zu wissen wo es her ist, dann schau da doch mal nach?

http://www.freepascal.org/docs-html/...tem/ntobe.html


PS: Man hätte natürlich auch da nachfragen können, wo man den Code her hat und ansonsten kann es nie schaden uns zu verraten von wo das kommt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: NToBE ?

  Alt 2. Mär 2014, 10:17
Klar, hätte ich machen können, aber schließlich seid doch ihr hier meine Liebsten (Delphianer).

Ist von dort.

Falls jemand Zeit und Lust hat mitzumachen, ich schreibe gerade den dxfreader nach Delphi um (Ist mit Abstand der Beste was ich der Richtung bisher in Delphi gesehen habe?).

Man braucht dazu die fpvutils, fpvectorial und dxfvectorialreader von dort.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#4

AW: NToBE ?

  Alt 2. Mär 2014, 14:28
Habe mir das DXF-Ding gerade mal angeguckt.
Brauchst Du dies "DecodeASCII85" für die DXF überhaupt?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: NToBE ?

  Alt 2. Mär 2014, 18:26
Hi Bud. Nee, brauch ich nich, war mir aber heute morgen noch nicht bewußt. Das Ding ist übrigens vom dxf-fachlichen her echt gut aber die ganzen Results der functions als Klassen machen einem echt fertig.

Mach ich Records draus /wenn's geht oder ich schmeiß sie ganz raus weil ich ja nicht rendern muß sondern die Daten nur in meine Objecte einlesen muß. Ansonsten hat mir mein C++ Kumpel aus Freiburg auch versprochen, ggf. einen aktuellen Parser von C/ C++ (gibt’s anscheinend mehre Open Source Projekte) nach Delphi zu übersetzen.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#6

AW: NToBE ?

  Alt 2. Mär 2014, 19:03
Also die Qualität kann ich so gerade nicht beurteilen, aber es muß wohl etwas umgeschrieben werden. Und irgendeine Art "Schnittstelle" mußte ja haben.

Hast Du Dich über diese LGPL-Lizenz informiert? Kann man die kommerziell einsetzen?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: NToBE ?

  Alt 7. Mär 2014, 10:42
Hast du mal was gefunden zum konvertieren von dxf bin nach dxf ascii?
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#8

AW: NToBE ?

  Alt 7. Mär 2014, 11:16
Hab noch gar nicht gewußt, dass es sowas gibt.
Hast Du eine Beispieldatei?
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: NToBE ?

  Alt 7. Mär 2014, 12:20
Nee. Stop. Scheint irgendwie doch ASCII Format zu sein, aber ohne richtiges FormFeed. Im Editor sah das auf den ersten Blick nur so aus. Sorry. TStringList liest sie aber dennoch korrekt ein.

BTW, bin mit meinem Parser fertig, bin aber dennoch unzufrieden. Irfanview ist schon noch besser. Hab mir aber sagen lassen daß die "Anderen" dxf Files auch nur mit erheblichen Verlusten einlesen. Gibt in Mannheim so ein AutoLISP Freak der auch Kunde von mir ist. Den ruf ich mal an.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#10

AW: NToBE ?

  Alt 7. Mär 2014, 13:15
Was willst Du von einem Parser mit rund 2000 Codezeilen verlangen. Ich glaube, wenn Du einen richtig guten haben willst, wird der Aufwand überproportional größer.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz