Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - quiqueroal

#1
Perfecto ya lo resolvi... el problema era que el Ingredient tempIng = new Ingredient() iba dentro del for... estaba usando el mismo objeto todo el rato, por eso siempre me ponia el mismo valor.. ¬¬ que cabeza la mia..
#2
Hola compañeros!

Os cuento, es que tengo un problema... mirad, tengo una función tal que asi:

Código (csharp) [Seleccionar]
public Ingredient[] WriteLVIngredient(ListView List)
{
Ingredient[] Ingr = new Ingredient[List.Items.Count];
int i = 0, index, long1, long2, long3, long4;
string Quantity = string.Empty;
string Name = string.Empty;
string temp = string.Empty;
string unt = string.Empty;
Ingredient tempIng = new Ingredient();


if (List.HasItems)
{
for (i = 0; i < List.Items.Count; i++)
{
tempIng.Clear();
long1 = List.Items[i].ToString().Length; //total length of string//
long2 = long1 - (List.Items[i].ToString().IndexOf(" ")); //length of units and indredient name//
long3 = long1 - long2 + 1; //length of quantity of indredient without units//
Quantity = List.Items[i].ToString().Substring(0, List.Items[i].ToString().IndexOf(" ")); //quantity string without units//
temp = List.Items[i].ToString().Substring(long3); //this string contains units and ingredient name//
index = temp.IndexOf(" "); //index of first space in temp string//
long4 = (temp.Length) - index + 1;
unt = temp.Substring(0, index + 1);
tempIng.setUnit(unt); //Set the units of the quantity//
Name = temp.Substring(index);
tempIng.setQuantity(float.Parse((Quantity)));
tempIng.name = Name;
Ingr [i] = tempIng;
}
}
return Ingr;
}


y el problema es que el funcionamiento no es correcto, depurando me he dado cuenta de que el array Ingr en cada iteración del for hace lo siguiente:

1º iteración: escribe en el primer campo de valor i=0 lo que le corresponde.
2º iteración: limpia el primer campo i=0 poniendo a "libre" todos los valores de Ingr[0] y cuando llega el momento de escribir escribe el valor de Ingr[1] tanto en Ingr[0] como en Ingr[1]...
3º iteración: más de lo mismo...

no tengo ni idea de que puede ser, supongo que hago algo mal relacionado con que desconozco el comportamiento del lenguaje en ciertas ocasiones. Si alguien pudiese echarme una mano...

Un saludo y muchas gracias!
#3
Ok muchas gracias!! creo que sera mejor utilizar winforms porque de momento no hay mucho tiempo.. jajaja pero si lo recomiendas asi, creo que sera mi proximo tópico de investigacion jaja

Un saludo! y muchas gracias! ;-)
#4
Hola Compañeros!

Les cuento, tengo un problema a la hora de manejar un listview porque hay dudas acerca de como rellenarlo cuando tengo varias columnas. Estoy trabajando con WPF y la mayor parte de las cosas que encuentro por ahi son de Windows.Forms de modo que, lo que yo tengo es esto:

Código (csharp) [Seleccionar]
using(SqlConnection conn = EcnaDB.OpenConnection(Server))
{
SqlDataReader reader = EcnaDB.ReadDB(strSqlCommand, conn);

if (reader.HasRows)
{
nRegs = 0;
while (reader.Read())
{
nRegs++;
for (int i = 0; i < reader.FieldCount; i++)
{
alTemp.Add(reader.GetValue(i).ToString());
}
}
Lista.Items.Add(alTemp);
}


Lista es el ListView, alTemp es un arrayList y bueno, lo demas "desconocido" son funciones que hice yo. el problema que tengo es que cuando agrego el contenido del arrayList (como vi en algunos tutoriales) a mi listview lo unico que me aparecer es "(Collections)", se que el arraylist contiene el dato correcto porque lo mire en el modo debug pero a la hora de escribirlo en el listView escribe eso... "(Collections)" de modo que me temo que tal vez este método no valga.
Sé como hacerlo para listview de una sola columna pero en varias falla. De todas formas, que es mejor, ¿WPF o Windows.Forms? porque veo mucha mas informacion acerca de Windows.Forms...

Muchas gracias de antemano!! Un saludo!
#5
perfecto! ya lo he conseguido!  ;-)  ;-) muchas gracias, porque andaba pillado y confundido por el clásico C... en serio muchas gracias! un saludo!  :D
#6
Ok! muchisimas gracias por la informacion! voy a probar y ya cuento como ha salido!
muchas gracias en serio! un saludo! :) :)
#7
aaa vaaale ok! muchisimas gracias! es que estoy acostumbrado a C y pense que aqui era igual... y de que modo podría hacer esto? porque es algo que claramente hay que hacer a mano, dado que lo que pretendo es quitar unos caracteres que hay al inicio de una palabra, y me temo que la clase string no ofrece ningún método que haga esto..
muchas gracias!
#8
Hola compañeros. A ver cuento, soy nuevo en POO y por lo tanto en C# tambien.
Con lo que he encontrado un problema en parte de una aplicación y es que intentando copiar parte de un string en otro me dice que el string destino es de sólo escritura.. y lo que hago es lo siguiente. Este es el código del método:

Código (csharp) [Seleccionar]
public int MaxID(string tableName)
{
string IDname = "";
DB EcnaDB = new DB();
string Info = String.Empty;

for (int i = 0; i < tableName.Length - 1; i++)
{
if (tableName[i] == '.')
{
for (int j = i, k = 0; j < tableName.Length - 1; j++, k++)
{
IDname[k] = tableName[j]; //aqui me da el error//
}
}
}

Cmd = "select ID" + IDname + " from dbo." + tableName + " where Nombre = 'Contador'";
using (SqlConnection conn = EcnaDB.OpenConnection(Server))
{
SqlDataReader reader = EcnaDB.ReadDB(Cmd, conn);
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Info += reader.GetValue(i).ToString();
}
}
}
return Int32.Parse(Info);
}


En el for más anidado donde pongo el comentario //aqui me da el error// me suelta lo siguiente:

Error 1 No se puede asignar la propiedad o el indizador 'string.this[int]' (es de sólo lectura)

Espero que puedan ayudarme porque es de las tipicas tonterias que uno hace y no es capaz de darse cuenta y desquician bastante... ¬¬
Un saludo y gracias!