|
You're better off with a "dictionary" that indexes all the (generated) files names with properties worth tracking; instead of trying to force a "file name standard" which always seems to fall short; or drives users mad.
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
The only name restriction you should have (if any) is the file extension. To enforce this, simply append your extension to whatever the user enters for a filename. After that, who really cares what the filename is, as long as it's got the correct extension for your app.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Excepting of course there will be character restrictions.
|
|
|
|
|
FFS, I assumed that wouldn't even have to be said.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
lol...not in my experience. Once they start messing with regexes all normal expectations go out the window. They tend to allow things they shouldn't or fail to disallow others. Even presuming they get the regex right the first time. I have seen multiple cases where people didn't even understand what a character class in a regex was.
As one ready example just do a general search for people looking to make a 'easy' regex to do email validation.
|
|
|
|
|
Thank you. The app is an extension of one written for my own company where we have rules around how BIM files can be named. It seemed to me that the app might be useful for others.
You are quite right, there needn't be any rules, just a common location for saving such files.
|
|
|
|
|
ormonds wrote: It also sounds like someone might have done it before - extracted the regex pattern from a given string.
...
Any suggestions?
1. Don't do that.
2. Allow, but do not require them to enter a regex. The problem with this is that either you must carefully validate that (limit their regex) or you run the risk of allowing them to entire something that could be valid but could have serious problems (read the book "Mastering Regular Expressions".)
3. They can submit a regex to the operations team. They validate it and if ok enter it in for the account via a Operations only option.
|
|
|
|
|
Hi,
I would not use Regex at all. Instead, have the filename pattern specified as a string where some special codes are allowed, and will be replaced by their actual value.
Your example could be defined by "Project{P}-{N}-{D}-{V}.dat" , and now your code should replace
{P} by the project name
{N} by the project number
{D} by the drawing number
{V} by the version number/letter
which basically takes four calls to string.Replace() , where you:
1. may or may not enforce these codes to be present;
2. may or may not allow for case-insensitivy when looking for those codes;
3. must take care of avoiding illegal filenames; you may have to create a project name clone
that does not contain any character that would be unacceptable in a file name.
|
|
|
|
|
Write a console program in <b>C#</b> to print out 5 verses
<b>Please provide two solutions if you can, one using polymorphysm and one with .</b>
-- modified 21-Apr-19 10:03am.
|
|
|
|
|
We aren't here to do your work for you.
If you want someone to write your code, you have to pay - I suggest you go to Freelancer.com and ask there.
But be aware: you get what you pay for. Pay peanuts, get monkeys.
The idea of "development" is as the word suggests: "The systematic use of scientific and technical knowledge to meet specific objectives or requirements." BusinessDictionary.com
That's not the same thing as "have a quick google and give up if I can't find exactly the right code".
So either pay someone to do it, or learn how to write it yourself. We aren't here to do it for you.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
If you can't answer your own interview questions (and this assignment is not very difficult at all), maybe you don't deserve to get the job you're interviewing for.
|
|
|
|
|
Hi,
I'm sure integrating this[^] will get you some bonus points.
|
|
|
|
|
|
please get me the souce code.
|
|
|
|
|
What have you tried?
Where are you stuck?
What help do you need?
We aren't here to do your work for you.
If you want someone to write your code, you have to pay - I suggest you go to Freelancer.com and ask there.
But be aware: you get what you pay for. Pay peanuts, get monkeys.
The idea of "development" is as the word suggests: "The systematic use of scientific and technical knowledge to meet specific objectives or requirements." BusinessDictionary.com[^]
That's not the same thing as "have a quick google and give up if I can't find exactly the right code".
So either pay someone to do it, or learn how to write it yourself. We aren't here to do it for you.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
|
I still have my GUID: A483FD8F-77F9-45DD-922F-1051E859CDDF
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Where did you put it? ... master.
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Igor! Fetch me a Brain!
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
It's in the mortar vessel with the pestle.
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Making a couple of assumptions here
1. your using win forms
2. you want your tab control to resize when you change the form?
if so I would suggest that you look into the anchor properties in the tab control.
Every day, thousands of innocent plants are killed by vegetarians.
Help end the violence EAT BACON
|
|
|
|
|
Do not put a Form in a TabPage. Use a Panel that you make resizable if/when necessary.
«Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?» T. S. Elliot
|
|
|
|
|
<pre>using System;
namespace DoublyLinkedList
{
class Link<T> : IComparable<Link<T>> where T : IComparable<T>
{
public Link(T data)
{
Data = data;
Next = null;
Previous = null;
}
public T Data {get;set;}
public Link<T> Next {get;set;}
public Link<T> Previous {get;set;}
public int CompareTo(Link<T> other) {return Data.CompareTo(other.Data);}
public int CompareTo(T other) {return Data.CompareTo(other);}
public void DisplayLink()
{Console.Write(Data.ToString() + " ");}
}
}
<pre>using System;
namespace DoublyLinkedList
{
class DoublyLinkedList<T> where T :IComparable<T>
{
public Link<T> First {get;set;}
public Link<T> Last {get;set;}
public DoublyLinkedList() {First = null;Last = null;}
public Link<T> Find(T key)
{
Link<T> current = First;
while(current.CompareTo(key) != 0)
{
if(current.Next == null)
return null;
else
current = current.Next;
}
return current;
}
public bool IsEmpty()
{return First == null;}
public void InsertFirst(T dd)
{
Link<T> NewLink = new Link<T>(dd);
if(IsEmpty())
Last = NewLink;
else
First.Previous = NewLink;
NewLink.Next = First;
First = NewLink;
}
public void InsertLast(T dd)
{
Link<T> NewLink = new Link<T>(dd);
if(IsEmpty())
First = NewLink;
else
{
Last.Next = NewLink;
NewLink.Previous = Last;
}
Last = NewLink;
}
public Link<T> DeleteFirst()
{
if(IsEmpty())
return null;
Link<T> temp = First;
if(First.Next == null)
Last = null;
else
First.Next.Previous = null;
First = First.Next;
return temp;
}
public Link<T> DeleteLast()
{
if(IsEmpty())
return null;
Link<T> temp = Last;
if(First.Next == null)
First = null;
else
Last.Previous.Next = null;
Last = Last.Previous;
return temp;
}
public bool InsertAfter(T key,T dd)
{
Link<T> current = Find(key);
if(current == null)
return false;
Link<T> NewLink = new Link<T>(dd);
NewLink.Next = current.Next;
if(current.Next == null)
Last = NewLink;
else
current.Next.Previous = NewLink;
NewLink.Previous = current;
current.Next = NewLink;
return true;
}
public Link<T> DeleteKey(T key)
{
Link<T> current = Find(key);
if(current == null)
return null;
if(current.Previous == null)
First = current.Next;
else
current.Previous.Next = current.Next;
if(current.Next == null)
Last = current.Previous;
else
current.Next.Previous = current.Previous;
return current;
}
public void DisplayForward()
{
Console.Write("List (first-->last): ");
Link<T> current = First;
while(current != null)
{
current.DisplayLink();
current = current.Next;
}
Console.WriteLine("");
}
public void DisplayBackward()
{
Console.Write("List (last-->first): ");
Link<T> current = Last;
while(current != null)
{
current.DisplayLink();
current = current.Previous;
}
Console.WriteLine("");
}
public void Split(ref DoublyLinkedList<T> L1,ref DoublyLinkedList<T> L2)
{
Link<T> p = First;
Link<T> q = Last;
while(p != q && p.Next != q)
{
p = p.Next;
q = q.Previous;
}
if(p == null || p.Next == null)
{
L1.First = First;
L1.Last = Last;
L2.First = null;
L2.Last = null;
}
else
{
q = p.Next;
p.Next = null;
q.Previous = null;
L1.First = First;
L1.Last = p;
L2.First = q;
L2.Last = Last;
}
}
public void Merge(DoublyLinkedList<T> L1,DoublyLinkedList<T> L2)
{
Link<T> p,q;
First = null;
Last = null;
if(L1.First != null && L2.First != null)
{
if(L1.First.CompareTo(L2.First) <= 0)
{
p = L1.First;
if(L1.First.Next == null)
L1.Last = null;
else
L1.First.Next.Previous = null;
L1.First = L1.First.Next;
p.Next = null;
First = p;
Last = p;
}
else
{
q = L2.First;
if(L2.First.Next == null)
L2.Last = null;
else
L2.First.Next.Previous = null;
L2.First = L2.First.Next;
q.Next = null;
First = q;
Last = q;
}
}
while(L1.First != null && L2.First != null)
{
if(L1.First.CompareTo(L2.First) <= 0)
{
p = L1.First;
if(L1.First.Next == null)
L1.Last = null;
else
L1.First.Next.Previous = null;
L1.First = L1.First.Next;
p.Next = null;
Last.Next = p;
p.Previous = Last;
Last = p;
}
else
{
q = L2.First;
if(L2.First.Next == null)
L2.Last = null;
else
L2.First.Next.Previous = null;
L2.First = L2.First.Next;
q.Next = null;
Last.Next = q;
q.Previous = Last;
Last = q;
}
}
if(Last != null)
Last.Next = L1.First;
else
First = L1.First;
if(L1.First != null)
{
L1.First.Previous = Last;
Last = L1.Last;
}
if(Last != null)
Last.Next = L2.First;
else
First = L2.First;
if(L2.First != null)
{
L2.First.Previous = Last;
Last = L2.Last;
}
}
public void MergeSort()
{
DoublyLinkedList<T> h1 = new DoublyLinkedList<T>();
DoublyLinkedList<T> h2 = new DoublyLinkedList<T>();
if(First != null && First.Next != null)
{
Split(ref h1,ref h2);
h1.MergeSort();
h2.MergeSort();
Merge(h1,h2);
}
}
}
}
How can I avoid new operator inside MergeSort function
I translated Lafore List and wrote Merge Sort function
|
|
|
|
|
Pass the two lists to be sorted/merged into the MergeSort method as parameters. The way it is now, you're creating two lists with nothing in them, so nothing is going to happen when you sort and merge.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
It will sort but with new it can waste memory
Without new I get NullPointer Exception but
maybe i can avoid that in other way
I'm new in C# i found it not so long ago in my system
In my OS there is C# 5.0 and it is not updated with system
|
|
|
|