String Problem

Für allgemeine Fragen zur Programmierung mit PureBasic.
ORANGE
Beiträge: 19
Registriert: 29.12.2004 21:03

String Problem

Beitrag von ORANGE »

Hi

Ich wollte mir ein kleines tool zum erstellen von quicktime playlists basteln.
Dabei brauche viele Einträge wie diesen:

<meta name="author" content=""/>

Die ganzen "" mit chr(34) machen is ja voll assi.
Wie kriege ich das vernünftig in den compiler?

thx
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Hi,
nimm nen anderes Zeichen das garantiert nicht vorkommt aber auf der tastatur ist dann kannstes einfach tippen wennde fertig bist machste ReplaceString .....

mfg
125
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Re: String Problem

Beitrag von freedimension »

ORANGE hat geschrieben:<meta name="author" content=""/>
Sieht ja stark nach XHTML aus ;-)
Laut XHTML sind nicht nur Hochkomata sondern auch das einzelne ' als Begrenzer für Attributwerte zugelassen.

Code: Alles auswählen

<meta name='author' content='' />
Übrigens, zwischen dem /> und dem letzten Zeichen im Tag muss zwingend ein Leerzeichen stehen sonst ist's nicht valide dein XHTML
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: String Problem

Beitrag von Kiffi »

> Übrigens, zwischen dem /> und dem letzten Zeichen im Tag muss
> zwingend ein Leerzeichen stehen sonst ist's nicht valide dein XHTML

sicher? Sowohl FireFox als auch der IE (msxml.dll) erkennen ein

Code: Alles auswählen

<test/>
als valide an.

Grüße ... Kiffi
crX
Beiträge: 21
Registriert: 29.12.2004 17:29
Wohnort: Dort wo's leckcher Fondüü hat

Beitrag von crX »

joa, browser sind da sehr tolerant...

laut w3-validator sollte beides korrekt sein :allright:
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

@Kiffi: Zwischen den Sachen, die Browser noch so darstellen wie sie gedacht sind, und denen, die korrekt sind, ist nochmal ein ziemlicher Unterschied.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Zwischen den Sachen, die Browser noch so darstellen wie sie gedacht sind,
> und denen, die korrekt sind, ist nochmal ein ziemlicher Unterschied.

da magst Du bzgl. des HTML-Parsens wohl recht haben. Beim XML-Parsen
jedoch sind die Browser ziemlich genau.

Grüße ... Kiffi
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

geht doch aber um XHTML, das is IMHO in dem Zusammenhang eher HTML als XML

EDIT: Um nicht nochmal einen neuen Offtopic-post zu bringen: Kiffi hat recht :( sry für den verplanten post von mir, musste irgendwie mein nicht vorhandenes Wissen an den Mann bringen :freak:
Zuletzt geändert von bluejoke am 30.12.2004 18:09, insgesamt 1-mal geändert.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
ORANGE
Beiträge: 19
Registriert: 29.12.2004 21:03

Beitrag von ORANGE »

Also mit ' anstatt " hat Quicktime nen XML Syntax Fehler gemeldet.
Obwohl es an sich auch ein übles rumgeficke ist, hab ich es ma mit replacestring gemacht. Funzt soweit auch bloß der source sieht gamlig aus.

Code: Alles auswählen

If OpenWindow(0, 100, 200, 290, 200, #PB_Window_SystemMenu, "Quicktime Playlist")

 If CreateGadgetList(WindowID())
    StringGadget  (0,  10, 10, 202, 24, "")
    SetGadgetText (0, "C:\")
    ButtonGadget  (1, 220, 10, 60 , 24, "Create")
    ListViewGadget(2,  10, 40, 270, 150)
  EndIf

  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_EventGadget
      If EventGadgetID() = 1 ; Read
              
        ClearGadgetItemList(2)  ; Clear all the items found in the ListView
        
        path$ = PathRequester("Choose folder",path$)
        
        
        If ExamineDirectory(0, path$, "*.mov")

          Repeat

            FileType = NextDirectoryEntry()
            If FileType
              FileName$ = DirectoryEntryName()
              If FileType = 2 ; Directory type
                FileName$ = "(DIR) "+FileName$  
              
              EndIf
            
              AddGadgetItem(2, -1, FileName$)
            
            EndIf

          Until FileType = 0 
          
        Else
          MessageRequester("Error","Can't examine this directory: "+GetGadgetText(0),0)
        EndIf
      

        
        ; abc$ hieß erst 5$ für 5x space, da gab es aber nen syntax error, deshalb abc$ gg
        
        stringfuck:
        
        
        
        OpenFile(0,path$ + "1quicklist.mov")
        
        Delay(20)
        
        abc$ = "     "
        
        str$ = "SMILtext<smil xmlns:qt=@http://www.apple.com/quicktime/resources/smilextensions@ qt:autoplay=@true@ qt:time-slider=@true@ qt:immediate-instantiation=@false@ qt:chapter-mode=@clip@>"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(string$)
        
        WriteStringN("<head>")
        
        str$ = "<meta name=@full@ content=@test@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+string$)        

        str$ = "<meta name=@author@ content=@@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+string$)        
        
        str$ = "<meta name=@copyright@ content=@@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+string$)

        str$ = "<meta name=@qt-userdata-swr@ content=@Made with QT Quicklist@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+string$)
        
        WriteStringN(abc$+ "<layout>")
        
        str$ = "<root-layout width=@480@ height=@360@ background-color=@black@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+abc$+string$) 
        
        Delay(20)
        
        realcontent:
        
        
        count = CountGadgetItems(2)
        
        Delay(20)
        
        For k = 1 To count 
        
        str$ = "<region id=@SpatialContent" + Str(k) + "@ width=@480@ height=@360@ top=@0@ left=@0@ fit=@fill@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+abc$+string$)
        
        Next
        
        WriteStringN(abc$+"</layout>")
        WriteStringN("</head>")
        WriteStringN("<body>")
        WriteStringN(abc$+ "<seq>")
        
        
        For c = 1 To count
        
        SetGadgetState(2,0)
        
        file$ = GetGadgetText(2)
        
        RemoveGadgetItem(2,0)
        
        str$ = "<video id=@mediaFile" + Str(c) + "@ src=@"+ file$ +"@ qt:chapter=@"+ file$ +"@ region=@SpatialContent" + Str(c) +"@ />"
        
        string$ = ReplaceString(str$,"@",Chr(34))
        
        WriteStringN(abc$+abc$+string$)
        
        Next 
               
        WriteStringN(abc$ +"</seq>")
        WriteStringN("</body>")
        WriteStringN("</smil>")
        
        CloseFile(0)
        
      
            EndIf
    EndIf  

  Until EventID = #PB_EventCloseWindow

EndIf

End 
Wer bock hat kann es ja ma testen.

Hat jemand noch ne Idee das Problem zu umgehen?

edit redacid: Code-Tags gesetzt.
Zuletzt geändert von ORANGE am 30.12.2004 17:06, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> geht doch aber um XHTML, das is IMHO in dem Zusammenhang
> eher HTML als XML

nöh, XHTML ist dem XML näher verwandt als dem HTML. Aus diesem Grund
müssen hier auch alles Tags ordnungsgemäss geschlossen werden (im
Gegensatz zu HTML).

http://de.wikibooks.org/wiki/XHTML

@ORANGE:

Bitte Code-Tags setzen!

Grüße ... Kiffi
Antworten