Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.16;
Скачать: CL | DM;

Вниз

Как декодировать сообщения из TIdPOP3   Найти похожие ветки 

 
Делфиец   (2010-10-26 08:43) [0]

Пишу простую почтовую проверялку писем с использованием компонентов Indy  TIdPOP3, TidMessage.

Проблема: в том, что некоторые письма отображаются в ином коде.  
Вопрос: Есть ли какой нибудь компонент Indy, который бы автоматически распознавал кодировку и декодировал в нужный код? Или как-нибудь исправить другим способом?


 
Anatoly Podgoretsky ©   (2010-10-26 08:51) [1]

Если есть в заголовке признак кодировке, то можно перекодировать, в ограниченое количество других кодировок, но естественно руками.


 
George ©   (2010-10-26 09:41) [2]


> Anatoly Podgoretsky ©   (26.10.10 08:51) [1]

А если нету, то эцих с гвоздями отправителю. :) А вообще Инди же вроде автоматически это все делает, когда получает письмо, не?


 
Anatoly Podgoretsky ©   (2010-10-26 09:48) [3]

Ну да автоматически, и при этом телепатическим методом, определяет в какую кодировку преобразовывать. POP3 это не визуальный компонент.


 
Делфиец   (2010-10-26 09:56) [4]


> Anatoly Podgoretsky ©   (26.10.10 08:51) [1]
> Если есть в заголовке признак кодировке, то можно перекодировать,
>  в ограниченое количество других кодировок, но естественно
> руками.


В некоторых есть, а в некоторых нет:

-------------------------------------------------------
2 Subject:  | From.Name: =?UёF-8?B?0K/QvdC40L0g0JDQu9C10LrRgdC10Lk=?= | From.Adress: aleksey.yanin@usk.ilimgroup.ru | From.Size   : 1093 | Date: 19.10.2010 16:56:39
IdMessage.Headers.GetText:Return-Path: <aleksey.yanin@usk.ilimgroup.ru>
Received: from [195.46.103.14] (HELO [192.168.164.36])
 by usk.ilimgroup.ru (CommuniGate Pro SMTP 5.2.11)
 with ESMTP id 4026409 for konstantin.naumkin@usk.ilimgroup.ru; Tue, 19 Oct 2010 16:56:40 +0900
X-AntiVirus: Checked by Dr.Web [version: 5.0, engine: 5.00.2.03300, virus records: 1686365, updated: 19.10.2010]
Message-ID: <4CBD4F37.3010708@usk.ilimgroup.ru>
Date: Tue, 19 Oct 2010 16:56:39 +0900
From: =?UTF-8?B?0K/QvdC40L0g0JDQu9C10LrRgdC10Lk=?=
<aleksey.yanin@usk.ilimgroup.ru>
Organization: =?UTF-8?B?0J7QkNCeICLQk9GA0YPQv9C/0LAgItCY0LvQuNC8Ig==?=
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.9) Gecko/20100915 Thunderbird/3.1.4
MIME-Version: 1.0
To: konstantin.naumkin@usk.ilimgroup.ru
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

2 Subject:  | From.Name: =?UTF-8?B?0K/QvdC40L0g0JDQu9C10LrRgdC10Lk=?= | From.Adress: aleksey.yanin@usk.ilimgroup.ru | From.Size   : 1093 | Date: 19.10.2010 16:56:39
-------------------------------------------------------
3 Subject: Информация | From.Name: PostMaster | From.Adress: post@usk.ilimgroup.ru | From.Size   : 1857478 | Date: 20.10.2010 13:45:08
IdMessage.Headers.GetText:Return-Path: <post@usk.ilimgroup.ru>
Received: from [195.46.103.14] (account post HELO kirshinaSA)
 by usk.ilimgroup.ru (CommuniGate Pro SMTP 5.2.11)
 with ESMTPA id 4030570 for all@usk.ilimgroup.ru; Wed, 20 Oct 2010 13:45:10 +0900
X-AntiVirus: Checked by Dr.Web [version: 5.0, engine: 5.00.2.03300, virus records: 1687584, updated: 20.10.2010]
From: "PostMaster" <post@usk.ilimgroup.ru>
To: <all@usk.ilimgroup.ru>
Subject: =?koi8-r?B?6c7Gz9LNwcPJ0Q==?=
Date: Wed, 20 Oct 2010 13:45:08 +0900
Message-ID: <002801cb7011$937c6870$ba753950$@ilimgroup.ru>
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0029_01CB705D.03641070"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: Actv/7JdlAclew9EQnGEdbe4Ybfz4gACOsNAAAI5LlA=
Content-Language: ru

3 Subject: йОЖПТНБГЙС | From.Name: PostMaster | From.Adress: post@usk.ilimgroup.ru | From.Size   : 1857478 | Date: 20.10.2010 13:45:08
-------------------------------------------------------


 
George ©   (2010-10-26 10:02) [5]


> Anatoly Podgoretsky ©   (26.10.10 09:48) [3]

Дык почему телепатическим? Насколько я знаю, исходя из заголовков как раз таки пляска идет.


 
Делфиец   (2010-10-26 10:06) [6]


> Делфиец   (26.10.10 09:56) [4]


Интересно, что отправленные письма из Outlook не содержат:
Content-Type
Content-Transfer-Encoding
Но в Subject: =?koi8-r?B?6c7Gz9LNwcPJ0Q==?=    - содержит указание на кодировку как бы этим воспользоваться.

Модуль для конвертации koi8 в Windows-1251 имеется, но вот а если письмо попадется в другой кодировке это что нужно иметь на все типы кодировок разные модули?


 
Dennis I. Komarov ©   (2010-10-26 10:58) [7]


> это что нужно иметь на все типы кодировок разные модули?

Да нет конечно, просто пишешь юзеру мессагу, типа влом мне всякой ересью заниматься...


 
George ©   (2010-10-26 12:30) [8]


> Но в Subject: =?koi8-r?B?6c7Gz9LNwcPJ0Q==?=    - содержит
> указание на кодировку как бы этим воспользоваться.

И это, насколько я помню, Инди должен автоматом хавать. Ну у меня хавал.


 
Anatoly Podgoretsky ©   (2010-10-26 12:54) [9]

> Делфиец  (26.10.2010 09:56:04)  [4]

Вот это можно перекодировать.


 
Anatoly Podgoretsky ©   (2010-10-26 12:58) [10]

> George  (26.10.2010 10:02:05)  [5]

Телепатически, не телепатически откуда, а куда иначе ни как.


 
Anatoly Podgoretsky ©   (2010-10-26 12:59) [11]

> Делфиец  (26.10.2010 10:06:06)  [6]

koi-8 можно перекодировать только в 1251, 866, ISO, MAC, IBM


 
Anatoly Podgoretsky ©   (2010-10-26 13:01) [12]


> И это, насколько я помню, Инди должен автоматом хавать.
> Ну у меня хавал.

Что значит хавал, то есть с помощью ГСЧ выбирал одну из пяти кодировок и перекодировал, а я там еще Юникод упустил.


 
George ©   (2010-10-26 14:23) [13]


> Anatoly Podgoretsky ©   (26.10.10 13:01) [12]

Ну видимо да, как то так.


 
Игорь Шевченко ©   (2010-10-26 15:02) [14]

для Mail2000 я руками писал. Работает


 
Делфиец   (2010-10-27 07:30) [15]

Как то пришлось потрудиться придумал такой способ определения кодировки:

Type TMsgCode = (UNK, KOI8R, KOI8U, WIN1251, UTF8);

const
 c_win_1251 = "windows-1251";
 c_koi8_r  = "koi8-r";
 c_koi8_u  = "koi8-u";
 c_utf8    = "utf8";

function GetCode(Msg: TIdMessage): TMsgCode;

implementation

function StrToCodeType(Str: String): TMsgCode;
var index: Integer;
begin
 index := AnsiIndexStr(Str,["",c_koi8_r,c_koi8_u,c_win_1251,c_utf8]);
 Result := TMsgCode(Index);
end;

function ExtractCharType(StrValue: String): String;
begin
 StrValue := StringReplace(StrValue,"=?","",[rfIgnoreCase]);
 Result   := Copy(StrValue,1,AnsiPos("?",StrValue)-1);
end;

function GetCode(Msg: TIdMessage): TMsgCode;
var temp: string;
begin
 if Msg.CharSet <> "" then begin
   Result := StrToCodeType(AnsiLowerCase(Msg.CharSet));
   Exit;
 end;
 
 if Msg.Headers.Values["Subject"] <> "" then begin
   Result := StrToCodeType(AnsiLowerCase(Msg.Headers.Values["Subject"]));
 end;
end;

end;

// ................ применение .........

case GetCode(IdMessage) of
 UNK     : ;
 KOI8R   : ;
 KOI8U   : ;
 WIN1251 : ;
 UTF8    : ;
end;


 
Делфиец   (2010-10-27 08:30) [16]

исправил некий ляп:

function GetCode(Msg: TIdMessage): TMsgCode;
var temp: string;
begin
 if Msg.CharSet <> "" then begin
   Result := StrToCodeType(AnsiLowerCase(Msg.CharSet));
   Exit;
 end;

 if Msg.Headers.Values["Subject"] <> "" then begin
   Result := StrToCodeType(ExtractCharType(AnsiLowerCase(Msg.Headers.Values["Subject"])));
   Exit;
 end;

 if Msg.Headers.Values["From"] <> "" then begin
   Result := StrToCodeType(ExtractCharType(AnsiLowerCase(Msg.Headers.Values["From"])));
   exit;
 end;

end;


 
Сергей М. ©   (2010-10-27 10:00) [17]


> Делфиец


Ты изобрел велосипед.

Просто подключи к проекту, использующему IdPOP3, юнит след.содержания:


unit MsgHdrCoders;

interface

uses
 IdHeaderCoderPlain;

type
 TCodeMatrix = array[1..255] of char;

const
 FirstCodes =
   #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28+
  #29#30#31" !"#$%&""()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^" +
   "_`abcdefghijklmnopqrstuvwxyz{|}~";
 cmAnsiToKoi8R: TCodeMatrix = FirstCodes
 + "€&#129;‚&#402;„…†‡&#710;‰&#352;‹&#338;&#141;&#381;&#143;&#144;‘’“”•–—?™&#353;›& #339;&#157;&#382;&#376; &#161;&#162;&#163;¤&#165;¦§&#168;©&#170;«¬­®&#175;°±&#178;&#179;&#180;µ¶·&#163;— &#186;»&#188;&#189;&#190;&#191;&#225;&#226;&#247;&#231;&#228;&#229;&#246;&#250;& #233;"
   + "&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#242;&#243;&#244;&#245;&#230;&#232;& #227;&#254;&#251;&#253;&#255;&#249;&#248;&#252;&#224;&#241;&#193;&#194;&#215;&#1 99;&#196;&#197;&#214;&#218;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#210 ;&#211;&#212;&#213;&#198;&#200;&#195;&#222;&#219;&#221;&#223;&#217;&#216;&#220;& #192;&#209;";
 cmAnsiToKoi8U: TCodeMatrix = FirstCodes
 + "€&#129;‚&#402;„…†‡&#710;‰&#352;‹&#338;&#141;&#381;&#143;&#144;‘’“”•–—?™&#353;›& #339;&#157;&#382;&#376; &#161;&#162;&#163;¤&#165;¦§&#168;©&#170;«¬­®&#175;°±&#178;&#179;&#180;µ¶·&#163;— &#186;»&#188;&#189;&#190;&#191;&#225;&#226;&#247;&#231;&#228;&#229;&#246;&#250;& #233;"
   + "&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#242;&#243;&#244;&#245;&#230;&#232;& #227;&#254;&#251;&#253;&#255;&#249;&#248;&#252;&#224;&#241;&#193;&#194;&#215;&#1 99;&#196;&#197;&#214;&#218;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#210 ;&#211;&#212;&#213;&#198;&#200;&#195;&#222;&#219;&#221;&#223;&#217;&#216;&#220;& #192;&#209;";
 cmKoi8RToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-&#184;&#227;&#227;¬¬¬LLL---¦¦¦¦&#168;¦¦TTT¦¦¦+++©&#254;&#224;&#225;&#246;&#228;&#229;&#244;&#227;&#245;"
   + "&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#255;&#240;&#241;&#242;&#243;& #230;&#226;&#252;&#251;&#231;&#248;&#253;&#249;&#247;&#250;&#222;&#192;&#193;&#2 14;&#196;&#197;&#212;&#195;&#213;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207 ;&#223;&#208;&#209;&#210;&#211;&#198;&#194;&#220;&#219;&#199;&#216;&#221;&#217;& #215;&#218;";
 cmKoi8UToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-&#184;&#186;&#227;&#179;&#191;¬LLL-&#180;&#162;¦¦¦¦&#168;&#170;¦&#178;&#175;T¦¦¦+&#165;&#161;©&#254;&#224;&#225;&#246;&#228;&#229;&#244;&#227;&#245;"
   + "&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#255;&#240;&#241;&#242;&#243;& #230;&#226;&#252;&#251;&#231;&#248;&#253;&#249;&#247;&#250;&#222;&#192;&#193;&#2 14;&#196;&#197;&#212;&#195;&#213;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207 ;&#223;&#208;&#209;&#210;&#211;&#198;&#194;&#220;&#219;&#199;&#216;&#221;&#217;& #215;&#218;";
 cmOemDosToAnsi: TCodeMatrix = FirstCodes
 + "&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;& #205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;&#217;&#2 18;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231 ;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;---¦+¦¦¬¬¦¦¬---¬L+T+-+¦¦L"
   + "&#227;¦T¦=+¦¦TTLL-&#227;++----¦¦-&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&# 253;&#254;&#255;&#168;&#184;&#170;&#186;&#175;&#191;&#161;&#162;°•·v&#185;¤¦ ";
 cmIsoToAnsi: TCodeMatrix = FirstCodes
 + "???????????????????????????????? &#168;€&#129;&#170;&#189;&#178;&#175;&#163;&#352;&#338;&#381;&#141;­&#161;&#143; &#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&# 205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;"
   + "&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;& #230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#2 43;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;&#185 ;&#184;&#144;&#402;&#186;&#190;&#179;&#191;&#188;&#353;&#339;&#382;&#157;§&#162; &#376;";
type

 TIdHeaderCoderKOI8 = class(TIdHeaderCoderPlain)
 public
   class function Decode(const ACharSet, AData: String): String; override;
   class function Encode(const ACharSet, AData: String): String; override;
   class function CanHandle(const ACharSet: String): Boolean; override;
 end;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;

implementation

uses IdGlobal, IdHeaderCoderBase;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;
var
 i: Integer;
begin
 Result := "";
 for i:= 1 to Length(AString) do
   Result := Result + AMatrix[Ord(AString[i])];
end;

{ TIdHeaderCoderKOI8 }

class function TIdHeaderCoderKOI8.CanHandle(const ACharSet: String): Boolean;
begin
 Result := TextIsSame(ACharSet, "KOI8-R") or TextIsSame(ACharSet, "KOI8-U");
end;

class function TIdHeaderCoderKOI8.Decode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmKoi8RToAnsi)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmKoi8UToAnsi);
end;

class function TIdHeaderCoderKOI8.Encode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmAnsiToKoi8R)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmAnsiToKoi8U);
end;

initialization
 RegisterHeaderCoder(TIdHeaderCoderKOI8); // регистрация класса KOI8-кодека ! Аналогично пишется и регистрируется любой другой кодек
finalization
 UnregisterHeaderCoder(TIdHeaderCoderKOI8);

end.


 
Сергей М. ©   (2010-10-27 10:00) [18]


unit MsgHdrCoders;

interface

uses
 IdHeaderCoderPlain;

type
 TCodeMatrix = array[1..255] of char;

const
 FirstCodes =
   #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28+
  #29#30#31" !"#$%&""()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^" +
   "_`abcdefghijklmnopqrstuvwxyz{|}~";
 cmAnsiToKoi8R: TCodeMatrix = FirstCodes
 + "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй"
   + "клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
 cmAnsiToKoi8U: TCodeMatrix = FirstCodes
 + "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй"
   + "клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
 cmKoi8RToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёг㬬¬LLL---¦¦¦¦Ё¦¦TTT¦¦¦+++©юабцдефгх"
   + "ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
 cmKoi8UToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёєгії¬LLL-ґў¦¦¦¦ЁЄ¦ІЇT¦¦¦+ҐЎ©юабцдефгх"
   + "ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
 cmOemDosToAnsi: TCodeMatrix = FirstCodes
 + "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп---¦+¦¦¬¬¦¦¬---¬L+T+-+¦¦L"
   + "г¦T¦=+¦¦TTLL-г++----¦¦-рстуфхцчшщъыьэюяЁёЄєЇїЎў°•·v№¤¦ ";
 cmIsoToAnsi: TCodeMatrix = FirstCodes
 + "???????????????????????????????? ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ"
   + "ЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ";
type

 TIdHeaderCoderKOI8 = class(TIdHeaderCoderPlain)
 public
   class function Decode(const ACharSet, AData: String): String; override;
   class function Encode(const ACharSet, AData: String): String; override;
   class function CanHandle(const ACharSet: String): Boolean; override;
 end;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;

implementation

uses IdGlobal, IdHeaderCoderBase;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;
var
 i: Integer;
begin
 Result := "";
 for i:= 1 to Length(AString) do
   Result := Result + AMatrix[Ord(AString[i])];
end;

{ TIdHeaderCoderKOI8 }

class function TIdHeaderCoderKOI8.CanHandle(const ACharSet: String): Boolean;
begin
 Result := TextIsSame(ACharSet, "KOI8-R") or TextIsSame(ACharSet, "KOI8-U");
end;

class function TIdHeaderCoderKOI8.Decode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmKoi8RToAnsi)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmKoi8UToAnsi);
end;

class function TIdHeaderCoderKOI8.Encode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmAnsiToKoi8R)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmAnsiToKoi8U);
end;

initialization
 RegisterHeaderCoder(TIdHeaderCoderKOI8);
finalization
 UnregisterHeaderCoder(TIdHeaderCoderKOI8);

end.


 
Делфиец   (2010-10-27 10:31) [19]


> Сергей М. ©   (27.10.10 10:00) [18]


Проходится изобретать велосипед, когда не понимаешь как другие делают.
Еще ранее этот юнит "MsgHdrCoders" скачивал, но вот так и не разобрался  
проблемой стал этот модуль Uses IdHeaderCoderPlain
[DCC Error] MsgHdrCoders.pas(6): F1026 File not found: "IdHeaderCoderPlain.dcu"


 
Сергей М. ©   (2010-10-27 10:34) [20]

у тебя 9-ка что ли ?
этот юнит для 10-ки


 
Делфиец   (2010-10-27 10:52) [21]


> Сергей М. ©   (27.10.10 10:34) [20]


На свойствах компонентов версия определяется 10.1.5


 
Сергей М. ©   (2010-10-27 11:05) [22]

Тогда  IdHeaderCoderPlain.pas  обязан быть в папке с индейскими исходниками.
Значит ты не указал путь к этой папке в списке Library path



Страницы: 1 вся ветка

Текущий архив: 2011.01.16;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.01 c
15-1286052399
xayam
2010-10-03 00:46
2011.01.16
Настройка apache: htaccess


15-1286210928
@!!ex
2010-10-04 20:48
2011.01.16
Где купить Штеуд не совместимый компьютер?


15-1285881569
Германн
2010-10-01 01:19
2011.01.16
DEFINE VERxxx


15-1285878556
Юрий
2010-10-01 00:29
2011.01.16
С днем рождения ! 1 октября 2010 пятница


2-1287916159
Первокурсница
2010-10-24 14:29
2011.01.16
INSERT INTO table поля из двух других связанных таблиц