AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language [nicht-Profi] Datentyp auf bestimmte Weise darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

[nicht-Profi] Datentyp auf bestimmte Weise darstellen

Offene Frage von "Nelphin"
Ein Thema von Nelphin · begonnen am 4. Okt 2011 · letzter Beitrag vom 6. Okt 2011
 
Nelphin

Registriert seit: 2. Feb 2009
Ort: Kaiserslautern
71 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: [nicht-Profi] Datentyp auf bestimmte Weise darstellen

  Alt 5. Okt 2011, 16:41
Ja, leider bringt mich das nicht weiter, offenbar hat himutsu recht und man muß noch auf little und big endian achten und stellenweise muß auch bitweise eingelesen werden.

die gute nachricht ist, ich habe einen source code der genau das alles macht was ich gerne auch machen können will...

die schlechte nachricht ist, er ist in java und ich kann noch weniger java als delphi...

trotzdem wühle ich mich mal durch die vielen proceduren und versuche die entscheidenden herauszusuchen.

Code:
    public GUID readGUID() throws IOException {
        GUID g = new GUID();
        g.w1 = readU32(); // 4
        g.w2 = readU16(); // 2
        g.w3 = readU16(); // 2
        g.w4 = readU8();
        g.w5 = readU8();
        g.w6 = readU8();
        g.w7 = readU8();
        g.w8 = readU8();
        g.w9 = readU8();
        g.w10 = readU8();
        g.w11 = readU8(); // 8
        return g;

    }
also hiermit liest java wohl das GUID ding ein.
welches wohl so definiert wurde:
Code:
public class GUID {

    /**
     * Special GUID indicating the end of elements in a section of the Logical Scene graph
     */
    public static final GUID END_OF_ELEMENTS = fromString("{FFFFFFFF-FFFF-FFFF-FF-FF-FF-FF-FF-FF-FF-FF}");

    public static final int LENGTH = 16;
    public long w1;
    public int w2;
    public int w3;
    public int w4;
    public int w5;
    public int w6;
    public int w7;
    public int w8;
    public int w9;
    public int w10;
    public int w11;
es werden also readU32 readU16 und readU8 methoden verwendet...

ich häng mal noch eine an:

Code:
    // An unsigned 32-bit integer
    public long readU32() throws IOException {
        try {
            int ch1 = get();
            int ch2 = get();
            int ch3 = get();
            int ch4 = get();

            if (getByteOrder() == ByteOrder.LITTLE_ENDIAN)
                return ((ch4 << 24) | (ch3 << 16) | (ch2 << 8) | (ch1 << 0)) & 0xFFFFFFFFL;
            else
                return ((ch1 << 24) | (ch2 << 16) | (ch3 << 8) | (ch4 << 0)) & 0xFFFFFFFFL;
        } catch (BufferOverflowException e) {
            throw new IOException(e);
        }
also ich verstehe die letzte Funktion bisher so, das mit den zeilen int ch1 = get(); usw sowas ähnliches wie
fs.read(puffer,1) gemacht wird, aber ich verstehe nicht was in der if anweisung genau gemacht wird.

Wenn ich nun versuchen würde das in delphianisch zu bekommen, wie würde ich einen datentyp definieren so wie hier das GUID definiert ist?
  Mit Zitat antworten Zitat
 


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 20:12 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