Незнам какво искуство имаш но не е така едноставно префрлање од десктоп на веб, посебно ако сакаш да го постигнеш истото ниво на интеракција со корисникот.Ќе треба веројатно и PHP и Javascript да мешаш по потреба, Но, да не зборам на памет, колку е голем проектот? Прати ми порака.Превод од C# десктоп апликација во PHP или Javascript (десктоп -> веб) веб интерфејсот е готов ми треба само да се преведат C# класите.
Има ли некој познавање?
За цена ке се договориме...
Па и не е тешко да ти кажамПа не е нешто тешко. Може има некој подобар начин но јас би идел нешто вака:
Прво ќе изброиш број на цифри во тој број и ќе зачуваш во една променлива. После бројот што ти е даден ќе го зачуваш во една привремена променлива. И со таа привремена променлива пушташ еден циклус се додека тој број е поголем од 0.
И внатре ќе провериш ако бројот на цифри е еднакво на 4 тогаш ќе направиш switch( tmp%1000) и така ќе ги печатиш илјада итн до колку сакаш да може да ги печат цифрите.
пред да изеле од овој блок бројот на цифри ќе го намалиш за еден и од бројот ќе го тргнеш најзначајната цифра. И така внатре ќе ставиш swtich за останати..со 3,2 и 1 цифри и тоа е ова го имам направено во C...ваљда може и со C#
NumberNameDict = new Dictionary<int, List<string>>
{
{0, new List<string>{"zero"}},
{1, new List<string>{"one"}},
{2, new List<string>{"two"}}, ...
{20, new List<string>{"twenty", "score", "scores"}},
{30, new List<string>{"thirty"}},
{90, new List<string>{"ninety"}},
{100, new List<string>{"hundred", "hundreds"}},
{1000, new List<string>{"thousand", "thousands"}},
{1000000, new List<string>{"million", "millions"}},
{1000000000, new List<string>{"billion", "billions"}}//, //
{1000000000000, new List<string>{"Trillion", "Trillions"}} }
List<string> sections = new List<string>();
int remained = number;
for (int i = 0; i < groupNums.Count; i ++ )
{
if (remained < groupNums[i])
continue;
int whole = remained / groupNums[i];
sections.Add(toWords(whole));
if (ToPlural != null && whole != 1)
sections.Add(ToPlural(NumberNameDict[groupNums[i]][0]));
else
sections.Add(NumberNameDict[groupNums[i]][0]);
remained -= whole * groupNums[i];
if (remained != 0 && NeedInsertAnd(number, remained))
//if(remained != 0 && remained < 100) sections.Add(AndWords[0]);
}
if (remained != 0)
sections.Add(toWords(remained));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < sections.Count-1; i++)
{
sb.Append(sections[i] + Space);
}
sb.Append(sections.Last());
return sb.ToString();
protected int fromWords(string[] sectors)
{
int result = 0, current, lastGroup=1, temp, maxGroup=1;
Stack<int> stack = new Stack<int>();
foreach (string s in sectors)
{
if (AllWords.Contains(s))
{
if (AndWords.Contains(s))
continue;
if (WordNameDict.ContainsKey(s))
{
current = WordNameDict[s];
if (groupNums.Contains(current))
{
if(current>= maxGroup)
{
temp = stack.Pop();
while (stack.Count!= 0)
{
temp += stack.Pop();
};
temp *= current;
stack.Push(temp);
maxGroup *= current;
lastGroup = 1;
}
else if (current > lastGroup)
{
temp = 0;
while(stack.Peek() < current)
{
temp += stack.Pop();
};
temp *= current;
stack.Push(temp);
lastGroup = current;
}
else
{
temp = stack.Pop();
temp *= current;
stack.Push(temp);
lastGroup = current;
}
}
else
{
stack.Push(current);
}
}
}
else
throw new Exception();
}
do
{
result += stack.Pop();
} while (stack.Count != 0);
return result;
}
protected virtual bool tryParse(string numberInWords, out int result)
{
result = -1;
try
{
string words = IsCaseSensitive ? numberInWords.ToLower() : numberInWords;
string[] sectors = split(words);
var contained = from s in sectors
where AllWords.Contains(s)
select s;
result = fromWords(contained.ToArray());
return true;
}
catch
{
return false;
}
}
Dokolku sakas tekstot da ti e ispisan na Angliski
public enum WordsFormat
{
CapitalOnFirst = 0,
LowCaseOnly = 1,
UpperCaseOnly = 2
}
protected virtual bool tryParse(string numberInWords, out int result)
{
result = -1;
try
{
string words = IsCaseSensitive ? numberInWords.ToLower() : numberInWords;
string[] sectors = split(words);
var contained = from s in sectors
where AllWords.Contains(s)
select s;
result = fromWords(contained.ToArray());
return true;
}
catch
{
return false;
}
}
Ako ti go pokazuva kako "??????????????"
private string toWords(int number, string samples)
{
string result = ToWords(number);
foreach (char ch in samples)
{
if (allCharacters.Contains(ch) && WordNameDict.ContainsKey(ch.ToString()))
{
int digit = WordNameDict[ch.ToString()];
if (digit > 9 && !groupNums.Contains(digit))
continue;
string digitStr = NumberNameDict[digit][0];
if (digitStr.Length != 1 || digitStr[0] == ch)
continue;
result = result.Replace(digitStr[0], ch);
}
}
return result;
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Num2Wrd
{
public class NumberToEnglish
{
public String changeNumericToWords(double numb)
{
String num = numb.ToString();
return changeToWords(num, false);
}
public String changeCurrencyToWords(String numb)
{
return changeToWords(numb, true);
}
public String changeNumericToWords(String numb)
{
return changeToWords(numb, false);
}
public String changeCurrencyToWords(double numb)
{
return changeToWords(numb.ToString(), true);
}
private String changeToWords(String numb, bool isCurrency)
{
String val = "", wholeNo = numb, points = "", andStr = "", pointStr = "";
String endStr = (isCurrency) ? ("Only") : ("");
try
{
int decimalPlace = numb.IndexOf(".");
if (decimalPlace > 0)
{
wholeNo = numb.Substring(0, decimalPlace);
points = numb.Substring(decimalPlace + 1);
if (Convert.ToInt32(points) > 0)
{
andStr = (isCurrency) ? ("and") : ("point");// just to separate whole numbers from points/Rupees
endStr = (isCurrency) ? ("Rupees " + endStr) : ("");
pointStr = translateRupees(points);
}
}
val = String.Format("{0} {1}{2} {3}", translateWholeNumber(wholeNo).Trim(), andStr, pointStr, endStr);
}
catch
{
;
}
return val;
}
private String translateWholeNumber(String number)
{
string word = "";
try
{
bool beginsZero = false;//tests for 0XX
bool isDone = false;//test if already translated
double dblAmt = (Convert.ToDouble(number));
//if ((dblAmt > 0) && number.StartsWith("0"))
if (dblAmt > 0)
{//test for zero or digit zero in a nuemric
beginsZero = number.StartsWith("0");
int numDigits = number.Length;
int pos = 0;//store digit grouping
String place = "";//digit grouping name:hundres,thousand,etc...
switch (numDigits)
{
case 1://ones' range
word = ones(number);
isDone = true;
break;
case 2://tens' range
word = tens(number);
isDone = true;
break;
case 3://hundreds' range
pos = (numDigits % 3) + 1;
place = " Hundred ";
break;
case 4://thousands' range
case 5:
case 6:
pos = (numDigits % 4) + 1;
place = " Thousand ";
break;
case 7://millions' range
case 8:
case 9:
pos = (numDigits % 7) + 1;
place = " Million ";
break;
case 10://Billions's range
pos = (numDigits % 10) + 1;
place = " Billion ";
break;
//add extra case options for anything above Billion...
default:
isDone = true;
break;
}
if (!isDone)
{//if transalation is not done, continue...(Recursion comes in now!!)
word = translateWholeNumber(number.Substring(0, pos)) + place + translateWholeNumber(number.Substring(pos));
//check for trailing zeros
if (beginsZero) word = " and " + word.Trim();
}
//ignore digit grouping names
if (word.Trim().Equals(place.Trim())) word = "";
}
}
catch
{
;
}
return word.Trim();
}
private String tens(String digit)
{
int digt = Convert.ToInt32(digit);
String name = null;
switch (digt)
{
case 10:
name = "Ten";
break;
case 11:
name = "Eleven";
break;
case 12:
name = "Twelve";
break;
case 13:
name = "Thirteen";
break;
case 14:
name = "Fourteen";
break;
case 15:
name = "Fifteen";
break;
case 16:
name = "Sixteen";
break;
case 17:
name = "Seventeen";
break;
case 18:
name = "Eighteen";
break;
case 19:
name = "Nineteen";
break;
case 20:
name = "Twenty";
break;
case 30:
name = "Thirty";
break;
case 40:
name = "Fourty";
break;
case 50:
name = "Fifty";
break;
case 60:
name = "Sixty";
break;
case 70:
name = "Seventy";
break;
case 80:
name = "Eighty";
break;
case 90:
name = "Ninety";
break;
default:
if (digt > 0)
{
name = tens(digit.Substring(0, 1) + "0") + " " + ones(digit.Substring(1));
}
break;
}
return name;
}
private String ones(String digit)
{
int digt = Convert.ToInt32(digit);
String name = "";
switch (digt)
{
case 1:
name = "One";
break;
case 2:
name = "Two";
break;
case 3:
name = "Three";
break;
case 4:
name = "Four";
break;
case 5:
name = "Five";
break;
case 6:
name = "Six";
break;
case 7:
name = "Seven";
break;
case 8:
name = "Eight";
break;
case 9:
name = "Nine";
break;
}
return name;
}
private String translateRupees(String Rupees)
{
String cts = "", digit = "", engOne = "";
for (int i = 0; i < Rupees.Length; i++)
{
digit = Rupees[i].ToString();
if (digit.Equals("0"))
{
engOne = "Zero";
}
else
{
engOne = ones(digit);
}
cts += " " + engOne;
}
return cts;
}
}
}
using System;
class Program
{
static void Main()
{
string input;
int number;
bool isValid;
bool isUK = false;
Console.WriteLine("\nEnter '0' to quit the program at any time\n");
while (true)
{
Console.Write("\nUse UK numbering y/n : ");
input = Console.ReadLine();
if (!(input.ToLower() == "y" || input.ToLower() == "n"))
Console.WriteLine("\n Must be 'y' or 'n', please try again\n");
else
{
if (input.ToLower() == "y") isUK = true;
Console.WriteLine("\n");
break;
}
}
do
{
Console.Write("Enter integer : ");
input = Console.ReadLine();
isValid = int.TryParse(input, out number);
if (!isValid)
Console.WriteLine("\n Not an integer, please try again\n");
else
Console.WriteLine("\n {0}\n", NumberToText(number, isUK));
}
while (!(isValid && number == 0));
Console.WriteLine("\nProgram ended");
}
public static string NumberToText(int number, bool isUK)
{
if (number == 0) return "Zero";
string and = isUK ? "and " : ""; // deals with UK or US numbering
if (number == -2147483648) return "Minus Two Billion One Hundred " + and +
"Forty Seven Million Four Hundred " + and + "Eighty Three Thousand " +
"Six Hundred " + and + "Forty Eight";
int[] num = new int[4];
int first = 0;
int u, h, t;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (number < 0)
{
sb.Append("Minus ");
number = -number;
}
string[] words0 = {"", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine "};
string[] words1 = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen "};
string[] words2 = {"Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety "};
string[] words3 = { "Thousand ", "Million ", "Billion " };
num[0] = number % 1000; // units
num[1] = number / 1000;
num[2] = number / 1000000;
num[1] = num[1] - 1000 * num[2]; // thousands
num[3] = number / 1000000000; // billions
num[2] = num[2] - 1000 * num[3]; // millions
for (int i = 3; i > 0; i--)
{
if (num[i] != 0)
{
first = i;
break;
}
}
for (int i = first; i >= 0; i--)
{
if (num[i] == 0) continue;
u = num[i] % 10; // ones
t = num[i] / 10;
h = num[i] / 100; // hundreds
t = t - 10 * h; // tens
if (h > 0) sb.Append(words0[h] + "Hundred ");
if (u > 0 || t > 0)
{
if (h > 0 || i < first) sb.Append(and);
if (t == 0)
sb.Append(words0[u]);
else if (t == 1)
sb.Append(words1[u]);
else
sb.Append(words2[t - 2] + words0[u]);
}
if (i != 0) sb.Append(words3[i - 1]);
}
return sb.ToString().TrimEnd();
}
}
Треба да додадеш референца до Project2 со Right-click на Project1 и click на Add Reference.Си направив еден проект во C#(да речеме Project1) со повеќе класи и форми во него и почна да станува непрегледен. Па направив во истиот solution уште еден проект(Project2). Сега сакам една класа со нејзинити функции од Project2, да ја користам во класа во Project1. Пробувам во Project1 горе да ставам:
using Project2;
ама ми јавува ерор, демек не постои Project2. А гледам по интернет дека може вака, дека се прави вака поточно. Помош?
Еии како не ми текна ова. Фала најмногуТреба да додадеш референца до Project2 со Right-click на Project1 и click на Add Reference.
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Runtime.InteropServices.COMException (0x80040154): Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
at System.Windows.Forms.AxHost.CreateInstance()
at System.Windows.Forms.AxHost.GetOcxCreate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()
at WindowsFormsApplication1.Pomos.InitializeComponent() in C:\Users\htc\Desktop\New folder (3)\VP seminarska proekt\Stimer\Pomos.Designer.cs:line 316
at WindowsFormsApplication1.Pomos..ctor() in C:\Users\htc\Desktop\New folder (3)\VP seminarska proekt\Stimer\Pomos.cs:line 16
at WindowsFormsApplication1.Form1.btnAbout_Click(Object sender, EventArgs e) in C:\Users\htc\Desktop\New folder (3)\VP seminarska proekt\Stimer\Form1.cs:line 40
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Stimer
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/adm/Pictures/Anastasija/Ице/seminarska,%20gitara/Debug/Stimer.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
AxInterop.ShockwaveFlashObjects
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/adm/Pictures/Anastasija/Ице/seminarska,%20gitara/Debug/AxInterop.ShockwaveFlashObjects.DLL
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Можеби ова се јавува поради тоа што сите лаптопи не се 32 битни машини.Го пробав уште на неколку лаптопи, на некои работи, на некои не, не знам што е проблемот. Еве ја грешката што ја јавува:
Аии лошо ако е така. Барав до сега по нет, натака, навака, рчкав нешто во 2010 Експресов и еве на крај што најдов:Можеби ова се јавува поради тоа што сите лаптопи не се 32 битни машини.
Еве што најдов на гугл
Go into the Project Properties for your desktop application, click the "Compile" tab and click "Advanced Compile Options...". Change "Target CPU" to x86, click OK, save, recompile and try again.
Да не има некој случајно Visual C# 2010(не овој Express), да му пратам проектот да ми го сетира ова?Note/platformis not available in the development environment in Visual C# Express.
public static SoundCaptureDevice[] GetDevices()
{
CaptureDevicesCollection captureDevices = new CaptureDevicesCollection();
List<SoundCaptureDevice> devices = new List<SoundCaptureDevice>();
foreach (DeviceInformation captureDevice in captureDevices)
{
devices.Add(new SoundCaptureDevice(captureDevice.DriverGuid, captureDevice.Description));
}
return devices.ToArray();
}
Помош ако може некој да помогне 1.Имаш Textbox кој е multiline, а броевите во него се одделени со празно место ,една лабела label1 и копче button1 , со кликање на копчето треба да се провере дали во текст боксот има внесено 3 реда по 5 цифри ако нема 3 реда по 5 цифри во лабелата треба да испечате грешка, ако има внесено точно 3 реда по 5 цифри треба да провере дали во 3от ред на (некоја позиција 2,3 или 4 позиција) се наога бројо 9, ако се наога треба да испечате у лабелата “точно” , a ако не се наога бројо 9 да испечате грешка.
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim linii() As String = TextBox1.Lines
'прва проверка - број на линии
If linii.Count <> 3 Then
MsgBox("Треба да внесете точно 3 линии")
Exit Sub
End If
'втора проверка - број на броеви по линија
For i = 1 To 3
Dim brojkiArr() As String
brojkiArr = linii(i - 1).Split(" ")
If brojkiArr.Length <> 5 Then
MsgBox("Во линијата број " & i & " треба да внесете точно 5 бројки")
Exit Sub
End If
For x = 0 To brojkiArr.Length - 1
If Not IsNumeric(brojkiArr(x)) Then
MsgBox("Во линијата број " & i & " има внесено небројна вредност")
Exit Sub
End If
Next
'трета проверка - ред 3 позиција 2
If i = 3 And brojkiArr(1) <> 9 Then MsgBox("На втората позиција во линија број 3 треба да го внесете бројот 9")
Next
End Sub