Autor
|
Tema: Partir archivo (Leído 7,190 veces)
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Estuve pensando sobre lo que quieres hacer y me vino a la mente trabajar con unos FileStream y funciona, lo que pasa que a la hora de crear los buffers ( byte[]) tienes que tener bien en cuenta el tamaño que le vas a dar para que tengan el tamaño exacto a la hora de unirlos. Para que no te queden corruptos, tienes que tener en cuenta bien la longitud de los ficheros que creas nuevos. Fijándote bien si la longitud del archivo es par o impar, para saber como controlar eso a la hora de picar el archivo. La clase FileStream tiene un método .Read() con el cual puedes leer (y guardar en un buffer ( byte[]) desde una posición dada ( offset) una cantidad de bytes determinados. No se si esta sea la mejor manera de hacerlo, pero es una. Puedes ir trabajando por ahi, me gustaría poder tirar el código ahora y ayudarte más pero ahora mismo estoy con poco tiempo, pero más tarde si tengo la oportunidad te ayudo un poco más. Salu2s Añado:Como te había comentado, estuve viendo una forma de hacerlo, que quizás no sea la mejor, pero me funciono bien. (No siempre la primera vez es la mejor forma de hacerlo) Ahora solo te queda ver si esto te sirve o puedes/quieres hacerle modificaciones: static void SplitFiles(string file) { FileStream loadedFile = new FileStream (file, FileMode .Open); //Aquí calculamos la primera mitad del archivo analizando si es par o impar la longitud completa. //En caso de que sea par le añadimos 1 y sino le añadimos 0 (lo dejamos como va) long firstHalfLength = (loadedFile.Length / 2) + ((loadedFile.Length % 2 != 0) ? 1 : 0); long secondHalfLength = loadedFile.Length / 2; //Creamos los bufferes con el tamaño calculado byte[] firstHalf = new byte[firstHalfLength ]; byte[] secondHalf = new byte[secondHalfLength ]; //Léemos los bytes del FileStream y los pasamos a los bufferes loadedFile.Read(firstHalf, 0, firstHalf.Length); //Lees la primera mitad loadedFile.Read(secondHalf, 0, secondHalf.Length); //Lees la segunda mitad loadedFile.Close(); //Creamos los FileStream para los nuevos ficheros y escribimos los bytes en los mismos FileStream firstFile = new FileStream ("fichero1.part1", FileMode .Create); firstFile.Write(firstHalf, 0, firstHalf.Length); firstFile.Close(); FileStream secondFile = new FileStream ("fichero1.part2", FileMode .Create); secondFile.Write(secondHalf, 0, secondHalf.Length); secondFile.Close(); } static void JoinFiles(string file1 , string file2) { //Abrimos los FileStream de los archivos FileStream fileStream1 = new FileStream (file1, FileMode .Open); FileStream fileStream2 = new FileStream (file2, FileMode .Open); //Creamos el buffer para los bytes byte[] joinedFiles = new byte[fileStream1 .Length + fileStream2 .Length]; //Leemos la primera mitad del archivo y la guardamos en el buffer nuevo fileStream1.Read(joinedFiles, 0, (int)fileStream1.Length); //Leemos la segunda mitad del archivo fileStream2.Read(joinedFiles, (int)(fileStream1.Length), (int)fileStream2.Length); fileStream1.Close(); fileStream2.Close(); //Escribimos el contenido del buffer en el nuevo fichero FileStream joinedFileStream = new FileStream ("output.jpg", FileMode .Create); joinedFileStream.Write(joinedFiles, 0, joinedFiles.Length); joinedFileStream.Close(); }
Lo hice haciendo dos métodos, uno para picarlo y otro para unirlos. Puedes mejorarlo para que al unirlo puedas identificar que archivos tiene que unir automáticamente al pasarle el nombre del primer archivo. Una manera de llamarlo sería: SplitFiles("file.jpg"); JoinFiles("fichero1.part1", "fichero1.Part2");
Añado: Veo que publicaste otro tema sobre lo mismo con algún código. Bueno, cualquier otra duda ya sabes. Pregunta Salu2s Veo que publicaste
|
|
« Última modificación: 25 Mayo 2015, 21:01 pm por DarK_FirefoX »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Aaquí tienes mi solución compelta para partir y unir archivos, eso si, lo desarrollé en VB.Net pero cómo siempre intentaré ayudar con la conversión en C# (conversión online y luego post-modificada por mi, pero no lo he llegado a testear). Por supuesto lo he desarrollado teniendo en cuenta que sea capaz de partir archivos exactamente a la mitad (teniendo en cuenta que 1 byte es la unidad, por ende, un archivo de 3 bytes no se podrá partir en 2 partes, a menos que adaptes el código fuente para incrementarle 1 byte a una de las dos partes en el buffer de escritura), si la idea te ha gustado y quieres utilizarla pero no te funciona la traducción a C#, siempre puedes compilar el código original escrito en VB.Net a una librería, y utilizarla desde tu proyecto C#.
• CaracterísticasPartir archivo en trozos según el tamaño de trozo especificado. Partir archivo en trozos según la cantidad de trozos especificada. Unir archivo previamente partido. Sobreescribir archivos, eliminar restos de archivos... Eventos para reportar el progreso (porcentajes) de las operaciones de partir y unir.
• Modo de empleoVB.Net:''' <summary> ''' Handles the <see cref="FileSplitter"/> instance. ''' </summary> Private WithEvents splitter As New FileSplitter() With {.BufferSize = .BufferSize} ' The file to split. Private ReadOnly filePath As String = "C:\File.ext" ' Split by chunk size. Me.splitter.Split(sourceFile:=filePath, chunkSize:=CInt(New IO.FileInfo(filePath).Length / 2), chunkName:="File.Part", chunkExt:="fs", overwrite:=True, deleteAfterSplit:=False) ' Or split by chunk amount. Me.splitter.Split(sourceFile:=filePath, chunkCount:=2, chunkName:="File.Part", chunkExt:="fs", overwrite:=True, deleteAfterSplit:=True) ''' <summary> ''' Handles the <see cref="FileSplitter.SplitProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. ''' </summary> ''' <param name="sender">The source of the event.</param> ''' <param name="e">The <see cref="FileSplitter.SplitProgressChangedArgs"/> instance containing the event data.</param> Private Sub Splitter_SplitProgressChangedArgs(ByVal sender As Object, ByVal e As FileSplitter.SplitProgressChangedArgs) _ Handles splitter.SplitProgressChanged labelSplit1.Text = String.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")) labelSplit2.Text = String.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")) labelSplit3.Text = String.Format("Current Chunk: {0} of {1}", CStr(e.ChunksCreated + 1), CStr(e.ChunksToCreate)) End Sub ''' <summary> ''' Handles the <see cref="FileSplitter.MergeProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. ''' </summary> ''' <param name="sender">The source of the event.</param> ''' <param name="e">The <see cref="FileSplitter.MergeProgressChangedArgs"/> instance containing the event data.</param> Private Sub Splitter_MergeProgressChangedArgs(ByVal sender As Object, ByVal e As FileSplitter.MergeProgressChangedArgs) _ Handles splitter.MergeProgressChanged labelMerge1.Text = String.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")) labelMerge2.Text = String.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")) labelMerge3.Text = String.Format("Current Chunk: {0} of {1}", CStr(e.ChunksMerged + 1), CStr(e.ChunksToMerge)) End Sub
C#:/// <summary> /// Handles the <see cref="FileSplitter"/> instance. /// </summary> private FileSplitter splitter = new FileSplitter { BufferSize = .BufferSize }; // The file to split. private readonly string filePath = "C:\\File.ext"; // Split by chunk size. this.splitter.Split(sourceFile: filePath, chunkSize : Convert .ToInt32(new IO .FileInfo(filePath ).Length / 2), chunkName: "File.Part", chunkExt: "fs", overwrite: true, deleteAfterSplit: false); // Or split by chunk amount. this.splitter.Split(sourceFile: filePath, chunkCount: 2, chunkName: "File.Part", chunkExt: "fs", overwrite: true, deleteAfterSplit: true); /// <summary> /// Handles the <see cref="FileSplitter.SplitProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="FileSplitter.SplitProgressChangedArgs"/> instance containing the event data.</param> private void Splitter_SplitProgressChangedArgs(object sender, FileSplitter.SplitProgressChangedArgs e) { labelSplit1.Text = string.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")); labelSplit2.Text = string.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")); labelSplit3.Text = string.Format("Current Chunk: {0} of {1}", Convert.ToString(e.ChunksCreated + 1), Convert.ToString(e.ChunksToCreate)); } /// <summary> /// Handles the <see cref="FileSplitter.MergeProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="FileSplitter.MergeProgressChangedArgs"/> instance containing the event data.</param> private void Splitter_MergeProgressChangedArgs(object sender, FileSplitter.MergeProgressChangedArgs e) { labelMerge1.Text = string.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")); labelMerge2.Text = string.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")); labelMerge3.Text = string.Format("Current Chunk: {0} of {1}", Convert.ToString(e.ChunksMerged + 1), Convert.ToString(e.ChunksToMerge)); } '======================================================= 'Service provided by Telerik (www.telerik.com) '=======================================================
• Código fuenteVB.Net: http://pastebin.com/kyqkdXZjC#: http://pastebin.com/DKfCWuw1• Demo FormVB.Net: http://pastebin.com/BjzEhPddC#: http://pastebin.com/Fq0QCJRi
|
|
« Última modificación: 28 Mayo 2015, 02:45 am por Eleкtro »
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Excelente @Eleкtro. Una clase bien limpia y comentada. Entendí varias cosas que no estaba muy claro. Ya con esto @Meta no tendrá problemas.
Salu2s
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Excelente @Eleкtro. Una clase bien limpia y comentada. Gracias pero creo que se te olvidó decir que también es una solución demasiado basta (grande, exagerada) xD, soy consciente de ello, para partir un archivo de 2 mb en 2 trozos no es necesario tanto y tu solución es suficiente y efectiva, yo simplemente comparto esto por que me apetecía crear un código rehutilizable que sirva para ayudar a resolver este problema pero también para ayudar a resolver otras necesidades y con algunas funcionalidades adicionales. Saludos!
|
|
|
En línea
|
|
|
|
DarK_FirefoX
Desconectado
Mensajes: 1.263
Be the change you wanna see in te world
|
Gracias pero creo que se te olvidó decir que también es una solución demasiado basta (grande, exagerada) xD, soy consciente de ello, para partir un archivo de 2 mb en 2 trozos no es necesario tanto y tu solución es suficiente y efectiva, yo simplemente comparto esto por que me apetecía crear un código rehutilizable que sirva para ayudar a resolver este problema pero también para ayudar a resolver otras necesidades y con algunas funcionalidades adicionales.
Saludos!
Quizás sea "exagerada" para el objetivo que tenía @Meta, pero en lo personal, siempre encuentro fascinante poder aprender algo y ampliar mi perspectiva de las cosas en cuanto a programación se refiere. Presto especial atención a nuevos puntos de vistas y perspectivas diferentes a las mías. PD: Sigo leyendo la clase para seguir entendiendo todo, así que te preguntaré si tengo alguna duda en algo!
|
|
|
En línea
|
|
|
|
Meta
|
Hola: Muchas gracias a todos. Probaré los ejemplos y eso que el primero me funciona de maravilla,a menos partirlo. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; // No olvidar. namespace Partir_Archivo { class Program { static void Main(string[] args) { const int CHUNKSIZE = 1024 * 1024; byte[] buffer; int i = 1; FileStream infile = new FileStream (@"Archivo.bin", FileMode .Open, FileAccess .Read); BinaryReader reader = new BinaryReader (infile ); reader.BaseStream.Position = 0; buffer = reader.ReadBytes(CHUNKSIZE); while (buffer.Length != 0) { FileStream outfile = new FileStream (@"File_" + i + ".bin", FileMode .CreateNew, FileAccess .Write); BinaryWriter writer = new BinaryWriter (outfile ); writer.Write(buffer); writer.Flush(); writer.Close(); outfile.Close(); buffer = reader.ReadBytes(CHUNKSIZE); i++; } reader.Close(); infile.Close(); } } }
Analizaré los ejemplos de arriba que me han mostrado. El tema de si hay 3 bytes, se puede partir de esta manera. Primer archivo ocupa dos bytes y el segundo 1 byte, sin problemas. Una pregunta que les hagoTengo un archivo de 48 M bit, quiero partir uno de 32 Mb (no Mega Byte) y el otro se queda en 16 M bit. ¿Cómo lo hago? Esto ya es más complicado, ya que quiero hacer un Form bien hecho que pueda elegir el archivo donde lo tengo ubicado, esta parte si se hacerlo, encontrar el archivo, ejejjeje. Ahora me falta esta parte como curiosidad, partirlo como y quiera. Si parto el de 48 Mb a 32 el primer archivo, luego crea el resto que sobra que son 16 M Bit como dije antes. Saludos.
|
|
« Última modificación: 4 Junio 2015, 18:35 pm por Meta »
|
En línea
|
|
|
|
Meta
|
Estuve pensando sobre lo que quieres hacer y me vino a la mente trabajar con unos FileStream y funciona, lo que pasa que a la hora de crear los buffers ( byte[]) tienes que tener bien en cuenta el tamaño que le vas a dar para que tengan el tamaño exacto a la hora de unirlos. Para que no te queden corruptos, tienes que tener en cuenta bien la longitud de los ficheros que creas nuevos. Fijándote bien si la longitud del archivo es par o impar, para saber como controlar eso a la hora de picar el archivo. La clase FileStream tiene un método .Read() con el cual puedes leer (y guardar en un buffer ( byte[]) desde una posición dada ( offset) una cantidad de bytes determinados. No se si esta sea la mejor manera de hacerlo, pero es una. Puedes ir trabajando por ahi, me gustaría poder tirar el código ahora y ayudarte más pero ahora mismo estoy con poco tiempo, pero más tarde si tengo la oportunidad te ayudo un poco más. Salu2s Añado:Como te había comentado, estuve viendo una forma de hacerlo, que quizás no sea la mejor, pero me funciono bien. (No siempre la primera vez es la mejor forma de hacerlo) Ahora solo te queda ver si esto te sirve o puedes/quieres hacerle modificaciones: static void SplitFiles(string file) { FileStream loadedFile = new FileStream (file, FileMode .Open); //Aquí calculamos la primera mitad del archivo analizando si es par o impar la longitud completa. //En caso de que sea par le añadimos 1 y sino le añadimos 0 (lo dejamos como va) long firstHalfLength = (loadedFile.Length / 2) + ((loadedFile.Length % 2 != 0) ? 1 : 0); long secondHalfLength = loadedFile.Length / 2; //Creamos los bufferes con el tamaño calculado byte[] firstHalf = new byte[firstHalfLength ]; byte[] secondHalf = new byte[secondHalfLength ]; //Léemos los bytes del FileStream y los pasamos a los bufferes loadedFile.Read(firstHalf, 0, firstHalf.Length); //Lees la primera mitad loadedFile.Read(secondHalf, 0, secondHalf.Length); //Lees la segunda mitad loadedFile.Close(); //Creamos los FileStream para los nuevos ficheros y escribimos los bytes en los mismos FileStream firstFile = new FileStream ("fichero1.part1", FileMode .Create); firstFile.Write(firstHalf, 0, firstHalf.Length); firstFile.Close(); FileStream secondFile = new FileStream ("fichero1.part2", FileMode .Create); secondFile.Write(secondHalf, 0, secondHalf.Length); secondFile.Close(); } static void JoinFiles(string file1 , string file2) { //Abrimos los FileStream de los archivos FileStream fileStream1 = new FileStream (file1, FileMode .Open); FileStream fileStream2 = new FileStream (file2, FileMode .Open); //Creamos el buffer para los bytes byte[] joinedFiles = new byte[fileStream1 .Length + fileStream2 .Length]; //Leemos la primera mitad del archivo y la guardamos en el buffer nuevo fileStream1.Read(joinedFiles, 0, (int)fileStream1.Length); //Leemos la segunda mitad del archivo fileStream2.Read(joinedFiles, (int)(fileStream1.Length), (int)fileStream2.Length); fileStream1.Close(); fileStream2.Close(); //Escribimos el contenido del buffer en el nuevo fichero FileStream joinedFileStream = new FileStream ("output.jpg", FileMode .Create); joinedFileStream.Write(joinedFiles, 0, joinedFiles.Length); joinedFileStream.Close(); }
Lo hice haciendo dos métodos, uno para picarlo y otro para unirlos. Puedes mejorarlo para que al unirlo puedas identificar que archivos tiene que unir automáticamente al pasarle el nombre del primer archivo. Una manera de llamarlo sería: SplitFiles("file.jpg"); JoinFiles("fichero1.part1", "fichero1.Part2");
Añado: Veo que publicaste otro tema sobre lo mismo con algún código. Bueno, cualquier otra duda ya sabes. Pregunta Salu2s Veo que publicaste He intentado hacerlo per ono me sale. ¿Puedes poner el programa completo? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; // No olvidar. namespace Partir_Archivo_2 { class Program { static void Main(string[] args) { } } }
Al menos una opción que diga Cortar en dos, y el otro Pegar. Saludos.
|
|
|
En línea
|
|
|
|
Meta
|
Aaquí tienes mi solución compelta para partir y unir archivos, eso si, lo desarrollé en VB.Net pero cómo siempre intentaré ayudar con la conversión en C# (conversión online y luego post-modificada por mi, pero no lo he llegado a testear). Por supuesto lo he desarrollado teniendo en cuenta que sea capaz de partir archivos exactamente a la mitad (teniendo en cuenta que 1 byte es la unidad, por ende, un archivo de 3 bytes no se podrá partir en 2 partes, a menos que adaptes el código fuente para incrementarle 1 byte a una de las dos partes en el buffer de escritura), si la idea te ha gustado y quieres utilizarla pero no te funciona la traducción a C#, siempre puedes compilar el código original escrito en VB.Net a una librería, y utilizarla desde tu proyecto C#.
• CaracterísticasPartir archivo en trozos según el tamaño de trozo especificado. Partir archivo en trozos según la cantidad de trozos especificada. Unir archivo previamente partido. Sobreescribir archivos, eliminar restos de archivos... Eventos para reportar el progreso (porcentajes) de las operaciones de partir y unir.
• Modo de empleoVB.Net:''' <summary> ''' Handles the <see cref="FileSplitter"/> instance. ''' </summary> Private WithEvents splitter As New FileSplitter() With {.BufferSize = .BufferSize} ' The file to split. Private ReadOnly filePath As String = "C:\File.ext" ' Split by chunk size. Me.splitter.Split(sourceFile:=filePath, chunkSize:=CInt(New IO.FileInfo(filePath).Length / 2), chunkName:="File.Part", chunkExt:="fs", overwrite:=True, deleteAfterSplit:=False) ' Or split by chunk amount. Me.splitter.Split(sourceFile:=filePath, chunkCount:=2, chunkName:="File.Part", chunkExt:="fs", overwrite:=True, deleteAfterSplit:=True) ''' <summary> ''' Handles the <see cref="FileSplitter.SplitProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. ''' </summary> ''' <param name="sender">The source of the event.</param> ''' <param name="e">The <see cref="FileSplitter.SplitProgressChangedArgs"/> instance containing the event data.</param> Private Sub Splitter_SplitProgressChangedArgs(ByVal sender As Object, ByVal e As FileSplitter.SplitProgressChangedArgs) _ Handles splitter.SplitProgressChanged labelSplit1.Text = String.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")) labelSplit2.Text = String.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")) labelSplit3.Text = String.Format("Current Chunk: {0} of {1}", CStr(e.ChunksCreated + 1), CStr(e.ChunksToCreate)) End Sub ''' <summary> ''' Handles the <see cref="FileSplitter.MergeProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. ''' </summary> ''' <param name="sender">The source of the event.</param> ''' <param name="e">The <see cref="FileSplitter.MergeProgressChangedArgs"/> instance containing the event data.</param> Private Sub Splitter_MergeProgressChangedArgs(ByVal sender As Object, ByVal e As FileSplitter.MergeProgressChangedArgs) _ Handles splitter.MergeProgressChanged labelMerge1.Text = String.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")) labelMerge2.Text = String.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")) labelMerge3.Text = String.Format("Current Chunk: {0} of {1}", CStr(e.ChunksMerged + 1), CStr(e.ChunksToMerge)) End Sub
C#:/// <summary> /// Handles the <see cref="FileSplitter"/> instance. /// </summary> private FileSplitter splitter = new FileSplitter { BufferSize = .BufferSize }; // The file to split. private readonly string filePath = "C:\\File.ext"; // Split by chunk size. this.splitter.Split(sourceFile: filePath, chunkSize : Convert .ToInt32(new IO .FileInfo(filePath ).Length / 2), chunkName: "File.Part", chunkExt: "fs", overwrite: true, deleteAfterSplit: false); // Or split by chunk amount. this.splitter.Split(sourceFile: filePath, chunkCount: 2, chunkName: "File.Part", chunkExt: "fs", overwrite: true, deleteAfterSplit: true); /// <summary> /// Handles the <see cref="FileSplitter.SplitProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="FileSplitter.SplitProgressChangedArgs"/> instance containing the event data.</param> private void Splitter_SplitProgressChangedArgs(object sender, FileSplitter.SplitProgressChangedArgs e) { labelSplit1.Text = string.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")); labelSplit2.Text = string.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")); labelSplit3.Text = string.Format("Current Chunk: {0} of {1}", Convert.ToString(e.ChunksCreated + 1), Convert.ToString(e.ChunksToCreate)); } /// <summary> /// Handles the <see cref="FileSplitter.MergeProgressChangedArgs"/> event of the <see cref="Splitter"/> instance. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="FileSplitter.MergeProgressChangedArgs"/> instance containing the event data.</param> private void Splitter_MergeProgressChangedArgs(object sender, FileSplitter.MergeProgressChangedArgs e) { labelMerge1.Text = string.Format("Total Progress: {0}%", e.TotalProgress.ToString("n1")); labelMerge2.Text = string.Format("Chunk Progress: {0}%", e.ChunkProgress.ToString("n1")); labelMerge3.Text = string.Format("Current Chunk: {0} of {1}", Convert.ToString(e.ChunksMerged + 1), Convert.ToString(e.ChunksToMerge)); } '======================================================= 'Service provided by Telerik (www.telerik.com) '=======================================================
• Código fuenteVB.Net: http://pastebin.com/kyqkdXZjC#: http://pastebin.com/DKfCWuw1• Demo FormVB.Net: http://pastebin.com/BjzEhPddC#: http://pastebin.com/Fq0QCJRiBuen trabajo. ¿Puedes pasarme el proyecto completo? El correo puedes verlo por aquí. Me parece un programa muy completo, echo y derecho. Hay que probarlo.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
¿Puedes pasarme el proyecto completo? Solo tienes que crear un nuevo proyecto y reemplazar la Class principal (Form1), por esta class, que ya genera los controles del form: Saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crear archivo reproducible de DVD a partir de archivo MPG con Canopus ProCoder
Multimedia
|
aula18
|
2
|
5,734
|
8 Septiembre 2004, 23:28 pm
por Songoku
|
|
|
Como partir un archivo
Programación Visual Basic
|
WarGhost
|
2
|
1,487
|
10 Marzo 2006, 13:00 pm
por Gorky
|
|
|
Partir archivo
.NET (C#, VB.NET, ASP)
|
Meta
|
4
|
3,958
|
11 Agosto 2014, 00:05 am
por Meta
|
|
|
Partir archivo con C#
.NET (C#, VB.NET, ASP)
|
Meta
|
1
|
2,312
|
25 Mayo 2015, 21:27 pm
por Stakewinner00
|
|
|
Creando un tablero a partir de un archivo
« 1 2 »
Programación C/C++
|
Sothu
|
17
|
6,733
|
13 Enero 2016, 18:29 pm
por MAFUS
|
|