Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04.01.2011, 10:07   #1 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard Verständnisproblem mit Strukturen

Ich möchte folgende Strukturen nach XProfan umsetzen:
Code:
typedef struct SDL_CDtrack {
    Uint8 id;        /**< Track number */
    Uint8 type;        /**< Data or audio track */
    Uint16 unused;
    Uint32 length;        /**< Length, in frames, of this track */
    Uint32 offset;        /**< Offset, in frames, from start of disk */
} SDL_CDtrack;

/** This structure is only current as of the last call to SDL_CDStatus() */
typedef struct SDL_CD {
    int id;            /**< Private drive identifier */
    CDstatus status;    /**< Current drive status */

    /** The rest of this structure is only valid if there's a CD in drive */
        /*@{*/
    int numtracks;        /**< Number of tracks on disk */
    int cur_track;        /**< Current track position */
    int cur_frame;        /**< Current frame offset within current track */
    SDL_CDtrack track[SDL_MAX_TRACKS+1];
        /*@}*/
} SDL_CD;
Die vererbte Strukture mit Array ist mir nicht ganz klar. Meine bisherige Umsetzung sieht wie folgt aus:
Code:
Def SDL_MAX_TRACKS& = 99
Struct SDL_CDTRACK = id#(1), type#(1), unused%, length&, offset&
Struct SDL_CD = id&, status&, numtracks&, cur_track&, cur_frame&, SDL_CDTRACK(SDL_MAX_TRACKS& + 1)' <-- ??
Bei Erfolg sollte die Strukture SDL_CD eine größe von 1220 Bytes haben.

Wie setzt man das um?

Gruß
Thomas
ts-soft ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 04.01.2011, 16:54   #2 (Direktlink)
iF_
Weiß worum´s geht
 
Benutzerbild von iF_
 
Registriert seit: 08.02.2009
Ort: Berlin
Beiträge: 226
Standard

Hallo Thomas,

hier liegt eher eine Vorhaltung als Vererbung vor da ich auch keine Zuweisungen als Pointer erkenne - an der Stelle "SDL_CDtrack track[SDL_MAX_TRACKS+1]" sollte einfach das Vorhalten von sizeof(SDL_CDtrack)*(SDL_MAX_TRACKS+1) Bytes schon funktionieren - vlt. kannst Du das mal so ausprobieren.
__________________
Programmieren für Anfänger.
iF_ ist offline   Mit Zitat antworten
Alt 04.01.2011, 17:07   #3 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Zitat:
Zitat von iF_ Beitrag anzeigen
Hallo Thomas,

hier liegt eher eine Vorhaltung als Vererbung vor da ich auch keine Zuweisungen als Pointer erkenne - an der Stelle "SDL_CDtrack track[SDL_MAX_TRACKS+1]" sollte einfach das Vorhalten von sizeof(SDL_CDtrack)*(SDL_MAX_TRACKS+1) Bytes schon funktionieren - vlt. kannst Du das mal so ausprobieren.
Was ist Vorhaltung?
Meinst Du, ich sollte an der Stelle lediglich eine Bereichsvariable stellen, in
der passenden größe und den dort ankommenden pointer dann auf einer
SDL_CDtrack strukturieren Bereich zuweisen?

Sehr unkomfortabel. Eigentlich sollten strukturierte Typen in strukturen in
XProfan doch funktionieren. Bloß als Array will das irgendwie nicht klappen.

Vielleicht kommen ja noch andere Vorschläge, schließlich hab ich jede
Menge solcher Strukturen umzusetzen

Gruß
Thomas
ts-soft ist gerade online   Mit Zitat antworten
Alt 04.01.2011, 22:32   #4 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Ich sehe schon, ich als Profan Anfänger muß das wohl alleine lösen

Soweit bin ich jetzt:
Code:
Struct SDL_CD = id&, status&, numtracks&, cur_track&, cur_frame&, SDL_CDTRACK#(1200)
Struct SDL_CDTRACK = id#(1), type#(1), unused%, length&, offset&

Declare SDL_CDTRACK#[99], SDL_CD#

Dim SDL_CDTRACK#[], SDL_CDTRACK
Dim SDL_CD#, SDL_CD

SDL_CDTRACK#[0] = SDL_CD#.SDL_CDTRACK# ' ist das so möglich?
Größe des SDL_CD# Bereichs stimmt, geht nur noch um die Zuweisung an
die Array-Bereichvariable. Vielleicht hat jemand sowas schon gemacht?

Will auf jedenfall nicht mit OffsetOf * SizeOf usw. arbeiten.
ts-soft ist gerade online   Mit Zitat antworten
Alt 13.01.2011, 12:24   #5 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Hallo Thomas,

meinst Du etwas in dieser Art ?

Code:
DEF &SDL_MAX_TRACKS 99

Struct SDL_CDTRACK = id#(1), type#(1), unused%, length&, offset&
Struct SDL_CD = id&, status&, numtracks&, cur_track&, cur_frame&, CD!SDL_CDTRACK

Declare SDL_CD#[&SDL_MAX_TRACKS]
Dim SDL_CD#[],SDL_CD

SDL_CD#[0].CD!offset& = 50
SDL_CD#[99].CD!offset& = 150
Print SDL_CD#[0].CD!offset&
Print SDL_CD#[99].CD!offset&


waitinput
end
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 13.01.2011, 12:46   #6 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Hallo Andreas,

sieht schon mal sehr gut aus, bin mir aber nicht sicher, ob die
Bereichsvariable auch 1220 Bytes groß ist. Mit SizeOf bekomme ich keinen
korrekten Wert (kann auch daran liegen, das ich mit Bereichsvariablen immer
noch auf Kriegsfuß stehe).

Ich muss den Bereich ja an eine DLL übergeben. Die geht davon aus, das sie
so viel Platz hat.

Gruß
Thomas
ts-soft ist gerade online   Mit Zitat antworten
Alt 13.01.2011, 13:53   #7 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Zitat:
Zitat von ts-soft Beitrag anzeigen
Hallo Andreas,

sieht schon mal sehr gut aus, bin mir aber nicht sicher, ob die
Bereichsvariable auch 1220 Bytes groß ist.
Ist sie nicht, die 3100 nochwas gross.

Für das, was Du da vorhast musst Du wohl einen Umweg gehen.
In dieser Art etwa

Code:
Def MoveMemory(3) !"KERNEL32","RtlMoveMemory"
DEF &SDL_MAX_TRACKS 99

Struct SDL_CDTRACK = id#(1), type#(1), unused%, length&, offset&
Struct SDL_CD = id&, status&, numtracks&, cur_track&, cur_frame&, SDL_CDTRACK#(1200)

Var SD# = New(SDL_CD)
Print "Strukturgrösse :";sizeof(sd#)," Bytes"

Clear sd#

'hier zum lesen schicken

'dann auslesen

Declare SDL_CDTRACK#[&SDL_MAX_TRACKS]
Dim SDL_CDTRACK#[],SDL_CDTRACK

'Trackdaten kopieren
MoveMemory(SDL_CDTRACK#[0],SD#+20,1200)
Print SDL_CDTRACK#[0].offset&

waitinput
end
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 13.01.2011, 14:00   #8 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Danke Andreas, das sollte klappen!

Schön ist es trotzdem nicht

Gruß
Thomas
ts-soft ist gerade online   Mit Zitat antworten
Alt 13.01.2011, 14:16   #9 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Da ist mir grad' noch was eingefallen.

Kopieren ist vielleicht nicht nötig. Solte auch so

SDL_CDTRACK#[0] = SD#+20

gehen.
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 13.01.2011, 14:21   #10 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Das wäre schon schöner, werde ich testen, danke.
ts-soft ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Strukturen in C TinaLehm C/C++, Visual C++, Visual C++.NET 3 12.09.2005 15:20
Verständnisproblem WLAN - DRINGEND!- Dakotasilver Netzwerke 0 14.03.2005 18:09
Öffnen von Ordner(-strukturen) beschleunigen xyz Windows XP 3 28.12.2004 22:12



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:42 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2