Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Strings

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 02.01.2009, 13:07    Titel: Strings Antworten mit Zitat

Hi

Dies ist so ziemlich mein erstes FB-Programm und dabei bin ich schon bei einem größeren Problem:
Warum hat ein mit
Code:
type ID3v1
    ID as string * 3
    Titel as string * 30
    Interpret as string * 30
    Album as string * 30
    Jahr as string * 4
    Kommentar as string * 30
    Genre as string * 1
end type

definierter Datentyp die Größe von 135 Bytes? Werden da etwa die NULL-Bytes (die man sich eigentlich sparen könnte) hintenan mitgezählt ?

Wenn ich das ganze mit ZStrings mache stimmt zwar die Bytelänge (128), aber mit diesen ZStrings kann ich keine chr(0) Zeichen speichern.

Wie man sicher aus dem Type-Namen sieht, will ich ID3v1 und ID3v1.1 Tags aus MP3 Dateien auslesen. Und mit "GET #DateiN, Laenge-127, ID3v1Tag" stört die zu große Bytelänge.

Wie kann man das umgehen?
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.01.2009, 14:49    Titel: Antworten mit Zitat

pass auf, da gab's im englischen forum letztens erst probleme mit. ein Type hat immer auch ein padding, und das ist auf verschiedenen platformen unterschiedlich groß. ich würde die elemente einzeln GETten, dann kann auch mit null-bytes und padding nix passieren.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 02.01.2009, 17:38    Titel: Antworten mit Zitat

Mit ZStrings sollte das gehen:
Code:
Type ID3v1 Field = 1 '<-wichtig
  ID(1 To 3) As UByte
  Titel As ZString * 30
  Interpret As ZString * 30
  Album As ZString * 30
  Jahr As ZString * 4
  Kommentar As ZString * 28
  V1_1 As UByte
  Titelnr As UByte
  Genre As UByte
End Type

Dim ID3v1Tag As ID3v1

Dim As Integer y,ff = FreeFile
Open "Sandy Nelson.mp3" For Binary As #ff
Get #ff, Lof(ff)-127, ID3v1Tag
Close #ff
With ID3v1Tag
  ? Chr(.ID(1),.ID(2),.ID(3))
  ? .Titel
  ? .Interpret
  ? .Album
  ? .Jahr
  ? .Kommentar
  ? .Genre
  .titel = String(30,0) 'überschreibt den String mit 30x chr(0)
  .Titel ="ich und ich" 'neuer Titel
End With

ff = FreeFile
Open "Sandy Nelson.xxx" For Binary As #ff
Put #ff,Lof(ff)-127,ID3v1Tag
Close #ff
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 02.01.2009, 19:01    Titel: Antworten mit Zitat

Danke für eure Hilfe. Derzeit habe ich (auf die vorhin schon funktionierende) Lösung mit einzelnen GETs zurückgegriffen.

@volta: Danke für den Programmcode. Da ich mich bis jetzt noch nicht wirklich mit FreeBasic beschäftigt habe, sondern nur mit QuickBasic, Assembler und etwas C++ [..], verstehe ich den Programmcode noch nicht ganz (z.B. kenne ich das "WITH" noch gar nicht), aber die FB-Hilfe wird mich da aufklären, sobald ich mir etwas Zeit nehme zum Lesen...

Inzwischen habe ich das Programm übrigens um die Funktion Lyrics3 Tags zu lesen erweitert. Nun sind noch ID3v2 und die von WMA und OGG Dateien ausständig...Weiters ist eine einfache Oberfläche und Abspielfunktion geplant. Weiteres dazu vielleicht in nächster Zeit in den Projektvorstellungen lächeln
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.01.2009, 20:59    Titel: Antworten mit Zitat

WITH spart einfach nur arbeit.
statt
Code:

ganzLangerTypeName.element1 = 1
ganzLangerTypeName.element2 = 2
ganzLangerTypeName.element3 = 3
ganzLangerTypeName.element4 = 4
ganzLangerTypeName.element5 = 5
ganzLangerTypeName.element6 = 6
ganzLangerTypeName.element7 = 7

schreibt man einfach
Code:

with ganzLangerTypeName
    .element1 = 1
    .element2 = 2
    .element3 = 3
    .element4 = 4
    .element5 = 5
    .element6 = 6
    .element7 = 7
end with

aber das steht ja auch alles in der ref...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 03.01.2009, 00:10    Titel: Antworten mit Zitat

[OT]
Manchmal wünscht' ich mir WIDTH in C#... kennt nicht jemand ein Pendant dazu?
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2009, 00:19    Titel: Antworten mit Zitat

WITH gibt's nicht in C#?! Das ist ja mal Mega-LOL Zunge rausstrecken Das gibt's doch echt überall...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 03.01.2009, 19:26    Titel: Antworten mit Zitat

Ich finde es einfach so geil:
Vier andere Programmierer in meinem Jahrgang schwören auf C#.... tja... ich finde es so geil. Einer hat mal sein NB mitgenommen um mir zu zeigen wie toll er programmieren kann... xD.... was macht er als erstes?
Startet firefox und öffnet unzählige Referenzen und Tutorials :DDDD
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 03.01.2009, 19:31    Titel: Antworten mit Zitat

Besser als IE durchgeknallt .
_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2009, 19:42    Titel: Antworten mit Zitat

28398: das hat jetzt aber weniger was mit der sprache zu tun.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 03.01.2009, 19:49    Titel: Antworten mit Zitat

[OT]Meiner Erfahrung nach hält sich im schulischen Umfeld schon manch einer für einen richtig professionellen Programmierer, wenn er ein HTML-Beispiel aus SelfHTML in seinem Erscheinungsbild geringfügig anpassen kann...[/OT]
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 03.01.2009, 22:38    Titel: Antworten mit Zitat

@Jojo:
Tut mir leid dich zu enttäuschen, wirklich brauchen tut man's nicht... Visual Studio macht das ganze locker wieder wett durch die automatische Vervollständigung. Wäre nur ein NiceToHave.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.01.2009, 23:15    Titel: Antworten mit Zitat

FBEdit vervollständigt auch, und in VB6 wird auch vervollständigt. und doch ist WITH einfach viel leserlicher. sehr. viel. leserlicher.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 04.01.2009, 00:40    Titel: Antworten mit Zitat

Warum? Du hast den Bezeichner einige Male mehr dastehen - das schadet der Übersicht meiner Meinung nach überhaupt nicht. Du weißt - ohne nach der WITH-Anweisung schauen zu müssen - was du gerade bearbeitest. Nur für kurz hingehackte Programme wäre es eine nette Alternative. Aber mal wieder Ansichtssachen. neutral
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 04.01.2009, 01:23    Titel: Antworten mit Zitat

und für mich ist es einfach redundanter code, der schlecht zu pflegen ist und hässlich aussieht. Zunge rausstrecken
aber ja, ist wohl ansichtssache.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 04.01.2009, 13:12    Titel: Antworten mit Zitat

Naja, das schlecht zu pflegen kann man ja dann doch nicht so stehen lassen. Änderst du den Variablennamen in VisualStudio bietet es dir gleichzeitig an, diesen im Code des jeweils gültigen Blocks gleich mit umzubenennen.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz