http://python.org/download/ Версия 2.7.3 является текущей, потихоньку происходит мигрирование на 3.x, но я бы советовал тренироваться на 2.7.3.
ни в коем случае не начинай ни с Basic-языков, ни с Pascal-языков (Delphi из них). Ты просто про**шь время. Эти языки почти нигде где катируются, у них есть огромнейшие недостатки перед другими языками (там есть такие вещи, что... потом в проектировании помрешь). C#/C++/C как для системщика очень подойдет. можно побаловаться python'ом в этом же направлении. как вебером... JS (это обязательно), php/Ruby/Python, технологии ServerJS/ASP.NET/JSP/. тут всё подойдет, правда, популярность php по отношению к остальным языкам стремительно падает, но он все равно держит свою долю, и очень большую долю =))
Да.... А та часть людей которая на Delphi профессианально програмируют, скайп, тотал командер и.т.д... Это все х*ня да?) Да особенно питон и C# для системщика ой как пойдет, уже лучш Delphi за место C# и питона вклинить там есть возможности для работы с железом и.т.д А в питоне.. Ну только pywin32 и то кодить системный софт на питоне, это не целесообразно выглядит.
лол, что? вы видели, какая жесточайшая индусия юзается в skype? в total commander? какоро уровня там быдлокодинг? в виде разваливающихся интерфейсов и т.п.? делфи как для системщика.... какого уровня у вас быдлокодниг и индусия в вашем коде? мне просто интересно.
Спасибо всем за участие! Я решил таки взять VS2008ExpressWithSP1RUS, уже скачал. Вот поставлю и.... начнем!
Нука считай кол-во индусс-кого кода. Code: ParamItem = record name: string; value: string; end; MemberType = (mInteger, mString, mObj, mDouble, mBool); SexType = (men, woomen, unknown); MemberInfo = record Name: string; MType: MemberType; PValue: Pointer; end; PTBaseResult = ^TBaseResult; TBaseResult = class protected FMemberList: array of MemberInfo; procedure AddMember(Name: string; Mtype: MemberType; Pvalue: Pointer); public procedure Load(var jsonObj: TJSONObject); end; TBaseResultCollection = class(TObjectList) function GetItems(Index: Integer): TBaseResult; procedure SetItems(Index: Integer; Value: TBaseResult); public property Items[Index: Integer]: TBaseResult read GetItems write SetItems; procedure LoadCollection(var jsonObj: TJSONArray); end; TCounters = class (TBaseResult) protected FAlbums: Integer; FVideos: Integer; FAudios: Integer; FNotes: Integer; FFriends: Integer; FGroups: Integer; FOnlineFriends: Integer; FMutualFriends: Integer; FUserVideos: Integer; FFollowers: Integer; public Constructor Create; property Albums: Integer read FAlbums; property Videos: Integer read FVideos; property Audios: Integer read FAudios; property Notes: Integer read FNotes; property Friends: Integer read FFriends; property Groups: Integer read FGroups; property OnlineFriends: Integer read FOnlineFriends; property MutualFriends: Integer read FMutualFriends; property UserVideos: Integer read FUserVideos; property Followers: Integer read FFollowers; end; TUserInfo = class(TBaseResult) protected FUid: String; FFirstName: String; FLastName: String; FNickname: String; FScreenName: String; FSex: SexType; FBdate: String; FBirthdate: String; FCity: Integer; FCountry: Integer; FTimezone: String; FPhoto: String; FPhotoMedium: String; FPhotoBig: String; FHasMobile: Boolean; FRate: String; FMobilePhone: String; FHomePhone: String; FUniversity: Integer; FUniversityName: String; FFaculty: Integer; FFacultyName: string; FGraduation: Integer; FOnline: String; FCounters: TCounters; public Constructor Create; property Uid: String read FUid; property FirstName: String read FFirstName; property LastName: String read FLastName; property Nickname: String read FNickname; property ScreenName: String read FScreenName; property Sex: SexType read FSex; property Bdate: String read FBdate; property Birthdate: String read FBirthdate; property City: Integer read FCity; property Country: Integer read FCountry; property Timezone: String read FTimezone; property Photo: String read FPhoto; property PhotoMedium: String read FPhotoMedium; property PhotoBig: String read FPhotoBig; property HasMobile: Boolean read FHasMobile; property Rate: String read FRate; property MobilePhone: String read FMobilePhone; property HomePhone: string read FHomePhone; property University: Integer read FUniversity; property UniversityName: String read FUniversityName; property Faculty: Integer read FFaculty; property FacultyName: String read FFacultyName; property Graduation: Integer read FGraduation; property Online: String read FOnline; property Counters: TCounters read FCounters; end; implementation { TBaseResult } procedure TBaseResult.AddMember(Name: string; Mtype: MemberType; Pvalue: Pointer); var Member: MemberInfo; L: Integer; begin Member.Name := Name; Member.MType := Mtype; Member.PValue := Pvalue; L := Length(FMemberList); SetLength(FMemberList, L + 1); FMemberList[L] := Member; end; procedure TBaseResult.Load(var jsonObj: TJSONObject); var i: Integer; tmp: TJSONObject; begin for i := 0 to Length(FMemberList) - 1 do begin if jsonObj.has(FMemberList[i].Name) then begin case FMemberList[i].Mtype of mInteger: PInteger(FMemberList[i].PValue)^ := jsonObj.getInt(FMemberList[i].Name); mString: PString(FMemberList[i].PValue)^ := jsonObj.getString(FMemberList[i].Name); mDouble: PDouble(FMemberList[i].PValue)^ := jsonObj.getDouble(FMemberList[i].Name); mObj: begin tmp := TJSONObject.create; tmp := jsonObj.getJSONObject(FMemberList[i].Name); PTBaseResult(FMemberList[i].PValue)^.Load(tmp); end; end; end; end; end; { TBaseResultCollection } function TBaseResultCollection.GetItems(Index: Integer): TBaseResult; begin Result := TBaseResult(inherited GetItem(Index)); end; procedure TBaseResultCollection.LoadCollection(var jsonObj: TJSONArray); var i: Integer; tmp: TJSONObject; begin Clear; for i := 0 to jsonObj.length - 1 do begin Self.Add(TBaseResult.Create); tmp := TJSONObject.create; tmp := jsonObj.getJSONObject(i); TBaseResult(Self.Last).Load(tmp); end; end; procedure TBaseResultCollection.SetItems(Index: Integer; Value: TBaseResult); begin inherited SetItem(Index, Value); end; { TCounters } constructor TCounters.Create; begin AddMember('albums', mInteger, @Self.FAlbums); AddMember('videos', mInteger, @Self.FVideos); AddMember('audios', mInteger, @Self.FAudios); AddMember('notes', mInteger, @Self.FNotes); AddMember('friends', mInteger, @Self.FFriends); AddMember('groups', mInteger, @Self.FGroups); AddMember('online_friends', mInteger, @Self.FOnlineFriends); AddMember('mutual_friends', mInteger, @Self.FMutualFriends); AddMember('user_videos', mInteger, @Self.FUserVideos); AddMember('followers', mInteger, @Self.FFollowers); end; { TUserInfo } constructor TUserInfo.Create; begin AddMember('uid', mString, @Self.FUid); AddMember('first_name', mString, @Self.FFirstName); AddMember('last_name', mString, @Self.FLastName); AddMember('nickname', mString, @Self.FNickname); AddMember('screen_name', mString, @Self.FScreenName); AddMember('sex', mString, @Self.FSex); AddMember('bdate', mString, @Self.FBdate); AddMember('birthdate', mString, @Self.FBirthdate); AddMember('city', mString, @Self.FCity); AddMember('country', mString, @Self.FCountry); AddMember('timezone', mString, @Self.FTimezone); AddMember('photo', mString, @Self.FPhoto); AddMember('photo_medium', mString, @Self.FPhotoMedium); AddMember('photo_big', mString, @Self.FPhotoBig); AddMember('has_mobile', mBool, @Self.FHasMobile); AddMember('rate', mString, @Self.FRate); AddMember('mobile_phone', mString, @Self.FMobilePhone); AddMember('home_phone', mString, @Self.FHomePhone); AddMember('university', mInteger, @Self.FUniversity); AddMember('university_name', mString, @Self.FUniversityName); AddMember('faculty', mInteger, @Self.FFaculty); AddMember('faculty_name', mString, @Self.FFacultyName); AddMember('graduation', mInteger, @Self.FGraduation); AddMember('online', mString, @Self.FOnline); AddMember('counters', mString, @Self.FCounters); end;