Last 10 Files oder so

zioProduct

Erfahrenes Mitglied
*Kopfmitvollerwuchtauftischhaudamitalleimbüroerschreckenundvorlauterschockvomstuhlfallenwasdieimunterenstockerschrecktdiediefeuerglockedrückendanndiefeuerwehreinrücktunddashausabduschtdamitgrosserwasserschadenentstehtwelchernichtaufmichzurückzuführenistundichdiearbeitfürneweilestehenlassenkann*

:) :) :) Viel spass beim lesen :) :) :)

Hmmm, wiso geht das nicht?:

Code:
if(que10.Count!=0)
			{
				if(que10.Count==11)
					que10.Dequeue();

				que10.CopyTo(lastTen,0);

				for(int b= lastTen.Length; b >0;b--)
				{
					int j = 0;
					actTen[j] = Convert.ToString(lastTen.GetValue(b));
					j++;
				}

				tcChoiceListInput1.Items.Add(actTen);
			}

Leider weiss ich nicht was er für einen Fehler ausgibt, da ich das Diagnose-Tool was von den DLL's ausgeht noch nicht programmiert habe. Somit geht der Fehler einfach unter, und das einzige was geschiet, er zeigt mir nichts in meiner List an -.-*.

Help, i need somebodys help *sing* ;)
 

Christian Kusmanow

Erfahrenes Mitglied
Viel spass beim lesen
Du Typ. :D Bin grad von Stuhl gefallen. :p

Hey komm hier gehts jetzt wirklich nicht um was, was Dir Probleme bereiten sollte. :)
Alles in ein Try-Catch block gepackt und mit throw an die übergeornnete Instanz weitergeben
und schon weisst was los ist.

//Edit: int j = 0; gehört nicht in die Schleife. Hast lastTen richtig initalisiert?
Machs doch so wie ich es gepostet hatte.

MfG, cosmo
 
Zuletzt bearbeitet:

zioProduct

Erfahrenes Mitglied
HAHA, hoffe hast ne beule am Kopp ;)

Jo, so wies du hasst gehts auch nicht :) geschieht das gleiche, deshalb wollt ichs selber machen :) Jo ich mach das mitm catch noch, und wehe er bringt mir nix verständliches :)

*edit*

Error = Index was outside the bounds of the array

Hmm, ich frag mich gerade wiso der draussen sein soll oO
 
Zuletzt bearbeitet:

Christian Kusmanow

Erfahrenes Mitglied
Error = Index was outside the bounds of the array
Das wird aber langsam trivial.
OMG, warum machst heut sowas. Bist doch sonst nicht so....

Mann mann mann, hier:
Code:
tcChoiceListInput1.Items.Clear();
if( que10.Count == 11 ){
	que10.Dequeue();

	lastTen = que10.ToArray();

	for( byte b = (byte) lastTen.Length; b > 0; b-- )
		tcChoiceListInput1.Items.Add( Convert.ToString( lastTen.GetValue(b) ) )
}
Is zwar radikal, geht aber sicher. :)
Musst nur noch das neue Item hinzufügen.

MfG, cosmo
 

zioProduct

Erfahrenes Mitglied
Tut mir Sorry, scheiss Tag oder so :)

Aber du bist auch nicht besser ;)

Bei
lastTen = que10.ToArray();

sagt er:
(1728): Cannot implicitly convert type 'object[]' to 'string[]'

HA! Von wegen funktioniert sicher :) Siehste das Problem mag halt eben ein Problem sein :)

:suspekt:
 

Christian Kusmanow

Erfahrenes Mitglied
ARGH
Mach Dir bitte immer vorher Gedanken welcher Typ Daten gebraucht wird
und pass Dir bitte deine Sammlungen vorher so an,
damit Du den Konvertierungsscheiss nicht unsauber mit in Code klatschen musst.
Letztendlich sollte nur noch der Programmablauf zu sehen sein.
Mal als kleiner Tipp am Rande. :)
Code:
using System.Collections;

namespace QueueEx
{
/// <summary>
/// Stelle eine Queue ähnliche Sammlung dar, welche 10 Dateien speichert.
/// </summary>
public class QueueEx : ArrayList {

	const byte _FileCount = 10;
	public QueueEx() : base( _FileCount ) {}

	public void Enqueue( string Path ) {

		if( base.Count >= _FileCount ){
			
			base.RemoveAt( base.Count -1 );
		}
		base.Insert( 0, Path );
	}

	public string Dequeue() {

		if ( base.Count > 0 ){
			string returnString = string.Empty;
			base.RemoveAt( base.Count -1 );
			return returnString;
		}
		return string.Empty;
	}


	public string[] ToStringArray() {
		string[] temp = new string[ base.Count ];
		IEnumerator enumer = base.GetEnumerator();
		byte count = 0;
		while ( enumer.MoveNext() ){
			temp[ count ] = (string) enumer.Current;
			count++;
		}
		return temp;
	}
}
Hoffe Dir endlich weitergeholfen zu haben. :)

MfG, cosmo
 
Zuletzt bearbeitet:

zioProduct

Erfahrenes Mitglied
*Hust* naja du bist ja Langsam mein persönlicher Held, weil du dir soviel Zeit nimmst, aber Anzeigen in der ListBox? Nene, da hat mein C# ganz andere pläne ;)

Specified Cast is not Valid

Ich schrei gleich, so n kleines Problem und ich bekomm Plaque von... Kanns ja ned sein.. Also an Tagen wie diesen bezweifle ich das ich zum Programmierer diene -.-*

folgendes:

Code:
	private string[] lastTen;

if(filedialog.DialogResult == DialogResult.OK)
			{
				string pfad = filedialog.FileName;
				tcLblMarkFile.Text = filedialog.FileName;
				FileStream wStream = new FileStream(aktMFile, FileMode.OpenOrCreate,FileAccess.Write);
				BinaryWriter binWrite = new BinaryWriter(wStream);
				binWrite.Write(pfad);
				que10.Enqueue(pfad);
					
			

				binWrite.Flush();
				binWrite.Close();
				wStream.Close();
					
				
			}
			try
			{
				tcChoiceListInput1.Items.Clear();
				if( que10.Count == 11 )
				{
					que10.Dequeue();

					lastTen = (string[]) que10.ToArray();

					for( byte b = (byte) lastTen.Length; b > 0; b-- )
						tcChoiceListInput1.Items.Add( Convert.ToString( lastTen.GetValue(b) ) );
				}
				else
				{
					lastTen = (string[]) que10.ToArray();

					for( byte b = (byte) lastTen.Length; b > 0; b-- )
						tcChoiceListInput1.Items.Add( Convert.ToString( lastTen.GetValue(b) ) );
				}
			}
			catch(Exception ex)
			{MessageBox.Show(ex.Message);}

Mehr ist es nicht... Und es kann doch nicht sein das ich heute so ein verplanter Idiot bin :eek: Liegt bestimmt dran, weil ich mich schon auf The OC heute abend Freue :suspekt:

Falls du noch Nerven hast, hilfe Cpt. Cosmo, mein Held in dunkler Stunde!!

;)
 
Zuletzt bearbeitet:

Christian Kusmanow

Erfahrenes Mitglied
Ich kann auch fast nicht mehr.
zioProduct hat gesagt.:
Also an Tagen wie diesen bezweifle ich das ich zum Programmierer diene -.-*
An solchen Tagen kannst herrausfinden ob Du was als Programmierer taugst zwecks Gedult. (!)
Das ist ein fester Bestandteil deiner persönlichen Entwicklung.
Gib Dir mal bitte ein bissel mehr Mühe und rück deinen Code bitte ENDLICH ein (!)

Nimm bitte das QueueEx. Ich hab es oben erweitert.
Code:
private string[] lastTen;// sorry
private QueueEx que10 = new QueueEx();

if( filedialog.DialogResult == DialogResult.OK ){
	string pfad = filedialog.FileName;
	tcLblMarkFile.Text = filedialog.FileName;
	FileStream wStream = new FileStream(aktMFile, FileMode.OpenOrCreate,FileAccess.Write);
	BinaryWriter binWrite = new BinaryWriter(wStream);
	binWrite.Write(pfad);

	que10.Enqueue( pfad );	// hier wird automatisch das erste wieder entfernt
				// sofern über 9 Items vorhanden sind.
	binWrite.Flush();
	binWrite.Close();
	wStream.Close();
}
try{
	tcChoiceListInput1.Items.Clear();
	lastTen = que10.ToStringArray(); // jetzt bekommst ein StringArray
	for( byte b = (byte) lastTen.Length; b > 0; b-- )
		tcChoiceListInput1.Items.Add( lastTen[b] );
}
catch( Exception ex ){
	throw;
}
In das Queue ziehst das erste raus und schiebst das neue wieder vorne rein.
Geht zwar aber du hast die ersten einträge dann immer noch darin stehen.
Du solltest Dir also eine "Vorne rein - Hinten raus" Sammlung selber striken.
Das ist mit nem Blatt Papier und 1 max Stunde Zeit getan.
Mal auf was passiert und versuch es dann so zu impementieren.
 
Zuletzt bearbeitet:

zioProduct

Erfahrenes Mitglied
VIELEN DANK COSMO!!
Aber es funktioniert nicht -.-*

Ich schmeiss die jetzt in einen Ecken -.-* Naja, immerhin kann ich nochmal alles schreiben, da ich deinen Code über meinen geschmissen habe

Trotzdem Danke für deine Bemühungen, aber ich bin atm echt n wenig PISSED, von der -.-* Selbst meine ArrayList will er nicht in die ChoiceList adden, aber denn scheiss queue allein schon -.-* Naja ich schmeiss jetzt meinen Rechner ausm Fenster geh zu meinem Chef, hau ihm eine rein, renn so schnell ich kann davon, geh in ein Puff, lass all mein Geld liegen, trinke bis ich nimmer stehen kann, schrei aber die "Angestellten" im Puff an, das sie schuld sind das er nimmer steht, schmeiss die olle in ne ecke, ge vors polizeirevier, schmeiss ihnen die Leere VodkaFlasche durch das Fenster wo der Polizeileutnant gerade die Sekrätärin vernascht, piss an die Tür, merk dabei nicht das alles über meine Hose rünnt, geh zu meiner Ex, welche mich aber nicht reinlässt weil ich nach Pissestink, vor lauter Wut reiss ich mich die Hosen samt shorts vom leib, genau nem scheiss Dobermann an den Kopf, dann renn ich so schnell ich kann, mit meinem nackten Schniedel durch die stadt, wobei mich meine ganze Verwandschaft sieht, und mich daraufhin enterben, was mich nicht wirklich stört, weil ich von dem scheiss Hund abhauenkonnte, jedoch den LKW von links zuspät sah, welcher mir seinen Rückspiegel an Kopf rammt, worauf ich in Ohmacht fall, natürlich im Schwulen-Viertel. Am nächsten morgen werde ich mit nem wunden , nem Abgefrohrenen Schniedel, ner schweren Alkoholvergiftung,ohne Geld, ohne Job, im Wasserbett des PolizeiLeutnants aufwachen, da dieser nicht will, das ich Ihn bei seiner Frau verrate, will er für den Rest des Lebens mein Diener sein und für mich sorgen....

So, bei den Aussichten. Tschau, mann sieht sich :) :) :) :)

Naja davon abgsehen kann ich auch einfach versuchen wie ich das Ding sonst zum laufen bekomme ;)

Trotzdem nochmal Danke, und ich hoff, meine kleine Orgie da oben heitert deine Strapazierten Nerven meinetwegen wieder auf ;)

mfg
ziop :)

ps: sry, aber mochte nimmer auf Rechtschreibung schauen :eek:
 

Christian Kusmanow

Erfahrenes Mitglied
Scheiss egal jetzt.
Schau noch mal den letzten Post an. Ich ab ihn noch mal überarbeitet.
Sorry für meine Schlamperei, aber ich hab noch viel mehr um die Ohren. ;)
Das Du dich jetzt ja prima abgeregt hast, kannst es jetzt nochmal versuchen.

Mach das mal mit eingenen Sammlung die automatisch das letzte rausschmeisst.
Das ist nicht viel, nur ein paar if's und ein bissel CopyTo. ;)

Wenn's Dir jetzt aber gänzlich auf den Sack geht, dann mach mal ne Pause.
Verarbeite den Tag heute und danach sieht es wieder ganz anders aus.
Is bei mir auch so gewesen, ein bissel Pause/Verarbeiten und auf einmal wird alles klar. :)

lg, cosmo