November 24, 2004

Library not registered

If you have "Library not registered" errors when make new "Class Library" in "Add New Project" Page you must register DLL(s) that relate with this subject.
These dll(s) are in "<VisualStudioInstallDir>\vc7\vcpackages\" like "csproj.dll". You can use of regsvr32 for registerion in your OperationSystem like thees
>RUN>Command> regsvr32 <VisualStudioInstallDir>\vc7\vcpackages\csproj.dll

این Error لعنتی پدرم رو
دراورد ... هرجور گیر می داد ... از wizard برای ساخت یک aspx فایل تا ساخت فایل
Class در یک پروژه. با اجرای مراحل زیر احتمالا خیلی از مشکلات حل می شه.

1- Start>Run
2- cmd یا command
3- goto <VisualStudioInstallDir>\vc7\vcpackages4- regsvr32 csproj.dll

حالا که دارید رجیستر می کنید همه dllهای داخل این فولدر را رجیستر کنید.

November 16, 2004

Scrollable DataGrid

For creating a scrollable DataGrid web server control you use of <DIV> like this.
For more information you can go to this page or google ;-)

<div style="vertical-align: top; height:200px; width:100%; overflow:auto;"> 
<asp:DataGrid runat="server" ...> 
... 
</asp:DataGrid> 
</div>

درسته
گفتنی ها همه تو این دو خطه بالاست ...
واسه افزودن قابلیت Scroll به DataGrid نمی شه از Propertie هاش استفاده کرد .. باید آستین بالا بزنید و از CSS کمک بگیرید. DIV اینجا می تونه کمک کنه ... تو STYLE می شه موارد زیر رو نوشت :
Width = عرض رو تنظیم کنید
hight = طول رو تنظیم کنید
vertical-align: top = چسبودن به بالا اگه قسمتیش از طول خالی باشه
overflow:auto = مقدار پیش فرض visible ه یعنی که از scroll خبری نیست و خب البته محدودیتی هم نیست(از لحاظ طول و عرض) می شه از مقدار scroll هم استفاده کرد اما در این صورت scrollbar ها رو از همون اول می ذاره البته می شه از hidden هم استفاده کرد که نوشته های خارج از محدوده رو نشون نمی ده یعنی محدودیت بدون افزودن scroll و در انتها می شه auto گذاشت که خودش تنظیم کنه ...

October 28, 2004

SQLServer2000 & C# - Error

If you have these problems after the connecting to SQLServer check these
  • Check your Service Manager for runnig.
  • Do you used of Data Source=NET101 in ConnectionString? (NET101 is my computer name)
  • Do you used of SERVER=localhost in ConnectionString?
  • Test IP for connection 127.0.0.1
  • Run Enterprise Manager > (local)(WindowsNT) > (RightClick)Properties > Security > (select) SQL Server and Windows
  • Add ASPNET user that is predefine user to users at Enterprise Manager and set full accessibility to tables and Stored Procedures


Login failed for user NT AUTHORITY\NETWORK SERVICE
Server Error in '/WebApplication1' Application.
--------------------------------------------------------------------------------
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.
Source Error:
Line 28: private void Page_Load(object sender, System.EventArgs e)
Line 29: {
Line 30: sqlDataAdapter1.Fill(dataSet11, "_UNPass");
Line 31: DataGrid1.DataBind();
Line 32: }
Source File: c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs Line: 30
Stack Trace:
[SqlException: Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.]
System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) +472
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +372
System.Data.SqlClient.SqlConnection.Open() +384
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs:30
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET
Version:1.1.4322.573


Server Error in '/WebApplication1' Application.
--------------------------------------------------------------------------------
General network error. Check your network documentation.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: General network error. Check your network documentation.
Source Error:
Line 29: {
Line 30: //sqlConnection1.Open();
Line 31: sqlDataAdapter1.Fill(dataSet11, "_UNPass");
Line 32: DataGrid1.DataBind();
Line 33: //sqlConnection1.Close();
Source File: c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs Line: 31
Stack Trace:
[SqlException: General network error. Check your network documentation.]
System.Data.SqlClient.ConnectionPool.GetConnection(Boolean& isInTransaction) +474
System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction) +372
System.Data.SqlClient.SqlConnection.Open() +384
System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +36
WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\webapplication1\webform1.aspx.cs:31
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET
Version:1.1.4322.573


- احتمالا Service Manager رو بالا نیاوردید.
- ConnectionString تون مشکل داره. مثلا برای کامپیوتری با نام NET101 این رو بد نیست بذارید. Data Source=NET101
- فکر کنم با افزودن SERVER=localhost به فیلد ConnectionString کامپوننت SqlConnection حله (البته برای کاربرهای خونگی)
- به جای نام کامپیوتر (اگه تو شبکه هم هست) بهتره که از IP استفاده کنید مثل 127.0.0.1
- گرچه برای من این جوری دستکاری تو Enterprise Manager حل شد :
Run Enterprise Manager>(local)(WindowsNT)>(RightClick)Properties>Security>(select) SQL Server and Windows
- افزودن USER ی به نام ASPNET اگه تو لیست user های Enterprise Manager هست بد نیست گرچه من userی به نام IIS... رو هم اضافه کردم ولی همون اولی کافیه که اضافه کنید و به لیست user های table دیتابیستون اضافش کنید و بهش هر دسترسی که می خواد بدین تا کارتون بگذره ;-)

SQLServer2000 & C# - Code

I hope that these codes help you for connect to SQLServer2000 (with SP3) by C#.

این ها چند تا تیکه کد برای دسترسی به پایگاه های داده مبتنی بر 2000 SQLServer از طریق C# و dotNetFrameWork1.1 هستن.
راستش مجبور شدم برای یه کار عجله ای 1 روزه (که 2 روز طول کشید) بدون کتاب SQLServer، StoredProcedure رو مطالعه کنم و روش های مختلف ارتباط مابین این DBMS و #C رو پیدا کنم. (این یعنی اگه DB کارنکردین نگران نباشین سخت که نیست هیچ ...)
این تیکه کدها در انتها خیلی روند کاری رو تسریع کردن ممکنه به درد بخوره گرچه می شه هر جایی به راحتی پیداشون کرد مثل MSDN.

<Binding SQL Data to a DataGrid>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();

<Binding SQL Data to a SqlDataReader>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlCommand myCommand = new SqlCommand("select * from Authors", myConnection);
myConnection.Open();
SqlDataReader dr = myCommand.ExecuteReader();
MyDataGrid.DataSource = dr;
MyDataGrid.DataBind();
myConnection.Close();

<HELP>
MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;
برابر است با (Equal with)
MyDataGrid.DataSource=ds;
MyDataGrid.DataMember="Authors";

<Performing a Parameterized Select>
String selectCmd = "select * from Authors where state = @State";
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NVarChar, 2));
myCommand.SelectCommand.Parameters["@State"].Value = MySelect.Value;
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
MyDataGrid.DataSource= ds.Tables["Authors"].DefaultView;
MyDataGrid.DataBind();

<Inserting Data in a SQL Database>
String insertCmd = "insert into Authors (au_id, au_lname, au_fname, phone, address, city, state, zip, contract) values (@Id, @LName, @FName, @Phone, @Address, @City, @State, @Zip, @Contract)";
SqlCommand myCommand = new SqlCommand(insertCmd, myConnection);
myCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.NVarChar, 11));
myCommand.Parameters["@Id"].Value = Server.HtmlEncode(au_id.Value);
myCommand.Parameters.Add(new SqlParameter("@LName", SqlDbType.NVarChar, 40));
myCommand.Parameters["@LName"].Value = Server.HtmlEncode(au_lname.Value);
myCommand.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 20));
myCommand.Parameters["@FName"].Value = Server.HtmlEncode(au_fname.Value);
myCommand.Parameters.Add(new SqlParameter("@Phone", SqlDbType.NChar, 12));
myCommand.Parameters["@Phone"].Value = Server.HtmlEncode(phone.Value);
myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
myCommand.Parameters["@Address"].Value = Server.HtmlEncode(address.Value);
myCommand.Parameters.Add(new SqlParameter("@City", SqlDbType.NVarChar, 20));
myCommand.Parameters["@City"].Value = Server.HtmlEncode(city.Value);
myCommand.Parameters.Add(new SqlParameter("@State", SqlDbType.NChar, 2));
myCommand.Parameters["@State"].Value = state.Value;
myCommand.Parameters.Add(new SqlParameter("@Zip", SqlDbType.NChar, 5));
myCommand.Parameters["@Zip"].Value = Server.HtmlEncode(zip.Value);
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
Message.InnerHtml = "<b>Record Added</b><br>" + insertCmd.ToString();
}
catch (SqlException e)
{
if (e.Number == 2627)
Message.InnerHtml = "ERROR: A record already exists with the same primary key";
else
Message.InnerHtml = "ERROR: Could not add record, please ensure the fields are correctly filled out";
Message.Style["color"] = "red";
}
myCommand.Connection.Close();
BindGrid();

<Working with Master-Detail Relationships>
<ASP:DataGrid id="MyDataGrid" runat="server" Width="800" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" DataKeyField="au_id">
<Columns>
<asp:HyperLinkColumn DataNavigateUrlField="au_id" DataNavigateUrlFormatString="datagrid13_details.aspx?id={0}" Text="Get Details"/>
</Columns>
</ASP:DataGrid>

<Writing and Using Stored Procedures>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("Ten Most Expensive Products", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
myCommand.Fill(ds, "Products");
MyDataGrid.DataSource=ds.Tables["Products"].DefaultView;
MyDataGrid.DataBind();

<Writing and Using Stored Procedures with Parameters(1)>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("SalesByCategory", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@CategoryName", SqlDbType.NVarChar, 15));
myCommand.SelectCommand.Parameters["@CategoryName"].Value = SelectCategory.Value;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@OrdYear", SqlDbType.NVarChar, 4));
myCommand.SelectCommand.Parameters["@OrdYear"].Value = SelectYear.Value; DataSet ds = new DataSet();
myCommand.Fill(ds, "Sales");
MyDataGrid.DataSource=ds.Tables["Sales"].DefaultView;
MyDataGrid.DataBind();

<Writing and Using Stored Procedures with Parameters(2)>
SqlConnection myConnection = new SqlConnection("server=(local)\\NetSDK;database=northwind;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("Employee Sales By Country", myConnection);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@Beginning_Date", SqlDbType.DateTime));
myCommand.SelectCommand.Parameters["@Beginning_Date"].Value = BeginDate.SelectedDate;
myCommand.SelectCommand.Parameters.Add(new SqlParameter("@Ending_Date", SqlDbType.DateTime));
myCommand.SelectCommand.Parameters["@Ending_Date"].Value = EndDate.SelectedDate; DataSet ds = new DataSet();
myCommand.Fill(ds, "Sales");
MyDataGrid.DataSource=ds.Tables["Sales"].DefaultView;
MyDataGrid.DataBind();



October 23, 2004

Confirmation in ASP.Net DataGrid

- How can I display a dialog box to force users to confirm before a critical task (i.e., a record deletion) starts?
If you like, you can add the MessageBox to DataGrid's button you must that adds a DHTML OnClick attribute that executes the following JavaScript statement.
You must that combine your DataGrids with Client-side Script for Advanced Customizations.
this so easy with follow under method.

1- DataGrid>Properties>Events
2- (double click) DeleteCommand (for add event)
3- (double click) ItemDataBound (for add event)
4- (select the datagrid from aspx file interface) RightClick>PropertyBuilder>Columns>Selected columns>Delete>(below blue link "convert this column into a Template Column")Click>OK
5- goto source code(aspx.cs) and edit DataBound function
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
  if (e.Item.ItemType == ListItemType.Item e.Item.ItemType==ListItemType.AlternatingItem)
  {
    LinkButton bd = ((LinkButton)e.Item.FindControl("LinkButton1"));
    bd.Attributes.Add("onclick", "return confirm(\"آیا از حذف این ردیف مطمئن هستيد؟\");");
  }
}
در هنگام کار با ASP.Net DataGrid نمایش یه دایلوگ باکس در هنگام حذف، ویرایش و ... می تونه بسیار ایده آل (یا طرف درخواست کاربر) باشه.
گرچه جوابش رو نمی شه تو کامپوننت های طرف سرور توقع داشت پس باید از خیر ASp.Net بگذرید و برید سراغ دوست قدیمیjavascript و یه Client-side Script
راستش مجبور شدم برای یکی از دکمه های DataGrid در یه برنامه وب فرم یک پیغام "آیا می خواهید حذف شود" با دوتا کلید Y/N بگذارم. یه Search تو MSDN و Google راه رو سریع نشون داد. توی خود MSDN هم با توضیح کامل بودش.
کافیه 5 مرحله بالا رو انجام بدید.
یه کد 1 خطی می چسبونه به event ه onclick و خلاص .. خودش اگه NO بشه کلیک رو می خوره و اگه Yes می فرسته که می آد تو برنامه و کار را مثل معمول انجام می ده. خلاصه اینکه برای تنظیم Yes/No کد نمی خواد....

October 15, 2004

About New KEYWORDs

If you are confuse with these KEYWORDs, you can read these below lines.
These keywords are Essential Concepts of newest microsoft technology.
WinFX: is the new programming model for Windows, starting with Longhorn.
Avalon: is the presentation system. (The Avalon team provides the APIs)
Aero: is the entire user experience, built on top of Avalon. (Aero team knows the most about user interface plans for Longhorn)
Indigo: is a set of .NET technologies for building and running connected systems.
Whidbey: is the code name of the next release of the .NET Framework and Visual Studio .NET development tools, incorporating new features such as support for 64-bit platforms.
Monad: is the new command shell in Longhorn.

اگه مايکروسافت با يه گوني اصطلاحات اعصابتون رو بهم ريخته مي تونيد اين تعريف هاي خلاصه رو يه جوري تو خاطرتون نگه داريد.
WinFX: جديدترين مدل برنامه نويسي ويندوز که جايگزين .NET Framework مي شه براي نمايش قابليت هاي کلاس هاي مديريت شده longhorn. البته براي اونهايي که .NET Framework مي دونن درک اين روش و استفاده از managed code ها راحت تره.
Avalon: يه سيستم نمايش ظاهري يا Presentation System در ويندوز لانگهورن جديد مايکروسافت.
Aero: يه لايه بر روي Avalon هستش که کارايي هاي کاربر را بر عهده داره. تفاوتش با Avalon تو اينه که تيم طراح و برنامه نويس Avalon جون مي ککنه و يه مشت API آماده مي کنه که Aeroها باهاش UI صفحه که همون نمايش ظاهري ويندوزه رو درست کنن. (خودمونيم مدريت پروژة Avalon عجب حالي داره)
Indigo: اين ديگه چيه... اين يه مجموعه اي از تکنولوژي .Net که براي برنامه هاي ارتباطي مورد استفاده قرار مي گيره. در حقيقت زادة جديد ساختار communications در معماري سرويس هاي وب هستش. سرويس هاي وب مبتني بر Indigo داراي قابليت هايي همچون امنيت بالا، قابليت اطمينان بالا و ارتباط پيغام ها به صورت کاملا داخلي. Indigo کاملا بر اساس مدل جديد برنامه نويسي با نام service-oriented programming که بر روي .NET Framework و برنامه نويسي ياده شده رد برنامه هاي ارتباطي ساخته شده است. با اونکه ماله لانگهورنه ولي تو .Net2003 و Xp هم ساپورت مي شه و اينش معرکس که مجموعة کاملي از انواع معماري هاي سيستم هاي توزيع شده است مثل مدل هاي معماري(architecture)، انتقالات پوشا (spanning transports)، سيستم هاي حفاظتي(security systems)، الگوي هاي پيغامي(messaging patterns)، رمزگذاري ها(encodings)، توپولوژي هاي شبکه(network topologies) و مدل هاي هاستينگ(hosting models) مي باشد.
البته واضحه که يادش مونده که ترکيبي با مهمترين زير ساختارهاي سيستم هاي توزيعي و سرويس هاي وب مبتني بر مثل COM+, MSMQ, ASP.NET برقرار کنه و قول داده بدون دست کاري و modification رو اين سيستم جديد کار کنن.
البته براي اون هايي که از .NET Remoting يا سرويس هاي وب ASP.NET و يا .NET Enterprise Services استفاده مي کنن راه حلهايي به منظور ارتقا به سيستم فعلي قرار داده.
Whidbey: و بالاخره عشق منه جواد پروگرمر ... نسخه جديد .NET Framework و Visual Studio .NET development tools با قابليت پشتيباني از سيستم هاي 64 بيتي. گرچه هنوز دارن مي نويسننش و ايني که تو بازاره نسخه اي که تو کنفرانس PDC2003(Professional Developers Conference 2003) به ملت نشون دادن. البته هنوز نیومده یکی دیگه هم تو راهه. در حقیقت Whidbey رو می شه Visual Studio 2004 فرض کرد. قراره Visual Studio 2005 با اسم رمز Orcas هم بعد از اون بیاد. البته برای اینکه دل دیتابیس کارها هم نسوزه و SQLServer هم از قافله عقب نمونه SQL Server 2005 با اسم رمز YUKON اتو راهه که ز قابلیت های توپش همین کافیه که بشه تو C# و ... stored procedure نوشت. دیروز که بازار رضا بودم نسخه Beta2 ش تازه اومده بود.
Monad: اين يکي هم به نظر لازم مي رسيد ديگه. يه نسخه جديد از Command Line لانگهورنه که تو ويندوزهاي فعلي ها با cmd يا command اجرا ميشد. به اصطلاح عاميانه همون صفحه داسي که مشکي هستش و ميشه مثل Unix/Linux کارها خودت تايپ کني و کار کني. تو PDC2003 که ازش تعريف کردن و گفتن براي administrative tasks چيز مناسبيه و مي گفتن انقلابيه در Task-Oriented Automation Framework که بهش مي گن commandlets و اين يه رويه بر روي APIهاي مديريت شده، پيغام ها (در نسل جديد Command Line Shell) و تمام ابزارهاي مبتني بر GUI هستش.

از چيزهاي جالب اينکه قسمت عمده اي از Avalon رو با #C نوشتن يا XAML تو Avalon کار نمي کنه و هيچ برنامه یا نقشه اي براي کار با XAML تو XP و ... ندارن

October 11, 2004

VGA vs DirectX

IF you have this prompt error THEN you have a DirectX problem.
IF you have a good (not very old) Graphic Card You must install All Driver's Card because this error mean's about have not compatibility between Graphic Card and DirectX.
OR you must BUY a new graphic card ;-).

Commandos 3: commandos3.exe - Application Error
The instruction at "0x0043abf7" referenced memory at "0x00000000". The memory could not be "read".
Click on OK to terminate the program
Click on CANCEL to debug the program

ايراد بالا در اثر عدم تطابق (انطباق پذيري، مچ شدن) کارت گرافيکي با DirectX پيش مي آد که بيشترين دليلش مي تونه شناختن Generic کارت گرافيکي شما توسط ويندوز باشه چون در اين صورته که کارت گرافيکي در يه حالت نسبتا مناسبي از لحاظ نمايش صفحه قرار داره ولي چون درايور هاي اصليش نصب نيست با DirectX مشکل ميده.
اين رو دقت کنيد که ممکنه ويندوز کارت شما را خوب شناخته باشه (يعني حتي اسمشو با يه مشت مشخصاتش دقيقا درست نوشته باشه و پيدا کرده باشه) ولي اين دليل نمي شه که داره از تمام کارايي کارت گرافيکي شما استفاده مي کنه و براي استفادة مطلوب تر بايست درايورش رو نصب کنيد و اون وقته که مشکلش با DirectX حله و شما مي تونين به کارتون (مثلا بازي Commandos3) برسيد. خوش بگذره.

October 08, 2004

WMF Compiler Setting

You solve below problem with set configuration. in first step press Alt+F7 and then configured with below 3 steps.

????.obj : error LNK2001: unresolved
external symbol _WMCreateWriter@8
Debug/????.exe : fatal error LNK1120: 1 unresolved externals

راستش بعد از اینکه مشکلم حل شد تازه
یادم افتاد که هنوزم درست و اصولی برنامه نویسی نمی کنم ...
برای رفع این مشکل باید Visual Studio و پروژه مزبور رو Configure کنیم.
راهنمای تنظیم اون در این آدرسه
Windows Media Format SDK > Programming Guide > Getting Started > SDK Library Files and Compiler Settings
برای رفع این مشکل برید تو Settings از منوی Project و سپس این جاها

1) C/C++ > Category = Code Generation > run-time library > Debug Multithreaded DLL
2) Link tab > Category = General > Ignore all default libraries > check box
3) Link tab > Category = General > Object/library modules > Msvcrtd.lib, Wmvcore.lib

توجه کنید که در مورد 1 اگه پروژه به صورت Release داره Configure می شه به جای Debug Multithreaded DLL از Multithreaded DLL استفاده شود.
توجه کنید که در مورد 3 Libc.lib یا مشابه هاش رو add نکنید.
راستی اگه پروژه یهو 160~170 تا error داد نزنین تو سرتوون ... احتمالا تو Link tab > Category = General یه گونی lib دیگه add کرده بودید .. پس کافیه اون چک رو تو گزینه 2 بردارید.
حل شد ... خب خدا رو شکر .. لذتشو ببیرید.
البته اگه بخوام راستشو بگم خودم بجای همون 2 تا تمام این زیری ها را به LIB اضافه کردم.
quartz.lib winmm.lib msacm32.lib olepro32.lib strmiids.lib Wmvcore.lib

September 26, 2004

access to the path is denied

For solve below problem you can go to C:\Inetpub\wwwroot\[Project Name] and select your file and then right click on that (your file) and select properties from menu.After that you can go to Security tab page and select Users([your computer name]\Users) from "Group or user names" and then check the "Write" at the "Permissions for Users". I hope this helps.
Server Error in '/Project01' Application.
--------------------------------------------------------------------------------
Access to the path "c:\inetpub\wwwroot\Project01\?????.xml" is denied.
Description:
An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.UnauthorizedAccessException: Access to the path "c:\inetpub\wwwroot\Project01\?????.xml" is denied.
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.
To grant ASP.NET write access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.
Source Error:
Line 79: // Write the new DataSet with the new name and password to the XML file.
Line 80: fs = new FileStream(Server.MapPath("?????.xml"), FileMode.Create, FileAccess.WriteFileAccess.Read);
Line 81: StreamWriter writer = new StreamWriter(fs);
Line 82: ds.WriteXml(writer);
Source File: c:\inetpub\wwwroot\Project01\adduser.aspx.cs Line: 80
Stack Trace:
[UnauthorizedAccessException: Access to the path "c:\inetpub\wwwroot\Project01\?????.xml" is denied.]
System.IO.__Error.WinIOError(Int32 errorCode, String str) +393
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy) +888
System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) +43
Project01.adduser.Signup_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\Project01\adduser.aspx.cs:80
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573
خب این بار هم ASP .net ... وقتی می خواهید روی یک فایل چیزی رو بنویسید ایراد می گیره و حتی وقتی میرید و write بودن اون رو از توی IIS تنظیم می کنید باز هم Error می ده و بعد از اون وقتی می رید توی C:\Inetpub\wwwroot\[Project Name]\FileName و چک می کنید که ReadOnly نباشه می بینید که همه چیز درسته ولی بازم کار نمی کنه ... احتمالا اگر نسخه Serevr ویندوز رو کامپیوترتون نصبه برای حل این مشکل کافیه کارهای زیر رو بکنید.
- دوباره برید به آدرس C:\Inetpub\wwwroot\[Project Name]\FileName و روی فایل مورد نظر RightClick کنید و Properties و سپس Tab آخر یعنی Security را انتخاب کنید.
- احتمالا تا حالا 10 دفعه اینجا اومدید و دیدید که Administator که شما باشد write ش چک شده ولی شما باید از بین لیست "Group or user names" گزینة Users([your computer name]\Users) را انتخاب کرده و در جدول پایین Write رو انتخاب کنید به همین سادگی ....

Configuration Error

For below error you can go to IIS>WebSites>Default Web Site>[your project]>Right-Click>Properties and click on Create button (in Directory tab) and press Apply or Ok. I hope this helps.



Server Error in '/' Application.
Configuration Error
Description:
An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Source Error:
Line 35: by Microsoft that offers a single logon and core profile services for member sites.
Line 36: -->
Line 37: <authentication mode="Windows" />
Line 38:
Line 39: <!-- AUTHORIZATION

خب این بار ASP .net
Microsoft Visual Studio .NET 2003 را اوردید بالا و یه برنامه ASP .Net Web Application درست کردید (گرچه دو تا هم پیغام داد) و فایل هاش ساخته و آماده شد. محض خنده همون اول کامپال (Ctrl+F5) می کنیم می بینیم این Error رو می ده. خب راست می گه، درد از IIS ه (یا ويژوال استدیو) که احتمالا به هر دلیل مسخره ای خودش نتونسته درست Config کنه. البته با Internet Information Services (IIS) Manager Version: 6.0 که رو این سیستم نصبه، تنها با کار کوچک زیر Error رفع شد.
1- IIS رو بالا بیاورید.
2- برید به Web Sites
3- برید به Default Web Site
4- برید به برنامه خود و روی اسم برنامه Right-Click کنید و properties را انتخاب کنید
5- Directory رو انتخاب کنید (همین طوریش هم انتخاب شده چون Tab اوله)
6- روی کلید Create کلیک کنید.
برای این مشکل همین کافی بود ولی تو ComboBox ی Execute Permission و چک باکس های بالاش می تونه Config ها و Permission های مختلفی تنظیم کنه.
مثلا اگه Database, XML یا هر فایلی دارید که از تو برنامه (WebSite) محتویاتش تغییر می کنه باید Write را علامت بزنید.

September 25, 2004

DirectX Beginner

If you work with any COM Object Function like as (DirectX functions, ...)
CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void **)&pSysDevEnum);
CreateClassEnumerator(CLSID_VideoCompressorCategory, &pEnumCat, 0);
and some thing like this ... and get Error (or problem)
you must use of this function After Start Application and Before Quite (Reached on WM_QUIT message) Application...
- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); OR CoInitialize(NULL);
- CoUninitialize();


خب اگه با DirectX يا هر COM ديگه اي کار مي کرديد و بعد از يه ساعت کپي و پيست کردن از MSDN ;-) بازم کار نمي کنه ... بابا اين دوتا رو اول و آخر برنامت بنويس راه ميفته

- CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); OR CoInitialize(NULL);
- CoUninitialize();

حلله ... خوش باش ..

September 17, 2004

USES_CONVERSION

For use of ATL String Convert macros in your project... you must be use of this macro (USES_CONVERSION;) and add #include <atlbase.h> to your project.

USES_CONVERSION چيه؟به مثال زير نگاه کنيد

void func( LPSTR lpsz ) 
{ 
  USES_CONVERSION; 
  ... 
  LPWSTR x = A2W(lpsz) 
  // Do something with x 
  ... 
}

هنگامي که از مبدل هاي string يي ATL استفاده مي کنيد بايد براي جلوگيري از Compile Error از اين دستور مسخره استفاده کنيد. مثل زير

HRESULT CCompData::OnPreLoad(LPDATAOBJECT lpDataObject, LPARAM arg, LPARAM param) 
{ 
  USES_CONVERSION; 
  LPOLESTR wszName = NULL; 
  const _TCHAR *pszName = m_pStaticNode->GetDisplayName(); 
  wszName = (LPOLESTR)T2COLE(pszName); 
  ... 
}

مثلا T2COLE يک ATL macro باحاله که مي تونه String Poniter مانند LPCTSTR و محتوياتش رو به LPCOLESTR تبديل کنه و براي استفاده از اون تنها کافيست که USES_CONVERSION استفاده کنيد.

// use it to call OLE here
USES_CONVERSION;
pI->SomeFunctionThatNeedsUnicode(T2OLE(lpszA));
... براي اينکه ماکروهاي اين چنيني براي دسترسي به فضاهاي Temp از local variable هايي با نام convert_ استفاده مي کنند که بااحضار ماکروي USES_CONVERSION مشکل استفاده از اون ها حلله .. مثل مثال بالا.... ماکروهاي مبدل عمومي مانند زيرند:
Generic Conversion Macros
A2CW (LPCSTR) -> (LPCWSTR)
A2W (LPCSTR) -> (LPWSTR)
W2CA (LPCWSTR) -> (LPCSTR)
W2A (LPCWSTR) -> (LPSTR)
OLE Conversion Macros
T2COLE (LPCTSTR) -> (LPCOLESTR)
T2OLE (LPCTSTR) -> (LPOLESTR)
OLE2CT (LPCOLESTR) -> (LPCTSTR)
OLE2T (LPCOLESTR) -> (LPCSTR)
Other Considerations
و يه عالمه ديگه
حالا اومديد و استفاده کرديد ديديد که هر چي ميزنيد Compile ... خطا مي ده ...
خب بدبخت حق داره بايد Header مربوطه رو بهش Add کنيد دیگه ...
آره مي دونم MSDN رو زير و رو کرديد ولي پيدا نشده ... عصباني نباشيد .. مايکروسافتِ ديگه ... شعورش که نمي رسه ... شما ببخشيدش ... Header اش اينه
#include <atlbase.h>
بذاريد بالاي برنامه و تموم.

September 10, 2004

Creative VIBRA 128

If you have problem to detect "Creative VIBRA 128" (Sound Card) to your Windows Server Edition you can must use of the last deriver of this card. You can find it from some site like these
http://uk.europe.creative.com/support/drivers/advanced.asp
http://hybrid.academic.cmru.ac.th/ftp/windows/driver/SBAudioSetup_W2k.zip
download, extract and install it and then ENJOY with a music like "Hey You" ;-) I hope this helps.
خب اگه شما از اين نوع کارت صداها مثل
Creative Sound Blaster® Vibra128
Sound Blaster 16 PCI
Sound Blaster PCI 128
Sound Blaster 4.1 Digital
Sound Blaster Ensoniq AudioPCI

رو کامپيوترتون داريد و يه ويندوز Server Edition مثل Windows 2003 .Net يا Windows 2000 يا هر کوفت ديگه اي نصب کرديد و مي بينيد در کمال تاسف متاسفانه نمي شناستش
Multimedia Audio Controller (to ControlPanel>System>Device Manager alamat e ? dareh)
که هيچ بلکه CD Driver اين کارت نيز کاري براتون نمي کنه ...معنيش اينه که بز آوردين
به خودتون مي گيد Creative کشک که نيست سايت داره Custmet Service داره خبر مرگشون
http://uk.europe.creative.com/support/drivers/product.asp
http://uk.europe.creative.com/support/drivers/advanced.asp
خب اگه تو اين ليست انتخاب کني مي بيني براي اين نوع محصول دو تا Patch داره
1)تاريخ انتشار: 19/12/2002

Sound Blaster PCI cards Web Update for users running Windows 98SE, Windows ME, Windows 2000 or Windows XP.
Sound Blaster PCI (WDM) Drivers V 5.12.01.5017
نام محصول: SBPCI_WebDrvsV5_12_01.exe

2) تاريخ انتشار: 19/11/2001
Driver release for SB PCI 128 Vibra / PCI 16 (Models CT 481x & 4740)
نام محصول: SBAudioSetup_W2k.zip (که شامل SBAUDIOSetupus.EXE و SBAPW2k.LIB هستش)

خب تعجب نکنيد منم رسيدم به کليد Download اما هرچي روش مي زنيد نمي ياد .. اگه اومد که هيچیBSAudioSetup_W2k.zip رو دانلود کنيد و تموم ... اما اگه نيومد کارتون در اومده بريد تو GOOGLE و بگرديد دنبال همين فايل (SBAudioSetup_W2k.zip) شايد فرجي شد و يکي اينو گذاشته بود رو Server اش ...
من که از اينجا دانلود کردم و حل شد ...
خب حل شده ... حالا بشينيد و يه دل سير Hey You گوش کنيد... خوش باشيد ...

Requset is not accepted

If you have problem with Win 9x Client and you have this message that ...
"Requset is not accepted by the network, Try again later."
you probably have an EVENT202 on the Server.
You can solve this problem with 2 way
1- Control Panel> Licensing> Add more to Per Server License
2- Control Panel> Licensing> Change the Per Server License to Per Seat

گندش دراومده ... همه سرور و تشکيلاتشون رو اوردي بالا موقع تحويل ... کليک مي کنن روي Share Folder هاي Server يه دفعه مياد دو دفعه نمي ياد .... يه Error مسخره هم مي آد که "درخواستت پذيرفته نيست. دوباره تلاش کنيد." چشمات داره مي زنه بيرون ... مي توني بندازي گردن مشکلات سخت افزاري ...
اگه خوب ور بري مي بيني که مثلا تا موقعي که n تا PC روشنه مشکل حلله اما وقتي که n+1 امي مياد تو شبکه گند مي خوره به همه ... از اون عجيب تر اينکه همه Server رو مي بينن و مي تونن برن توش ولي تا مي زنن روي يه Share Folder دلينگ اين پيغامه مي آد ...

"Requset is not accepted by the network."
"Requset is not accepted by the network, Try again later."

اينم گاها فقط کامپيوتر هاي 95و 97و Me و غيره مي دن ...
بابا خيلي سادس ... مشکله Licensing داره ... برين تو ControlPanel> Licensing يا برين Per Sservr رو بکنين Per Seat که خيال خودتون و شبکه و غيره رو راحت کنه :)) يا به Per Server تون اضافه کنيد .. راحت بود نه ...
حالا بريد يه گوشة شرکت واستيد، ليوان گندة شير يا قهوه يا چاييتونت رو بگيرين دستتون و از اينکه ملت بدون حتي يه ثانيه مشکل از Serevr استفاده مي کنن لذت ببرن ... حظ کنيد ... نوش جان