Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

Разделение строчек   Найти похожие ветки 

 
Александр1   (2004-08-25 06:51) [0]

Здравствуйте уважаемые мастера!
Имеется текстовой файл например 1.txt. В нём записаны несколько строк следующим образом:
1 строка

2 строка

3 строка

Каждая строка разделена пустой строкой (для удобства).
Необходимо считать все строки из файла и распихать их по разным редакторам Memo1, Memo2,  Memo3 соответственно.
Почему строки отделены между собой пробелом, потому что строка может состоять как бы из нескольких строк:

Текст 446486855765
Текст 87878778789789

Т.е. делить надо в том случае если есть пустая строчка!
Заранее спасибо за помощь!


 
YurikGL ©   (2004-08-25 07:34) [1]

что-то вроде

mas:array[1..3] of memo

t:=1

for i:=1 to общее количество строчек
 if i-я строчка="" then inc(t)
                   else mas[t].lines.add(i-я строчка)


 
КаПиБаРа ©   (2004-08-25 09:16) [2]


> Александр1   (25.08.04 06:51)  

А вопрос то какой? Что непонятно?


 
46_55_41_44 ©   (2004-08-25 09:34) [3]

Слушай напиши по понятней... Помогу!!!


 
Rem   (2004-08-25 09:37) [4]

[2]
 Неужели непонятно?
 Код ему нужен. Код...


 
Александр1   (2004-08-25 09:53) [5]

Чё вы всё демогогию разводите луче чего бы умного написали!


 
Александр1   (2004-08-25 09:58) [6]

А чё тут непонятно. В файле имеется  три абзаца. Нужно прочитать файл, а затем каждый абзац записать в отдельный редактор Memo. Границей между абзацами может служить красная строка или вообще лучше пустая строка. Вот и всё.


 
КаПиБаРа ©   (2004-08-25 10:04) [7]


> Чё вы всё демогогию разводите луче чего бы умного написали!

http://lleo.aha.ru/na/index.shtml


 
46_55_41_44 ©   (2004-08-25 10:12) [8]

AssignFile(F, "путь к файлу/1.txt");
Reset(F);
repeat
 readln(S);
 S := StringReplace(S, " ", "", rfReplaceAll );
 if S <> "" then
   Memo[i].Text := S; //сюда надо вставить, твои Memo или то  куда хочешь вставить
Until Eof(F);


 
Александр1   (2004-08-25 13:06) [9]

КаПиБаРа На этом сайте тебе не разрешают материться, так ты решил при помощи ссылки. Да небольшого ума ты. Ну да ладно, чё с д.... возьмёшь....


 
Андрей Сенченко ©   (2004-08-25 13:14) [10]

Александр1   (25.08.04 13:06) [9]

На этом сайте это очень популярный ответ для подобных Вам.

Нужен совет в непонятной ситуации - спрашивайте. Ответят.
Нужен готовый код ? Обсуждайте цену в "потрепаться".

Я думаю, что цена решения Вашей проблемы не потянет больше, чем на пару бутылок Миллера. Осилите ?


 
Александр1   (2004-08-25 13:58) [11]

Нет. Вы не правы сегодня просто плохой день и люди плохие на сайте сидят.
Завтра будет новый день и всё будет по другому. Ну если не завтра, то через месяц.


 
Александр1   (2004-08-25 14:00) [12]

Чё-то эта строчка не работает?
S := StringReplace(S, " ", "", rfReplaceAll );
К стати S- string Да?


 
begin...end ©   (2004-08-25 14:12) [13]


> [11] Александр1   (25.08.04 13:58)


> люди плохие на сайте сидят

Ты себя имеешь в виду?

> [12] Александр1   (25.08.04 14:00)


> S := StringReplace(S, " ", "", rfReplaceAll );

StringReplace(S, " ", "", [rfReplaceAll])

> К стати S- string Да?

Да. F1, кстати.


 
Rem   (2004-08-25 14:24) [14]

2 Александр1
 
 Слушайте! Идите книги по программированию читать! Быстро! И не суйтесь сюда до тех пор, пока не разберетесь, как минимум, с:
- Object Pascal [12];
- правилами поведения на форуме [9];
- русским языком [все остальное].

И пока не научитесь по-человечески вопросы задавать.

И пока не поймете, что это форум программистов, а не бесплатная онлайн справка для начинающих (дай Бог вам, с таким-то гонором, суметь начать!) с интеллектуально-предсказательными парсерами (в виде живых специалистов) ваших корявых вопросов!

Иначе [11] для вас не наступит никогда! Даже в следующей жизни...


 
Андрей Сенченко ©   (2004-08-25 14:26) [15]

Александр1   (25.08.04 14:00) [12]

Жмем на StringReplace комбинацию Ctrl-F1, читаем.

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;


 
Александр1   (2004-08-27 14:33) [16]

Ну вот из за каких-то скобочек квадратных столько шума подняли.
Спасибо begin...end за помощь!
Я понимаю, что у вас есть ещё один повод на меня покричать, но всё равно деваться некуда.
Memo[i].Text := S; Не работает. Тут ведать чё-то с переменной i. Какого типа i. А может сдесь вообще массив нужен??????
Вы уж не ругайтесь сильно, помогите лучше добрые люди пожалуйста!!!!


 
Amoeba ©   (2004-08-27 14:39) [17]


> Александр1   (27.08.04 14:33) [16]

Memo в данном случае не объект класса TMemo, а массив таких объектов. А вот Memo[i] уже и будет собственно тем Memo, в которое вставляешь текст.


 
Александр1   (2004-08-27 14:51) [18]

Amoeba Ну да я так как раз и думал. Только как его теперь правильно описать??


 
Александр1   (2004-08-27 15:05) [19]

Я чё-то сколько не читал теорию по массивам, так ничего и не понял.
i: array[1..3] of Byte;
так что-ли?. Но чё-то не работает.
Массивы - это больная тема.


 
Amoeba ©   (2004-08-27 15:19) [20]


> Александр1   (27.08.04 15:05) [19]

Тогда обложись литературой по программированию и читай до полного просветления.

LMD


 
Александр1   (2004-08-27 16:08) [21]

Ну это та понятно. Ну а сейчас, та всё таки как на счёт i.


 
Александр1   (2004-08-27 16:33) [22]

И чё такое LMD??????????????


 
Amoeba ©   (2004-08-27 16:47) [23]


> Александр1   (27.08.04 16:33) [22]
> И чё такое LMD??????????????

LMD = Lamers must die


 
Андрей Сенченко ©   (2004-08-27 16:54) [24]

Amoeba ©   (27.08.04 16:47) [23]

Но с друго стороны DML ... может быть все-таки исправится ?


 
Александр1   (2004-08-27 17:10) [25]

Как мне и посоветовали я открыл книжку и вычитал там, что вроде как типы должны быть описаны так:
Memo: array [1..3] of Integer;
 i:Integer;
Но похоже не так, т.к. ничего не работает?
Помогите пожалуйста КАК ВСЁ ТАКИ НАДО?


 
Красный молоток   (2004-08-27 17:37) [26]

Memo: array [1..3] of Integer;
Так тебе чего надо-то? Массив TMemo или Integer?


 
Александр1   (2004-08-27 18:09) [27]

Понимаешь Красный молоток есть процедура

Memo: array [1..3] of Integer;
 i:Integer;

…….
procedure TForm1.BitBtn2Click(Sender: TObject);
var F:System.Text;
s:string;
begin
AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
Reset(F);
repeat
readln(S);
S := StringReplace(S, " ", "", [rfReplaceAll] );
if S <> "" then
  Memo[i].Text := S; //&#241;&#254;&#228;&#224; &#237;&#224;&#228;&#238; &#226;&#241;&#242;&#224;&#226;&#232;&#242;&#252;, &#242;&#226;&#238;&#232; Memo &#232;&#235;&#232; &#242;&#238;  &#234;&#243;&#228;&#224; &#245;&#238;&#247;&#229;&#248;&#252; &#226;&#241;&#242;&#224;&#226;&#232;&#242;&#252;
Until Eof(F);
end;

Но она не работает. Компилятор выдаёт ошибку на строчку   Memo[i].Text := S;
Ну это и понятно, она никак  не описана. Говорят надо заводить массив. Ну я сделал, но почему-то не работает.
Туго у меня с этими массивами. Помоги если можешь пожалуйста!


 
GrayFace ©   (2004-08-27 18:31) [28]

a:array[1..3] of TMemo;
a[1]:=Memo1;
a[2]:=Memo2;
a[3]:=Memo3;

У тебя можно заменить на это: (FindComponent("Memo"+IntToStr(i)) as TMemo).Text:=S;

И все-таки о морали: Если тебя послали на http://lleo.aha.ru/na/index.shtml, это не значит, что тебя оскорбили.


 
Александр1   (2004-08-27 18:47) [29]

Да я понимаю, что этот сайт не справочная система и что я уже наверное надоел своими глупыми вопросами. Но всё же:
a:array[1..3] of TMemo;
a[1]:=Memo1;
a[2]:=Memo2;
a[3]:=Memo3;
Пишет ошибку.
а – ещё надо как ни будь описывать?
И почему а, а где i.

А на счёт  http://lleo.aha.ru/na/index.shtml, я не обижаюсь. Я вообще в интернете редко на кого обижаюсь.


 
GrayFace ©   (2004-08-27 19:23) [30]

var a:array[1..3] of TMemo;
begin
 a[0]:= и т.д.


 
begin...end ©   (2004-08-27 19:31) [31]

> Александр1   (27.08.04 18:47) [29]

> Пишет ошибку.

Каков текст ошибки?


 
Александр1   (2004-08-27 19:44) [32]

А как же переменная i?

Уважаемый GrayFace!!! Чтобы мне тебя (вас) больше не мучить и себя не мучить, а то так к утру с ума можно сойти, да и вообще я пожалуй скоро забуду зачем я всё это затеял. Может напишите сразу конечный код от начала и до конца и тогда не будет больше проблем, скандалов и т.п.
ПОЖАЛУЙСТА!


 
begin...end ©   (2004-08-27 19:49) [33]

> Александр1   (27.08.04 19:44) [32]

> Может напишите сразу конечный код от начала и до конца

ИМХО, зря ты это сказал.


 
Александр1   (2004-08-27 19:55) [34]

Ну или помогите довести до ума этот!

var
 Form1: TForm1;

 a:array[1..3] of TMemo;
 i:integer;

implementation

{$R *.DFM}

procedure TForm1.BitBtn2Click(Sender: TObject);
var F:System.Text;
begin
AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
Reset(F);
repeat
readln(S);
S := StringReplace(S, " ", "", [rfReplaceAll] );
if S <> "" then
(FindComponent("Memo"+IntToStr(i)) as TMemo).Text:=S;
Until Eof(F);
end;

На форме находится Memo1, Memo2, Memo3.

Я не понимаю куда засунуть
a[1]:=Memo1;
a[2]:=Memo2;
a[3]:=Memo3;?????????? В цикл?


 
begin...end ©   (2004-08-27 20:09) [35]

> Александр1   (27.08.04 19:55) [34]

> (FindComponent("Memo"+IntToStr(i)) as TMemo).Text:=S;

Не совсем понятно, что это вообще там за i.

Тебе посоветовали: вместо того, чтобы писАть вот это:

(FindComponent("Memo"+IntToStr(i)) as TMemo).Text ,

писАть:

a[i].Text .

Удобнее, не правда ли?

a - это массив из компонентов TMemo.
Лучше, конечно дать ему более информативное название.
Например, MemoArray.
Но, сразу после того, как ты его объявил (var), элементы этого массива пусты, т.е. не содержат нужных тебе компонентов Memo.
Поэтому перед прогоном цикла массив надо заполнить.
Например, если у тебя на форме есть компоненты Memo1, Memo2 и Memo3, то можно написать так:

var
 MemoArray: array [1..3] of TMemo;
begin
 MemoArray[1] := Memo1;
 MemoArray[2] := Memo2;
 MemoArray[3] := Memo3;
end.

И теперь можно запускать цикл, и писАть:

MemoArray[I].Text := ...

Но ты должен как-то вычислять I !
Я не вижу, где ты это делаешь.

> куда засунуть

Много в последнее время таких желающих... Весной - я бы ещё понял... :-)


 
Александр1   (2004-08-27 20:39) [36]

Спасибо большое за разъяснения по поводу массивов!

MemoArray: array [1..3] of TMemo;
 i:integer;
 s:string;

procedure TForm1.BitBtn2Click(Sender: TObject);
var F:System.Text;
begin
MemoArray[1] := Memo1;
MemoArray[2] := Memo2;
MemoArray[3] := Memo3;

.AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
Reset(F);
repeat
readln(S);
S := StringReplace(S, " ", "", [rfReplaceAll] );
if S <> "" then
MemoArray[I].Text :=S;

Until Eof(F);
end;


> Но ты должен как-то вычислять I


Честно говоря я и сам не совсем понимаю как его вычислять.
Вот процедура. Описали массив, описали I, s. Заполнили массив. Открыли некий файл 1.vop для чтения. Прочитали его (readln(S)), а дальше я сам не понимаю чё такое
S := StringReplace(S, " ", "", [rfReplaceAll] ); - это должнобыть та функция которая разделяет строчки между собой? А MemoArray[I].Text :=S;, она же FindComponent("Memo"+IntToStr(i)) as TMemo).Text:=S; записывает их по разным Memo редакторам? Ну repeat – начать цикл, Until Eof(F); - повторять до тех пор пока не будет достигнут конец файла.
Файл ведь читается по строчно ли нет?

В файле записано следующее:

Привет Вася!
Привет Петя!

Как дела.

Хорошо.

Мне надо чтобы в программе получилось после прочтения файла: В Memo1 – Привет Вася! Привет Петя!, в Memo2 - Как дела.,
в Memo3 - Хорошо.


 
wnew ©   (2004-08-27 20:45) [37]

Александр1   (27.08.04 20:39) [36]
Саша, если Вам всего около десяти лет, то так и скажите. В этом случае люди с терепением отнесутся к Вашим выходкам. Но, если Вам около 15, то извините - Вы безнадёжны:(


 
begin...end ©   (2004-08-27 20:53) [38]

> S := StringReplace(S, " ", "", [rfReplaceAll] ); - это должнобыть та функция
> которая разделяет строчки между собой?

Должно быть, ты так и не удосужился посмотреть описание StringReplace в справке.
Читаем строку из файла (вот она - S !), если это - строка-разделитель (т.е. строка, состоящая из пробелов), то после удаления из неё пробелов с помощью StringReplace она будет пустой. Это мы и проверяем:

if S <> "" then... // Это была НЕ строка-разделитель

AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
Reset(F);
I := 1; // I - индекс нужного Memo в массиве
repeat
 ReadLn(S);
 S := StringReplace(S, " ", "", [rfReplaceAll]);
 if S <> "" then
   // Это не строка-разделитель, поэтому заносим её в Memo
   MemoArray[I].Text :=S
 else
   // Это - строка-разделитель. Поэтому её никуда не заносим, но учитываем,
   // что следующую строку надо заносить в следующий компонент Memo
   I := I + 1;
until Eof(F);

Только строку S загомачивать конечно, необязательно.
Лучше ввести дополнительную переменную String, в которую помещать результат StringReplace.

P.S. Полностью готового кода ты от меня не дождёшься/

P.P.S. И правда - сколько тебе лет?


 
добрый я   (2004-08-27 21:51) [39]

procedure TForm1.Button1Click(Sender: TObject);
const AnzahlMemo = 3; {колличество Memo на форме}
var Datei: TextFile;
   TmpStr: string;
   MatrixMemo: array[0..AnzahlMemo - 1] of TMemo;
   i, NumMemo: integer;
begin
 NumMemo := AnzahlMemo - 1;
 for i := ComponentCount - 1 downto 0 do
   if Components[i] is TMemo then
   begin
     MatrixMemo[NumMemo] := Components[i] as TMemo;
     Dec(NumMemo);
   end;

   if NumMemo < -1 then exit; {выход, если к-во Memo на форме больше, чем в AnzahlMemo}

 NumMemo := 0;
 AssignFile(Datei, "1.txt");
 Reset(Datei);
 try
   while not Eof(Datei) do
   begin
     ReadLn(Datei, TmpStr);
     if (Length(TmpStr) > 0) and
               ((TmpStr[1] <> "") or (TmpStr[1] <> " ")) then
       MatrixMemo[NumMemo].Lines.Add(TmpStr)
     else
      Inc(NumMemo);

     if NumMemo >= AnzahlMemo then Break;
   end;
 finally
   CloseFile(Datei);
 end;
end;

Внимание - эта строка не принандлежит коду! Задание у тебя странное. Для чего это нужно?


 
begin...end ©   (2004-08-27 21:55) [40]

> добрый я   (27.08.04 21:51) [39]

> Внимание - эта строка не принандлежит коду!

LOL


 
Александр1   (2004-08-28 06:11) [41]

wnew

> Но, если Вам около 15, то извините - Вы безнадёжны:(

Ты считаешь, что в 15 лет люди должны уже всё знать. По-моему в 10 они ещё не то что Delphi, им родители да старшие братья к компу та не допускают. А то сломают чего. Ну хотя понятно из любого правила есть исключение. Мне не много не мало 17 лет.

> Для чего это нужно?

Этот странный как вы подумали код нужен для следующего. Я пишу программу тест (тестирования).  В одном файле будут записаны вопрос и варианты ответа. На форме будут Memo. Программа будет читать файл (вопрос и ответы) и сортировать их по Memo.

Да к стати. добрый я – Спасибо тебе большое. Ты решил закончить эти мучения. Твой код работает.
Ну если begin...end хочет можно закончить и его идею.

var
MemoArray: array [1..3] of TMemo;
 i:integer;
 s:string;

…………….
procedure TForm1.BitBtn2Click(Sender: TObject);
var F:System.Text;
begin
MemoArray[1] := Memo1;
MemoArray[2] := Memo2;
MemoArray[3] := Memo3;

AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
Reset(F);
I := 1;
repeat
ReadLn(f, S);
S := StringReplace(S, " ", "", [rfReplaceAll]);
if S <> "" then
  MemoArray[i].Text :=S
else
   I := I + 1;
until Eof(F);
CloseFile(F);

end;

Данный код компилируется, но при выполнении программы (при нажатии на кнопку). Выдаётся ошибка. И компилятор указывает на строчку MemoArray[i].Text :=S.
И чёго ему не нравится. Строчки прочитаны, но они не раздаются Memo.
Ещё большое спасибо всем за помощь!


 
begin...end ©   (2004-08-28 08:26) [42]


> [41] Александр1   (28.08.04 06:11)


> Ну если begin...end хочет можно закончить и его идею.

Можно, всё-таки? Ну спасибо.

> Данный код компилируется, но при выполнении программы (при нажатии на кнопку).

А у меня нету ошибки. Что я неправильно делаю?

Естественно, код в [38] содержит некоторые погрешности.
Например, из строки S в любом случае удаляются пробелы. Но решение этой проблемы приведено там же.
Потом, вместо TMemo.Lines.Add (как делают все нормальные люди) там - TMemo.Text := ...
Но это всё взято из твоего же кода, и просто подправлено так, чтобы он хоть как-то работал.

Твоё стремление получить сразу готовый код не приведёт тебя ни к чему долгосрочно хорошему.
Я больше чем уверен, что ты не разобрался в коде [39], а просто вставил (всунул) его в свою программу.
Это не есть хорошо. Для 17 лет - тем более.


 
GrayFace ©   (2004-08-28 08:34) [43]

Александр1   (28.08.04 6:11) [41]
По-моему в 10 они ещё не то что Delphi, им родители да старшие братья к компу та не допускают.

Какие не хорошие родители и братья. Все лучшее - детям! Нам.

procedure TForm1.BitBtn2Click(Sender: TObject);
var F:TextFile; I:integer;//когда I локальна, будет чуть быстрее
begin
 MemoArray[1] := Memo1;
 MemoArray[2] := Memo2;
 MemoArray[3] := Memo3;

 AssignFile(F, ExtractFilePath(Application.ExeName)+"vopr\1.vop");
 Reset(F);
 I := 1;
 repeat
 ReadLn(f, S);
 if S <> "" then MemoArray[i].Text :=S
 else I := I + 1;
 until Eof(F);
 CloseFile(F);

end;


 
begin...end ©   (2004-08-28 08:38) [44]


> [43] GrayFace ©   (28.08.04 08:34)

Сейчас автор укажет на ошибку: Undeclared identifier: "S".
Легко отделаться не удастся, в общем.


 
GrayFace ©   (2004-08-28 08:43) [45]

Да, MemoArray[i].Text :=S -> MemoArray[i].Lines.Add(S);


 
wnew ©   (2004-08-28 10:41) [46]

Александр1   (28.08.04 6:11) [41]
Твой подход к программированию, показывает, что тебя оно совсем не интересует. А под "добрый я", как раз я и дал тебе код:)
Кроме того, моему сыну 10 лет, но он ориентируется, для его возраста, в программировании не плохо и вопросы ставит куда более осмысленные.


 
Александр1   (2004-08-28 10:47) [47]

Спасибо GrayFace, спасибо begin...end .  Теперь оба кода работают. Странно конечно было бы, если  бы эти алгоритмы бы не работали.
Я конечно понимаю, что программист из меня хреновый, но куда деваться.
Вы поди в своё время программированию в школе начинали учиться. А у нас чё? В нашей школе не то что программированию научиться, на компе работать научиться невозможно. Компьютеры 286. А препод такой, что даже как они включаются не знает. Вот и приходится во всём самому разбираться. А ведь программирование, как и любое дело по мимо усердия требует определённый талант. А если он (талант) не фонтан, то так и получается. Трудно быть программистом самоучкой.
Ну я думаю я всё ровно исправлюсь со временем, а пока стараюсь собирать различные мелкие алгоритмы, а потом из них составляю программы…


 
Алхимик ©   (2004-08-28 11:52) [48]


> Трудно быть программистом самоучкой

Основная масса такая.

> Ну я думаю я всё ровно исправлюсь со временем, а пока стараюсь
> собирать различные мелкие алгоритмы, а потом из них составляю
> программы…

Глупость какая-то.


 
Александр1   (2004-08-28 14:51) [49]


> Алхимик ©   (28.08.04 11:52) [48]


> Глупость какая-то.

Ну почему всё так консервативно. Надо верить в светлое будущее.


 
GrayFace ©   (2004-08-30 11:15) [50]

Александр1   (28.08.04 10:47) [47]
Странно конечно было бы, если  бы эти алгоритмы бы не работали.

Алгоритмов я тут не вижу.

> а пока стараюсь собирать различные мелкие алгоритмы, а
> потом из них составляю программы…

Если ты собираешь такие алгоритмы, то толку нету - это самые азы, которые надо понимать, а не копировать.


 
Erik1   (2004-08-30 11:39) [51]

А еще можно купить книжку, или книжка у тебя уже есть? :)


 
Александр1   (2004-08-31 05:41) [52]


> GrayFace ©   (30.08.04 11:15) [50]

Да это понятно, что данный алгоритм простой. Но есть и сложные. Например: перезагрузка windows, примеры работы различных не стандартных компанентов. Если каждый раз заново писать, точёкнутьсяч можно.


 
GrayFace ©   (2004-08-31 17:09) [53]

> перезагрузка windows

Опять же, это не алгоритм. Алгоритм - это последовательность абстрактных шагов. Перезагрузка - это один шаг в алгоритме. С вещами типа перезагрузки надо так делать: Help -> Windows SDK -> Предметный указатель -> ExitWindowsEx. Главное - помнить хотябы начало названия функции, остальное берется из справки.


 
Cosinus ©   (2004-08-31 17:48) [54]

>>Александр1
Вот и приходится во всём самому разбираться
Вот правильная фраза, которую вы видимо не правильно понимаете.



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

Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.035 c
4-1091705214
Aldor_
2004-08-05 15:26
2004.09.19
DeviceIoControl error


3-1093172765
Ted
2004-08-22 15:06
2004.09.19
Как исключить Null записи из SQL запроса?


1-1093961128
DiMMoN
2004-08-31 18:05
2004.09.19
Взаимодействие с Excel


14-1093935407
Nikolay M.
2004-08-31 10:56
2004.09.19
Гостиницы в Питере - 2


3-1093005881
Wolfram
2004-08-20 16:44
2004.09.19
Про кавычки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский