|
When you do a build in Visual Studio, it typically goes into the Release or Debug directory. This is the build output directory.
Could you please stop using text speak? I find it painful to read, and it has no place in a professional programming site.
|
|
|
|
|
I have a console app in C# that runs for a very long time. Basically, it loops through from one to a brazillian for days on end. Depending on conditions met, it will print certain output. Nothing unusual there.
Is it possible to press a key and have it tell me which loop index I'm in? I do not want to programmatically print the index every Nth time or second. I would rather have it wait until I press a key and have it spit it out.
I guess from a threaded Windows app, this would be easier. I'm trying to see if there's a way to do it from a command-line app on-demand, without having to do it iteratively.
|
|
|
|
|
You could always use Console.KeyAvailable to do this. This is a none blocking method, so you could use that to output the variable, e.g.
if (Console.KeyAvailable)
Console.WriteLine("Currently at index {0}", index);
|
|
|
|
|
Perfect, almost!
I had to add two more lines arround the WriteLine command:
Console.Write("\b"); and
Console.ReadKey(false);
The former deletes (backspaces) the character entered, while the latter stops printing a million times. I could also only accept ENTER for printing.
|
|
|
|
|
Rather than wring a backspace to the console, which I think can be problematic in certain situations, you could use the ReadKey(true) function:
if (Console.KeyAvailable)
{
while (Console.KeyAvailble) Console.ReadKey(true);
Console.WriteLine("At index {0}", index);
}
|
|
|
|
|
Thanks, much better! My method was working without echoing in Win XP, but echoing in Win 7. This way fixes that.
Small typo, Console.KeyAvailable.
|
|
|
|
|
I'm trying for manytime to do this... I don't get how to write a Main class which in it an int List gets values from the user, here is what I did so far... It makes a Run Time error:
int x;
List<int> lis = new List<int>();
Node<int> chou = lis.GetFirst();
x = int.Parse(Console.ReadLine());
lis.GetFirst().SetInfo(x);
while (chou.GetInfo() != -1)
{
x = int.Parse(Console.ReadLine());
chou.SetInfo(x);
chou = chou.GetNext();
}
All I need to know is what is the correct code.. Thank u very much תודה רבה
|
|
|
|
|
I would use:
List<int> list = new List<int>();
while (true)
{
int x;
if (int.TryParse(Console.ReadLine(), out x))
{
if (x < 0)
{
break;
}
list.Add(x);
}
}
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
there is a program of a document manager that pushes the document to a Queue
There are 3 questions on 3 different threads, base on the same program
this is the THIRD one
the program is
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
namespace scratchpad3
{
class Program
{
public static void Main()
{
var dm = new DocumentManager<Document>();
dm.AddDocument(new Document("Title A", "Sample A"));
dm.AddDocument(new Document("Title B", "Sample B"));
dm.DisplayAllDocuments();
if (dm.IsDocumentAvailable)
{
Document d = dm.GetDocument();
Console.WriteLine(d.Content);
Console.Read();
}
}
}
public class DocumentManager<T>
where T : IDocument
{
private readonly Queue<T> documentQueue = new Queue<T>();
public void AddDocument(T doc)
{
lock (this)
{
documentQueue.Enqueue(doc);
}
}
public bool IsDocumentAvailable
{
get { return documentQueue.Count > 0; }
}
public T GetDocument()
{
T doc = default(T);
lock (this)
{
doc = documentQueue.Dequeue();
}
return doc;
}
public void DisplayAllDocuments()
{
foreach (T doc in documentQueue)
{
Console.WriteLine(doc.Title);
}
}
}
public interface IDocument
{
string Title { get; set; }
string Content { get; set; }
}
public class Document : IDocument
{
public Document()
{
}
public Document(string title, string content)
{
this.Title = title;
this.Content = content;
}
public string Title { get; set; }
public string Content { get; set; }
}
}
Q3) Let us take a view of this part of the coding:-
public void AddDocument(T doc) // /
|
|
|
|
|
This has nothing whatsoever to do with pass by reference[^]. T just happens to be a reference type, which just means that the thing being passed by value is itself a reference. And what's a "reference variable" supposed to be anyway?
Member 9939423 wrote: Why this anomaly? What anomaly? Nothing out of the ordinary is going on here.
|
|
|
|
|
thank you for answering, at first
What i mean is that, when we declare a type we do :
<class_name> var; //----------------------------------------(1)
Here var is a reference variable
now when we objectify
var = new <class_name>(); //---------------------------------(2)
a new area is defined -- this is called object
when we say
T doc
what i mean is that is it a reference variable like (1)
or an object creation like (2)
|
|
|
|
|
Neither, it isn't "doing" anything. A declaration "does" nothing.
When you pass that thing into that method, no object is created, but the reference is copied.
|
|
|
|
|
there is a program of a document manager that pushes the document to a Queue
There are 3 questions on 3 different threads, base on the same program
this is the 2nd question
the program is :-
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
namespace scratchpad3
{
class Program
{
public static void Main()
{
var dm = new DocumentManager<Document>();
dm.AddDocument(new Document("Title A", "Sample A"));
dm.AddDocument(new Document("Title B", "Sample B"));
dm.DisplayAllDocuments();
if (dm.IsDocumentAvailable)
{
Document d = dm.GetDocument();
Console.WriteLine(d.Content);
Console.Read();
}
}
}
public class DocumentManager<T>
where T : IDocument
{
private readonly Queue<T> documentQueue = new Queue<T>();
public void AddDocument(T doc)
{
lock (this)
{
documentQueue.Enqueue(doc);
}
}
public bool IsDocumentAvailable
{
get { return documentQueue.Count > 0; }
}
public T GetDocument()
{
T doc = default(T);
lock (this)
{
doc = documentQueue.Dequeue();
}
return doc;
}
public void DisplayAllDocuments()
{
foreach (T doc in documentQueue)
{
Console.WriteLine(doc.Title);
}
}
}
public interface IDocument
{
string Title { get; set; }
string Content { get; set; }
}
public class Document : IDocument
{
public Document()
{
}
public Document(string title, string content)
{
this.Title = title;
this.Content = content;
}
public string Title { get; set; }
public string Content { get; set; }
}
}
Please refer to line indicated as "//************************1
"
& also Please refer to line indicated as "//************************2"
Q2) Here if we note this :
public class DocumentManager<T>
where T : IDocument {// code}
var dm = new DocumentManager<Document>();
when T is constrained for type IDocument , how could we manage:
<Document
>
|
|
|
|
|
there is a program of a document manager that pushes the document to a Queue
There are 3 questions on 3 different threads, base on the same program
the program is :-
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
namespace scratchpad3
{
class Program
{
public static void Main()
{
var dm = new DocumentManager<Document>();
dm.AddDocument(new Document("Title A", "Sample A"));
dm.AddDocument(new Document("Title B", "Sample B"));
dm.DisplayAllDocuments();
if (dm.IsDocumentAvailable)
{
Document d = dm.GetDocument();
Console.WriteLine(d.Content);
Console.Read();
}
}
}
public class DocumentManager<T>
where T : IDocument
{
private readonly Queue<T> documentQueue = new Queue<T>();
public void AddDocument(T doc)
{
lock (this)
{
documentQueue.Enqueue(doc);
}
}
public bool IsDocumentAvailable
{
get { return documentQueue.Count > 0; }
}
public T GetDocument()
{
T doc = default(T);
lock (this)
{
doc = documentQueue.Dequeue();
}
return doc;
}
public void DisplayAllDocuments()
{
foreach (T doc in documentQueue)
{
Console.WriteLine(doc.Title);
}
}
}
public interface IDocument
{
string Title { get; set; }
string Content { get; set; }
}
public class Document : IDocument
{
public Document()
{
}
public Document(string title, string content)
{
this.Title = title;
this.Content = content;
}
public string Title { get; set; }
public string Content { get; set; }
}
}
Please refer to line indicated as "//************************1"
Q1) How would these 2 declarations and its corrosponding objects differ :
i )
IDocument ido = new IDocument();
and
ii)
public class DocumentManager<T> where T : IDocument {// code}
var dm = new DocumentManager<IDocument>(); // pls note this IS A DEVIATION form // the code
|
|
|
|
|
Well, i) doesn't work because IDocument is an interface - which can't be instantiated because there's no implementation of it. It's just a contract.
|
|
|
|
|
In my windown application, I have a listview, which contains two columns. One of the subitem in a row contains the data as below.
"Failed testcase path=C:\temp\test.jpg"
I need to provide hyperlink to only "C:\temp\test.jpg". If I click on the same, it should open the corresponding image.
I tried by changing the property HotTaracking to true.
listView1.HotTracking = true;
But it shows hyperlinks to all the rows in listview.
Is there a way to achieve this?
|
|
|
|
|
I wrote a simple keylooger and i test it on win7 and all things is work successfuly but it dont work on xp system and show this message
"unable to find a version of runtime to run this application " how can i solve this proplem????
c#
|
|
|
|
|
It means that you are using a version of the dotNet Framework that is not installed on the XP machine. Ensure that the correct version is installed and your application should run.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
I hope for your own good, that you're writing that keylogger purely out of academic curiosity. Deploying such a piece of software on a machine unbeknownst to its user is like opening Pandora's box or a can of worms if you like. Depending on what jurisdiction you live in the legal implications might be quite severe. So if you plan on using this covertly you'd better be prepared and have your ass covered by a legal department.
Regards,
— Manfred
"I had the right to remain silent, but I didn't have the ability!"
Ron White, Comedian
|
|
|
|
|
I want to save a collection of custom objects. It seems that I succeed but when I try to retrieve the setting after the program restarts, the data is gone. I have searched extensively for the solution but to no avail. Here is what I have. Any help would be deeply appreciated.
In my settings.cs file I have added the following code.
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public List<Account> Accounts
{
get
{
return ((List<Account>)(this["Accounts"]));
}
set
{
this["Accounts"] = value;
}
}
Then I have the class marked as serializable. I have the following code at window close and as you can see it does compile so it picks up on the code and the data is there after I save it using the debugger to verify.
Properties.Settings.Default.Accounts = accounts.List;
Properties.Settings.Default.Save();
All should be ok when I run the following code except the data just isn't there as it has a value of null.
if (Properties.Settings.Default.Accounts != null)
{
accounts.List = Properties.Settings.Default.Accounts;
}
|
|
|
|
|
Did you check the XML file to make sure its getting written out?
|
|
|
|
|
Where does it put the xml file and if it's not writing to the xml file where should I look to find out why?
|
|
|
|
|
On Windows 7 it'll put it in C:\Users\<username>\AppData\<CompanyName>\<long gibberish directory name that begins with your EXE name>\<version>\user.config
Your code looks like it should work, just make sure you call Properties.Settings.Default.Save(); and write the value to Properties.Settings.Default.PropName.
How are you specifying versions? If you are doing the auto increment version thing (or you change your version number between runs), there is an additional step you need to do to migrate the settings. You will need to call UpgradeSettings(). However, that is only needed when the version number changes. If you are using auto increment version numbers, your version will change everytime you compile, so you'd need to call UpgradeSettings() all the time.
If you are just leaving it at 1.0.0.0 or whatever for now, UpgradeSettings() is not the issue, just keep in mind you'll need to use it in the real, final implementation.
|
|
|
|
|
At the moment I don't have versions so upgrade isn't the issue. As you can see by the code, it is being saved and as I noted before, the class is there because I can see it right there in the debugger. I assume that because I can see it in the debugger that there is no serialization issue but maybe I am wrong. The class itself is not too complex. It is 4 strings and 2 decimal variables so I think it can be serialized. I checked where you said and there is no xml file so that is definitely the issue. I just don't know why there is no xml file.
|
|
|
|
|
What does your AssemblyInfo.cs look like? Are you getting any exceptions? Are you running the app as admin or some kind of restricted user? What does your app.config look like?
EDIT: I looked back at your original post and it seems like you hand edited the settings.cs file? So the issue might be that your app.config is out of sync (doesn't contain the necessary entries).
|
|
|
|