تداخل متغیرها در کامپیوترهای تحت شبکه
سلام دوستان
به کمکتون فوری احتیاج دارم
من یک برنامه اینتراوب نوشتم و روی یکی از کامپیوترهای اداره قرار دادم وقتی از طریق کامپیوترهای دیگه تحت شبکه اون برنامه رو رو توی مرورگر باز میکنم اجرا میشود.
اما مشکل من اینه وقتی توی کامپیوتر 1 متغیری را مقدار میدم توی کامپیوتر 2 هم وقتی میخوام عملی را انجام بدم مقداری که توسط کامپیوتر 1 تغییر پیدا کرده بود اعمال میشه و کلا محاسباتم بهم میریزه.
مگه اینتراوب نباید برای هر session که باز میشود متغیرها را اختصاصی برای همون کامپیوتر نگه دارد؟
لطفا هر کسی میتونه راهنماییم کنه چطور این مشکل را حل کنم اصلا زمان ندارم.
با تشکر
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
با سلام بستگی داره که شما متغیر رو کجا تعریف کنی. منظورم اینکه در UserSession یا ServerController. در حالت اول که به ازای هر کاربره و دومی به ازای برنامه یعنی کل کاربران.
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
با تشکر از پاسختون
من توی unit1 اینجا متغیرهامو تعریف کردم
کد:
var
jadvalezafekar, jadvalesaghf : string;
saghf: Integer;
saghfsaat: Real;
jamsaatezafekar, jamfarvardin, jamordibehesht, jamkhordad, saatinmah: integer;
amalkard:Real;
a: integer;
implementation
{$R *.dfm}
از این قسمت متغیرها را بردم توی UserSessionUnit.pas ولی برنامه خطا میده که متغیرها تعریف نشده اند.
لطفا دقیقا توضیح میدین باید کجا متغریها را کجا تعریف کنم که در تمام فرم ها شناسایی شوند و به ازای هرکاربر یک کپی از متغیر ساخته شود.
با تشکر
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
سلام
دوست عزیز شما نمی تونید توی اینتراوب مثل برنامه های تحت ویندوز دلفی متغیر تعریف کنید . برای این کار در قسمت usersesioin (یعنی برای هر بار اجرای برنامه برای هر کار بر یا session جدا گانه متغییر تعریف کنید )
متغیر ها را در قسمت public ذر usersession تعریف کنید مشکلتون حل می شه
مثال
public
s: string;
برای استفاده
usersession.s:='test';
3 فایل پیوست
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
با تشکر از پاسخ دوستان
طیق راهنمایی شما متغیرم را توی UserSessionUnit تعریف کردم (تصویر 1)
بعد توی unit2 در قسمت uses اومدم UserSessionUnit را تعریف کردم (تصویر 2)
اما دوباره برنامه ارور میده (تصویر 3)
لطفا بفرمایید من دارم کجا دارم اشتباه میکنم؟
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
با سلام شما متغیر رو در قسمت public کلاس TIWUserSession تعریف کرده اید. بنابراین باید از کلاس یک Instance ایجاد کنید و سپس از آن استفاده کنید.الیته این کار در فایل ServerController انجام شده است. یعنی شما می توانید از تابع UserSession موجود در ServerController استفاده کنید.
کد:
unit ServerController;
interface
uses
SysUtils, Classes, IWServerControllerBase, IWBaseForm, HTTPApp,
// For OnNewSession Event
UserSessionUnit, IWApplication, IWAppForm, IW.Browser.Other, IW.Browser.Browser;
type
TIWServerController = class(TIWServerControllerBase)
procedure IWServerControllerBaseNewSession(ASession: TIWApplication;
var VMainForm: TIWBaseForm);
private
public
end;
function UserSession: TIWUserSession;
function IWServerController: TIWServerController;
implementation
{$R *.dfm}
uses
IWInit, IWGlobal;
function IWServerController: TIWServerController;
begin
Result := TIWServerController(GServerController);
end;
function UserSession: TIWUserSession;
begin
Result := TIWUserSession(WebApplication.Data);
end;
procedure TIWServerController.IWServerControllerBaseNewSession(
ASession: TIWApplication; var VMainForm: TIWBaseForm);
begin
ASession.Data := TIWUserSession.Create(nil);
end;
initialization
TIWServerController.SetServerControllerClass;
end.
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
سلام آقای کریم پور این کد شما گذاشتین کد داخل ServerController است.
لطفا بفرمایید چطور باید instance ایجاد کرد؟ و در فرم های مختلف بشه ازش استفاده کرد؟
اگر یک برنامه نمونه کوچک در حد یک متغیر بزارید که متغیر a را در قسمت public از UserSesisionUnit تعریف کرده باشید و اون متغیر را توی Unit1 مقدار دهید ممنون میشم.
با تشکر.
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
نقل قول:
سلام آقای کریم پور این کد شما گذاشتین کد داخل ServerController است.
لطفا بفرمایید چطور باید instance ایجاد کرد؟ و در فرم های مختلف بشه ازش استفاده کرد؟
اگر یک برنامه نمونه کوچک در حد یک متغیر بزارید که متغیر a را در قسمت public از UserSesisionUnit تعریف کرده باشید و اون متغیر را توی Unit1 مقدار دهید ممنون میشم.
با تشکر.
بدین صورت تعریف کنید.
کد:
TUserSession = class
public
dm : TDataModule;
UserCount: Integer;
end;
end;
همچنین این آدرس رو چک کنید.
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
نقل قول:
بدین صورت تعریف کنید.
کد:
TUserSession = class
public
dm : TDataModule;
UserCount: Integer;
end;
end;
همچنین این آدرس رو چک کنید.
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
اینو کد را توی کدوم فرم باید بنویسم؟
ببخشید که من مبتدی هستم.
آخه هر کار میکنم درست نمیشه همش مزاحم شما دوستان میشم.
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
با سلام لطفا در صورت نیاز با شماره ۰۹۱۲۵۳۹۰۴۹۷ تماس بگیرید.
پاسخ : تداخل متغیرها در کامپیوترهای تحت شبکه
ممنونم از مطالب خوبی که بیان کردین با تجربه شخصی خودم فکر نمیکنم این متغیرهای تحت شبکه در دلفی قابل پیاده سازی باشد معمولا برای شبکه از نرم افزارهای دیگری مثل آمنت استفاده میکنند