Seite 2 von 2

Verfasst: 11.05.2007 21:26
von D@nte
swt

Du brauchst auch Daten für die de nen Speicherbereich reservierst...
Kannst doch nit einfach den Source aus'em zusammenhang reissen und PacketSize keinen Wert zuweisen

Verfasst: 12.05.2007 09:47
von Joel
Ja und dass ist das Problem ich will mehrere Daten nur zusammenfügen und in dem Code kann man die nur zusammenfügen wenn man die vorher geteilt hat.

Ich brauche einen Code der alle Dateien in zb. dem Ordner C:\test
zusammen fügt also erst die Datei 1.VOB dann die Datei 2.VOB dann die 3.VOB...


Gruss, Joel

Verfasst: 12.05.2007 14:22
von D@nte
Wat denn nu?!
Ich dachte du willst zerlegen -> verschicken -> wieder zusammen setzen?!
Ist das jetzt noch das was du machen willst oder willste jetzt nur noch sowas wie WinZIP das alle Dateien in einem Ordner zu einer Datei zusammenfasst?!

Falls de wie in deinem ersten Post beschrieben zerlegen & zusammensetzen willst dann ist das was in meinem Link stand genau das was du suchst, musste natürlich anpassen ähnlich dem:

Code: Alles auswählen

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Editor_0
  #String_0
  #String_1
  #String_2
  #Button_0
  #Button_1
  #Button_2
  #Button_3
EndEnumeration

Path.s = ""
DefaultPacketSize.l = 50000
SourceFile.s       = ""
DestinationFile.s  = ""

Procedure SplitFile(SourceFile.s, DefaultPacketSize.l)
  ClearGadgetItemList(#Editor_0)
  OpenFile(0, SourceFile)

  Path.s        = GetPathPart(SourceFile) 
  Size.l        = Lof(0)
  PacketCount.l = Size / DefaultPacketSize
  PacketSize.l  = Size / PacketCount
  RestSize.l    = Size - PacketSize * PacketCount

  *mem = AllocateMemory(PacketSize)
 
  For i = 1 To PacketCount
    ReadData(0, *mem, PacketSize)
    OpenFile(i,Path + GetFilePart(SourceFile) + Str(i) + ".pck")
      WriteData(i,*mem, PacketSize)
    CloseFile(i)
    AddGadgetItem(#Editor_0, i, GetFilePart(SourceFile) + Str(i) + ".pck")
  Next i
 
  If RestSize > 0
    OpenFile(PacketCount+1, Path + GetFilePart(SourceFile) + Str(PacketCount+1) + ".pck")
      WriteData(PacketCount+1,*mem, RestSize)
    CloseFile(PacketCount+1)
    AddGadgetItem(#Editor_0, PacketCount+1, GetFilePart(SourceFile) + Str(PacketCount+1) + ".pck")
  EndIf

  FreeMemory(*mem)

  CloseFile(0)

  OpenFile(PacketCount+2, Path + GetFilePart(SourceFile) + ".pck0")
      WriteString(PacketCount+2, GetFilePart(SourceFile) + ";" + Str(DefaultPacketSize) + ";" + Str(Size))
    CloseFile(PacketCount+2)
    AddGadgetItem(#Editor_0, 0, GetFilePart(SourceFile) + ".pck0")
EndProcedure

Procedure MergeFile(DestinationFile.s)
  ClearGadgetItemList(#Editor_0)
  ReadFile(0, DestinationFile)
    Path.s              = GetPathPart(DestinationFile)
    Line.s              = ReadString(0)
    Name.s              = StringField(Line, 1, ";")
    DefaultPacketSize.l = Val(StringField(Line, 2, ";"))
    Size.l              = Val(StringField(Line, 3, ";"))
    
    PacketCount.l = Size / DefaultPacketSize
    PacketSize.l  = Size / PacketCount
    RestSize.l    = Size - PacketSize * PacketCount
  CloseFile(0)
  
  OpenFile(0, Path + Name)
    *mem = AllocateMemory(PacketSize)

    For i = 1 To PacketCount
      OpenFile(i, Path + Name + Str(i) + ".pck")
        ReadData(i, *mem, PacketSize)
      CloseFile(i)
      WriteData(0,*mem,PacketSize)
      AddGadgetItem(#Editor_0, PacketCount, "Extrahiert: " + Path + Name + Str(i) + ".pck")
    Next i

    If RestSize > 0
      OpenFile(PacketCount+1, Path + Name + Str(PacketCount+1) + ".pck")
         ReadData(PacketCount+1, *mem, PacketSize)
      CloseFile(PacketCount+1)
      WriteData(0,*mem,RestSize)
      AddGadgetItem(#Editor_0, PacketCount+1, "Extrahiert: " + Path + Name + Str(PacketCount+1) + ".pck")
    EndIf

    FreeMemory(*mem)

  CloseFile(0)
EndProcedure

If OpenWindow(#Window_0, 216, 0, 320, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(#Window_0))
    EditorGadget(#Editor_0, 10, 10, 150, 270, #PB_Editor_ReadOnly)
    StringGadget(#String_0, 170, 10, 100, 20, "")
    StringGadget(#String_1, 170, 40, 100, 20, "")
    StringGadget(#String_2, 170, 70, 100, 20, Str(DefaultPacketSize))
    ButtonGadget(#Button_0, 280, 10, 30, 20, "...")
    ButtonGadget(#Button_1, 280, 40, 30, 20, "...")
    ButtonGadget(#Button_2, 170, 230, 140, 20, "Split")
    ButtonGadget(#Button_3, 170, 260, 140, 20, "Merge")
      
  EndIf

  Repeat
   
    Select WindowEvent() ;{
    
      Case #PB_Event_CloseWindow
        Quit = 1
      
      Case #PB_Event_Gadget
      
      Select EventGadget()
              
        Case #Button_0
          If GetGadgetText(#String_0) = ""
            Path = "C:\"
          Else
            Path = GetGadgetText(#String_0)
          EndIf
          SourceFile = OpenFileRequester("2 Split", Path, "Alle Dateien (*.*)|*.*", 0)
          SetGadgetText(#String_0, SourceFile)

        Case #Button_1
          If GetGadgetText(#String_1) = ""
            Path = "C:\"
          Else
            Path = GetGadgetText(#String_1)
          EndIf
          DestinationFile = OpenFileRequester("2 Merge", Path, "Index (*.pck0)|*.pck0", 0)
          SetGadgetText(#String_1, DestinationFile)
          Path = GetPathPart(DestinationFile)

        Case #Button_2
          If SourceFile <> ""
            SplitFile(SourceFile, Val(GetGadgetText(#String_2)))
          EndIf
        
        Case #Button_3
          If DestinationFile <> ""
            MergeFile(DestinationFile)
          EndIf
    
      EndSelect
    
    EndSelect   
 
  Until Quit = 1

EndIf
  
End

Verfasst: 17.05.2007 18:46
von Alves
Ahh, der Joel wieder.

Joel, lass mal gut sein sein mit den VObs zusammenfügen. Die sind genau richtig so, dass die getrennt snd. Die Anleitung für dne Mediaplayer, die zu lesen, liegt in .IFO Datei. Also mach nich, sonst kannste dne Film gar nich mehr guckn. Wenn du die DVD aufm Rechner gucken willst, dann nimm einfach VLC Player, Verzeichnis öffnen und wähl das aus, ibn dem die ganzen VOBs drin sind.