# Fehler im Code aber wo?



## anfänger15 (3. Mai 2007)

Hallo 

bin gerade dabei ein FileSplitter zu schreiben, der geht auch wunderbar allerdings hab ich mir jetzt diese methode geschrieben damit ich in meiner JProgressBar den aktuellen Zustand ausgeben kann. Da funktioniert aber etwas nicht

hier mal mein code:

```
class SplitThread extends Thread {

	public void run() {
		progress.start();

		int i = 1;
		long pos = 0;

		try {
			PrintWriter filenamen = new PrintWriter(new FileWriter(outDatei
					+ "/" + f.getName() + ".split"));
			PrintWriter dateiende = new PrintWriter(new FileWriter(outDatei
					+ "/dateityp.SF"));
			dateiende.print((f.getName()));
			dateiende.close();

			FileOutputStream out = null;
			FileInputStream in = new FileInputStream(f);
			FileChannel inChannel = in.getChannel();
			inChannel.position(pos);

			ByteBuffer buffer = ByteBuffer.allocate(8192);

			long größe1 = größe;

			while (pos < f.length()) {
				out = new FileOutputStream(new File(outDatei + "/SplitFile "
						+ i + ".SF"));

				int count = inChannel.read(buffer);
				while ((count > -1) && (!isInterrupted())
						&& größe1 >= (inChannel.position())) {

					if (buffer.hasArray()) {

						out.write(buffer.array(), 0, count);
						buffer.clear();

						count = inChannel.read(buffer);
					}

					prozessBarStatus = (int) ((100 / (((double) (f.length()))) * ((double) inChannel
							.position())));
					System.out.println(pos);

				}
				größe1 = größe1 + größe;
				pos = pos + größe;
				filenamen.println("SplitFile " + i + ".SF");
				i++;

				out.flush();
				out.close();
			}
			in.close();
			inChannel.close();
			filenamen.close();

		} catch (IOException e) {
		}
		ok.setEnabled(true);
		splitthread.interrupted();

	}
```

Irgend was ist da noch falsch, weil pro erstellter datei 0,1MB fehlt.
Ich denke mal das ich irgendwo die falschen zahlen nehme.

Das hier funktioniert:

```
int count = inChannel.read(buffer);
    while((count > -1) && (! isInterrupted())&& größe1 >= (inChannel.position())){
    	
   	if(buffer.hasArray()){

  	 
       out.write(buffer.array(),0,count);
       buffer.clear();
       
         count = inChannel.read(buffer);
  }
```

Ich will ja aber mehrere Dateien erstellen und das geht nicht(bzw. nicht vollständig)

wäre net wenn jemand den fehler entdeckt und hilft

danke

[/edit] lesbarkeit verbessert


----------



## NTB (3. Mai 2007)

Wenn ich das richtig sehe, fehlt Dir das Ende, weil Du immer 8196 als Buffergröße hast und abbrichst, sobald Du -1, also Streamende einliest. D.h. wenn der letzte Buffer gefüllt werden soll, und im Stream nur noch 5000 statt 8196 Bytes übrig sind, dann schreibst Du diese 5000 Bytes gar nicht mehr. Kann das sein? Bin mir grad nicht ganz sicher, ist aber ein typisches Problem

P.S.: Äh, wäre schön, wenn Du Deinen Code etwas besser formatieren könntest, das nächste Mal   Dadurch kann man ihn leichter lesen
Zumindest mit Eclipse kann man das automatisch machen lassen.


----------



## anfänger15 (4. Mai 2007)

Also mal ein beispiel:

Ich will eine 3.47MB große datei in 1MB große dateien splitten.
Dann bekomme ich 4 Dateien und bei der ersten datei (das stimmt soweit) eine datei mit 1MB und dann noch 2 dateien mit 0,99MB, die eigentlich auch 1MB haben sollten und noch die letzte datei mit 478KB.

Das heißt doch wenn ich das richtig sehe das die erste und letzte datei die richtige größe haben, nur bei allen dateien dazwichen stimmt es nicht,oder?

danke


----------



## Wildcard (4. Mai 2007)

Redest du von MB oder MiB?
Ein MB sind 1 000 000 bytes, ein MiB (das zeigen die meisten Betriebssysteme an) sind hingegen 1 048 576 Bytes.


----------



## NTB (4. Mai 2007)

hmm ok, dann splitte doch einfach mal eine 13 byte grosse textdatei in 5 byte grosse teile auf und schau, was passiert...


----------



## anfänger15 (4. Mai 2007)

ich rede dann wohl von MiB

Wenn ich die textdatei in 5byte große stücke splitte passiert gar nichts.Erst wenn ich das 

```
ByteBuffer buffer = ByteBuffer.allocate(8192);
```

durch das(also mit 1)
	
	
	
	





```
ByteBuffer buffer = ByteBuffer.allocate(1);
```
ändere werden3 dateien erstellt.
Die erste (wie schon vorher richtig) mit 5 byte.Die 2 datei mit 4 byte und die letzte datei mit 2 byte.Es fehlen also 2byte 
???:L 

wär echt supi wenn ihr den fehler findet

[/Edit]
Die textdatei die ich gesplittet habe hatte den inhalt

1234567890123

Die erste splittdatei hatte den inhalt

12345

die 2 splittdatei

7890

und die 3 splittdatei

23

Es fehlt also bei jeder weiteren splittdatei(außer der 1 datei) der anfang(mit der größe des bufferes).

[/Edit]

NTB ich denke du hattest recht und ich schreib den lezten buffer nicht mehr wenn er nicht voll ist.

Wie mache ich das??


----------



## NTB (4. Mai 2007)

äh, wenn Du den letzten Buffer nicht schreibst, dann fehlt doch nicht der Anfang eines Teils.

Ich finde es ein bischen schwer, Dir zu helfen, weil Dein Code schlecht formatiert ist, weil Deine Variablen nicht sehr aussagekräftig sind (größe1, größe, häää?) und weil er so nicht ausführbar ist.

mach mal aus

```
int count = inChannel.read(buffer);
    while((count > -1) && (! isInterrupted())&& größe1 >= (inChannel.position())){
       
      if(buffer.hasArray()){

     
       out.write(buffer.array(),0,count);
       buffer.clear();
       
         count = inChannel.read(buffer);
  }
```

das hier:

```
while (((count =inChannel.read(buffer)) > -1) && (!isInterrupted())
                        && größe1 >= (inChannel.position())) {

                    if (buffer.hasArray()) {

                        out.write(buffer.array(), 0, count);
                        buffer.clear();

                    }

                }
```


klappt das?


----------



## anfänger15 (4. Mai 2007)

Ok hab den code jetzt mal besser formatiert. Nicht ausführbar ???:L  was meinst du damit? 

Danke für dein code aber geht leider immer noch nicht. Es gibt immer noch das gleiche Problem.

Vielleicht ist es deutlicher wenn ich es mal mit einem ByteBuffer mit der größe 2 beschreibe.

Dann wird wenn ich die 13byte größe datei in 5byte dateien splitte 

eine datei mit 4byte und dem inhalt

1234 erstellt. Es fehlt also ein zeichen.

bei der 2 datei wird auch eine datei mit 4byte erstellt und dem inhalt 7890. Es fehlt auch ein zeichen(die zahl 6).

Bedeutet meiner meinung nach, dass der ByteBuffer mit den zahlen 5,6 (der letzte) nicht in die jeweiligen dateien geschrieben wurde.

So ist es auch bei der letzten datei die 1byte groß ist und den inhalt 

3 hat (eigentlich sollte sie aber den inhalt 123 haben)

hat es fehlt also wieder der ByteBuffer (ich denke mal der wurde bereits bei der datei 2 gelesen aber nicht geschrieben. Deshalb fehlt bei der 3 datei der anfang und nicht der schluss, da der bytebuffer schon bei datei 2 gelesen wurde, kann aber auch nicht stimmen) :bahnhof: 

trotzdem danke an alle die mir bisher geholfen haben.


----------



## Guest (5. Mai 2007)

hier mal der gesamte Code der hoffentlich ausführbar ist zum testen


```
import java.io.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.lang.Exception;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.nio.ByteBuffer;

class Split extends JFrame {

	JProgressBar prozessBar;

	JButton ok;

	JTextField ladenDateigröße;

	JTextField DateiAnzahl;

	JTextField ladenDatei;

	JTextField speichernDateigröße;

	JTextField speichernVerzeichnis;

	String dateiname;

	JPanel frame;

	boolean split = true;

	File f;

	String outDatei;

	long größe;

	String ladeort;

	String speicherort;

	String verzeichnis;

	int prozessBarStatus = 0;

	progressBaranzeige progress = new progressBaranzeige();

	SplitThread splitthread = new SplitThread();

	VerbindenThread verbinden = new VerbindenThread();

	class ActionLauscher implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			String event = e.getActionCommand();

			if (event.equals("OK")) {

				if (split) {
					ok.setEnabled(false);
					java.text.DecimalFormat df = new java.text.DecimalFormat(
							"0.00");
					f = new File(ladenDatei.getText());

					double int1 = (((double) (f.length())))
							/ (Double
									.parseDouble(speichernDateigröße.getText()));
					DateiAnzahl.setText(df.format(Math.ceil(int1)));
					outDatei = speichernVerzeichnis.getText();
					größe = ((Long.parseLong(speichernDateigröße.getText())));
					splitthread.start();

				}
				if (!split) {
					ok.setEnabled(false);
					ladeort = verzeichnis;
					speicherort = speichernVerzeichnis.getText();
					outDatei = ladenDatei.getText();
					verbinden.start();

				}

			}

			if (event.equals("split")) {
				split = true;

			}
			if (event.equals("verbinden")) {
				split = false;
			}

			if (event.equals("beenden")) {

				splitthread.interrupted();
				System.exit(0);
			}
		}
	}

	Split(String title) {
		super(title);
		frame = new JPanel();
		frame.setLayout(new GridLayout(5, 1));
		JPanel north = new JPanel();
		JPanel middle1 = new JPanel();
		middle1.setLayout(new BorderLayout());
		JPanel middle1in = new JPanel();
		middle1in.setLayout(new BorderLayout());
		JPanel middle2 = new JPanel();
		JPanel middle3 = new JPanel();
		JPanel south = new JPanel();
		south.setLayout(new BorderLayout());
		JPanel south1 = new JPanel();

		prozessBar = new JProgressBar();
		prozessBar.setStringPainted(true);
		prozessBar.setValue(0);

		javax.swing.border.TitledBorder titledBorder1 = new javax.swing.border.TitledBorder(
				"Modus wählen");
		north.setBorder(titledBorder1);
		javax.swing.border.TitledBorder titledBorder2 = new javax.swing.border.TitledBorder(
				"Splitfilegröße festlegen");
		middle1.setBorder(titledBorder2);
		javax.swing.border.TitledBorder titledBorder3 = new javax.swing.border.TitledBorder(
				"Datei wählen");
		middle2.setBorder(titledBorder3);
		javax.swing.border.TitledBorder titledBorder4 = new javax.swing.border.TitledBorder(
				"Speicherort wählen");
		middle3.setBorder(titledBorder4);

		ladenDatei = new JTextField(20);
		speichernVerzeichnis = new JTextField(20);
		JLabel ladenDateiText = new JLabel("Datei wählen: ");
		JLabel speichernVerzeichnisText = new JLabel("Speicherort wählen: ");

		JButton ladenDateiButton = new JButton("...");
		JButton speichernDateiButton = new JButton("...");

		ladenDateigröße = new JTextField(10);
		DateiAnzahl = new JTextField(10);
		speichernDateigröße = new JTextField(10);
		ladenDateigröße.setEnabled(false);
		DateiAnzahl.setEnabled(false);

		ok = new JButton("OK");
		JButton abbrechen = new JButton("beenden");
		JRadioButton split = new JRadioButton("split");
		split.setSelected(true);
		JRadioButton verbinden = new JRadioButton("verbinden");

		ladenDateiButton.addActionListener(new ActionLauscher() {
			public void actionPerformed(ActionEvent e) {
				String event = e.getActionCommand();

				laden();

			}
		});
		speichernDateiButton.addActionListener(new ActionLauscher() {
			public void actionPerformed(ActionEvent e) {
				speichern();
			}
		});
		ok.addActionListener(new ActionLauscher());
		abbrechen.addActionListener(new ActionLauscher());
		split.addActionListener(new ActionLauscher());
		verbinden.addActionListener(new ActionLauscher());

		ButtonGroup t = new ButtonGroup();
		JLabel ladenDateigrößeLabel = new JLabel("Dateigröße:");
		JLabel speichernDateigrößeLabel = new JLabel("Splitfile Dateigröße:");
		JLabel DateiAnzahlLabel = new JLabel("Anzahl:");
		JLabel einheit1 = new JLabel("MB");
		JLabel einheit2 = new JLabel("MB");

		JPanel links = new JPanel();
		links.setLayout(new GridLayout(3, 1));
		JPanel mitte = new JPanel();
		mitte.setLayout(new GridLayout(3, 1));
		JPanel rechts = new JPanel();
		rechts.setLayout(new GridLayout(3, 1));

		t.add(split);
		t.add(verbinden);
		north.add(split);
		north.add(verbinden);
		links.add(ladenDateigrößeLabel);
		mitte.add(ladenDateigröße);
		rechts.add(einheit1);
		links.add(speichernDateigrößeLabel);
		mitte.add(speichernDateigröße);
		rechts.add(einheit2);
		links.add(DateiAnzahlLabel);
		mitte.add(DateiAnzahl);
		middle1in.add(links, BorderLayout.WEST);
		middle1in.add(mitte, BorderLayout.CENTER);
		middle1in.add(rechts, BorderLayout.EAST);
		middle1.add(middle1in, BorderLayout.CENTER);
		middle2.add(ladenDateiButton);
		middle2.add(ladenDatei);
		middle3.add(speichernDateiButton);
		middle3.add(speichernVerzeichnis);
		south1.add(ok);
		south1.add(abbrechen);
		south.add(prozessBar, BorderLayout.NORTH);
		south.add(south1, BorderLayout.SOUTH);

		frame.add(north);
		frame.add(middle1);
		frame.add(middle2);
		frame.add(middle3);
		frame.add(south);

		getContentPane().add(frame);
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}

	public void laden() {
		if (split) {
			JFileChooser laden = new JFileChooser();
			laden.setMultiSelectionEnabled(false);

			if (laden.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
				File name = laden.getSelectedFile();
				dateiname = name.getAbsolutePath();

				ladenDatei.setText(dateiname);

				java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");
				File splitFile = new File(ladenDatei.getText());
				ladenDateigröße.setText(df
						.format(((double) (splitFile.length()))));
			}

		}

		if (!split) {
			JFileChooser laden = new JFileChooser();
			laden.setMultiSelectionEnabled(false);
			laden.setFileFilter(new DateiFilter());

			if (laden.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
				File name = laden.getSelectedFile();
				dateiname = name.getAbsolutePath();
				File name1 = laden.getCurrentDirectory();
				verzeichnis = name1.getAbsolutePath();

				ladenDatei.setText(dateiname);

				java.text.DecimalFormat df = new java.text.DecimalFormat("0.00");

			}

		}

	}

	public void speichern() {
		JFileChooser speichern = new JFileChooser();

		speichern.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

		if (speichern.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) {

			File name = speichern.getSelectedFile();
			dateiname = name.getAbsolutePath();
			speichernVerzeichnis.setText(dateiname);
		}

	}

	class DateiFilter extends javax.swing.filechooser.FileFilter {
		public String getDescription() {
			return "SplitFile (*.split)";
		}

		public boolean accept(File file) {
			if (file.isDirectory())
				return true;
			else if (file.getName().endsWith(".split"))
				return true;
			else
				return false;
		}
	}

	public static void main(String[] args) {
		Split fenster = new Split("split");
		fenster.setSize(320, 450);
		fenster.setVisible(true);

	}

	class progressBaranzeige extends Thread {

		public void run() {
			try {

				while (prozessBarStatus != 100) {
					prozessBar.setValue(prozessBarStatus);

					progress.sleep(50);

				}
			} catch (InterruptedException e) {
			}
		}
	}

	class SplitThread extends Thread {

		public void run() {
			progress.start();

			int i = 1;
			long pos = 0;

			try {
				PrintWriter filenamen = new PrintWriter(new FileWriter(outDatei
						+ "/" + f.getName() + ".split"));
				PrintWriter dateiende = new PrintWriter(new FileWriter(outDatei
						+ "/dateityp.SF"));
				dateiende.print((f.getName()));
				dateiende.close();

				FileOutputStream out = null;
				FileInputStream in = new FileInputStream(f);
				FileChannel inChannel = in.getChannel();
				inChannel.position(pos);

				ByteBuffer buffer = ByteBuffer.allocate(2);

				long größe1 = größe;

				while (pos < f.length()) {
					out = new FileOutputStream(new File(outDatei
							+ "/SplitFile " + i + ".SF"));

					int count;

					while (((count = inChannel.read(buffer)) > -1)
							&& (!isInterrupted())
							&& größe1 >= (inChannel.position())) {

						if (buffer.hasArray()) {

							out.write(buffer.array(), 0, count);
							buffer.clear();

						}

						prozessBarStatus = (int) ((100 / (((double) (f.length()))) * ((double) inChannel
								.position())));

					}

					größe1 = größe1 + größe;
					pos = pos + größe;

					filenamen.println("SplitFile " + i + ".SF");
					i++;

					out.flush();
					out.close();
				}
				in.close();
				inChannel.close();
				filenamen.close();

			} catch (IOException e) {
			}
			ok.setEnabled(true);
			splitthread.interrupted();
			splitthread.stop();

		}
	}

	class VerbindenThread extends Thread {

		public void run() {

		}
	}
}
```

findet niemand den fehler? :bahnhof: 

danke


----------



## anfänger15 (5. Mai 2007)

sry hab vergessen mich einzuloggen


----------



## anfänger15 (7. Mai 2007)

Also ich weiß mittlerweile, dass ich wohl bei jeder datei die beim splitten entsteht den letzten ByteBuffer nicht schreibe. Woran liegt das? Ist in meiner while schleife ein fehler?


----------



## SlaterB (7. Mai 2007)

cool ist ja
Double.parseDouble(speichernDateigröße.getText()));
und dann wenig später
((Long.parseLong(speichernDateigröße.getText()))

----
überhaupt ist deine ganze GUI total nerviger Schrott, wenn die Grundfunktionalität noch nicht geht,
TESTEN in einem KONSOLENPROGRAMM mit vorgegebenen Werten,
z.B.

```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

class Split
{

    public static void main(String[] args)
        throws Exception
    {

        int i = 1;
        long pos = 0;


        File f = new File("c:/temp/test.txt");
        PrintWriter filenamen = new PrintWriter(new FileWriter("c:/temp/namen.txt"));
        PrintWriter dateiende = new PrintWriter(new FileWriter("c:/temp/ende.SF"));
        dateiende.print((f.getName()));
        dateiende.close();

        FileOutputStream out = null;
        FileInputStream in = new FileInputStream(f);
        FileChannel inChannel = in.getChannel();
        inChannel.position(pos);

        ByteBuffer buffer = ByteBuffer.allocate(2);

        long größe = 8;
        long größe1 = größe;
        System.out.println("f.length: " + f.length());
        while (pos < f.length())
        {
            out = new FileOutputStream(new File("c:/temp/SplitFile " + i + ".txt"));

            int count;
            System.out.println("neue Datei: " + i + ", pos: " + pos);
            while (größe1 >= inChannel.position() && (count = inChannel.read(buffer)) > -1)
            {
                if (buffer.hasArray())
                {
                    out.write(buffer.array(), 0, count);
                    System.out.println("write: " + count);
                    buffer.clear();
                }
            }
            buffer.clear();
            größe1 = größe1 + größe;
            pos = pos + größe;

            filenamen.println("SplitFile " + i + ".txt");
            i++;

            out.flush();
            out.close();
        }
        in.close();
        inChannel.close();
        filenamen.close();

    }
}
```
was bei ByteBuffer und FileChannel alles schiefgehen kann, kann ich nicht so genau sagen,
bei mir half aber, nach der inneren while-Schleife ein
buffer.clear(); 
einzufügen,


edit:
noch ein böser Fehler:
while (((count = inChannel.read(buffer)) > -1)
                     && (!isInterrupted()) 
                     && größe1 >= (inChannel.position())) { 

hier werden  bytes gelesen, aber dann nicht verarbeitet, da die zweite/ dritte Bedingung nicht erfüllt ist
-> Bedingungen vertauschen!

damit ergibt sich vielleicht auch der Teilfehler weiter oben (buffer.clear hinter while-Schleife), dürfte dann nicht mehr nötig sein, schadet aber auch nicht?


----------



## anfänger15 (7. Mai 2007)

> Ich finde es ein bischen schwer, Dir zu helfen, weil Dein Code schlecht formatiert ist, weil Deine Variablen nicht sehr aussagekräftig sind (größe1, größe, häää?) und weil er so nicht ausführbar ist.



Deshalb hab ich den ganzen Code gepostet


Danke für dein Code aber mir geht er nicht wenn ich dort eine 13byte größe datei splitte erhalte ich eine 8byte große datei und eine 3 byte große.
Fehlen da nicht 2 byte ???:L 

Wäre nett wenn das noch irgendjemand hinbekommt
danke


----------



## anfänger15 (7. Mai 2007)

ok durch tauschen der bedingungen in der schleife geht es jetzt  :applaus: 



> cool ist ja
> Double.parseDouble(speichernDateigröße.getText()));
> und dann wenig später
> ((Long.parseLong(speichernDateigröße.getText()))



nehme ich nicht das Double parseDouble um die Prozent in der JProgressBar zu berechnen und das 2 damit ich die größe der datei hab um sie dann beim splitten hochzuzählen ???:L 

danke an alle die mir geholfen haben.


----------



## Wildcard (7. Mai 2007)

So ist's wohl besser:

```
public class BufferExample {
	public static void main(String[] args) throws IOException {
		split(new File("test.txt"), 5);
	}

	private static void split(File file, int maxbytes) throws IOException {
		FileChannel in = new FileInputStream(file).getChannel();
		int counter = 1;
		int bytes = 0;
		while(bytes<file.length())
		{
			FileChannel out = new FileOutputStream(new File(file.getAbsolutePath()+counter)).getChannel();
			counter++;
			long toWrite = Math.min(maxbytes, file.length()-bytes);
			in.transferTo(bytes, toWrite, out);
			bytes+=toWrite;
			out.force(false);
			out.close();
		}
		in.close();
	}
}
```
 :wink:


----------



## anfänger15 (7. Mai 2007)

ja so hatte ich das alles auch schon bis ich gemerkt hab das ich z.B. bei einer 400mb großen datei ewig warten muss bis man das Programm wieder schließen konnte.

siehe hier

aber trotzdem danke


----------



## Wildcard (7. Mai 2007)

Da ändert der ByteBuffer aber genau nichts. Das ist nur ein zusätzlicher Umweg.
Wenn du dein Programm tatsächlich 'hart' beenden willst: System.exit(0);


----------



## SlaterB (7. Mai 2007)

> nehme ich nicht das Double parseDouble um die Prozent in der JProgressBar zu berechnen und das 2 damit ich die größe der datei hab um sie dann beim splitten hochzuzählen

dann mache 
long length = parseLong(text);
double lengthAsLong = (double) length;

oder ähnliches, aber nicht zweimal parsen


----------



## anfänger15 (8. Mai 2007)

SlaterB Ok mach ich

Wildcard ja aber während transfarTo ausgeführt wird kann ich ja nicht System.exit(0) aufruhfen oder?
Somit kann man das Programm doch immer nur dann beenden wenn Split eine neue datei erstellt oder hab ich da was falsch verstanden ???:L


----------



## SlaterB (8. Mai 2007)

ob dein ActionListener reagiert oder nicht und du damit System.exit(0) aufrufen kannst,
hängt doch nur davon ab, ob du den Datei-Code in einen Thread nebenläufig ausführst oder ohne Thread die GUI blockierst,

welchen Code du zum Dateisplitten verwendest, ist schnuppe,
also versuchs ruhig mit dem schöneren von Wildcard wenns klappt


----------



## anfänger15 (8. Mai 2007)

Ok danke für die antworten ich hab es jetzt mal mit meiner methode gelassen, da es mich jetzt schon rießig freut das es läuft. Wildcards methode ist zwar besser aber da bekomme ich es nicht hin das das Programm beendet wird also lass ich es jetzt einfach mal so weil jetzt läuft es ja dank eurer hilfe :applaus:


----------

