<--> Соло© (2004-04-27 20:09 )0
Здравствуйте, Подскажите, пожалуйста, существует ли возможность создания таблиц в формате .RTF? Если да, то как это сделать? Я хотел бы отобразить таблицу в Ricedit, а затем сохранить весь файл.
<-->Курдл©.2004-04-27 20:25 )1
В этом есть своя хитрость. RTF работает с простыми метками, такими как ? строка ячейка строка. Он также имеет какой-то префикс, например, описание шрифта, charset и т.д. Я сделал это, но не могу найти — в интернете есть стандартные описания RTF — поищите их!
<-->evvcom©.2004-04-28 01:05 )2
Сделайте то, что нужно, в word и сохраните его в формате RTF.
<-->соло© (2004-04-28 10:05 )3
2 evvcom ? он мне не подходит, я должен делать все программирование. И кто-то попросил URL, где находится описание формата .RTF, чтобы не было разговоров о таблицах, поскольку речь идет о таблицах, и я их сделал.
<-->evvcom©.2004-04-28 10:07 )4
Черт! Вы должны произнести это по буквам? Сохраните его в Word, откройте и посмотрите, что из этого выйдет. Вы пишете о программировании по аналогии.
<--> Соло© (2004-04-28 13:59 )5
2 evvcom, я прошу прощения, возможно, я сделал хуже. То, что вы предложили, я сделал в первую очередь, я это видел, если я это понимаю, то можно голову сломать. А время толкает меня вперед, у меня есть диплом, и я надеюсь, что скоро объяснюсь.
<-->Курдл©.2004-04-28 14:09 )6
>Эй, я должен написать их все?
Я попытался выполнить поиск на Яндексе, используя фразу "Rich Text Format (RTF)". Я отклонил 3276 документов, что поначалу оказалось правильным решением. Является ли "http://blackman.wp-club.net/docum/rtf.php" сверхзадачей, которую я не могу выполнить сам? ?
<-->Юрик© (2004-04-28 15:14 )7
Программирование в Word и поиск примеров в MSDN.
<-->Курдл©.2004-04-28 15:15 )8
>Я буду программировать его в Word, и как он должен выглядеть?
<-->Юрик© (2004-04-28 15:21 )9
Зайдите в MSDN или выполните поиск в Интернете. Слова: delphi, word.application, createoleObject.
Ищите такие примеры, как.
<-->Curdle© (2004-04-28 15:23 )10
> word> wa:= программирование через createoleObject ("word.application"). По крайней мере, добавьте в категорию советы типа "Я должен попробовать" или "Я могу ошибаться, но и вы тоже". Особенно когда тебе на полном серьезе советуют удалить гланды из желудка!!! ?
<-->Юрик© (2004-04-28 15:34 )11
‘evvcom© (28.04.04 01:05) 2 Сделайте то, что вам нужно в Word и сохраните это как RTF’.
Все, что вы можете сделать вручную, вы можете сделать это. Но вы должны понимать, что существует множество объектов. Поэтому необходимо найти наиболее подходящий пример и работать от него.
Например (в CI): открыть файл doc и сохранить его в HTML bool doctohtml (char* fin, char* fout)
// Удобные значения, объявленные как колеварианты. colevariant covtrue ((short) true), covfalse ((short) false), covoptional ((long) disp_e_paramnotfound, vt_error)
// Get the IDispatch pointer and attach it to the objWord object. _Application objWord; if (!objWord.CreateDispatch("Word.Application")) return ERR_WORD_RUN; > Documents docs(objWord.GetDocuments()); _Document doc; doc.AttachDispatch(docs.Open( COleVariant(fIn,VT_BSTR), covFalse, // Confirm Conversion. covTrue, // ReadOnly. covFalse, // AddToRecentFiles. covOptional, // PasswordDocument. covOptional, // PasswordTemplate. covFalse, // Revert. covOptional, // WritePasswordDocument. covOptional, // WritePasswordTemplate. covOptional, // Format. // Last argument for Word 97 covOptional, // Encoding // New for Word 2000/2002 covTrue // Visible ) // Close Open parameters ); // Close AttachDispatch(Е) doc.SaveAs(COleVariant(fOut,VT_BSTR), COleVariant((short)8), covOptional, covOptional, covFalse, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); objWord.Quit(covFalse, covOptional, covOptional); return OK; >
<-->Курдл©.2004-04-28 16:37 )12
>Все, что можно сделать с помощью слов, вы тоже можете сделать.
Почему; если вам нужно вычислить 2*2 = 4, вы используете calculator.exe через ole? А если в вашем компьютере нет слов?
<-->Юрик© (2004-04-28 17:08 )13
Вам нужно создать таблицы и хранилище в RTF, а не 2*2 графы. Это более серьезно.
<-->Курдл©.2004-04-28 17:35 )14
> не требуется подсчет 2*2, но таблица создается и хранится в RTF. > это будет более серьезно.
У меня этот код занял 20 строк.
> > Yurik© (2004-04-28 17:49 )15
В этом случае принесите код. Вместо того чтобы спрашивать, почему.
<-->Курдл©.2004-04-28 17:53 )16
Некоторые ссылки на константы из других разделов — не моя вина!!! // ************************************************ **** ******************************// Функция для создания образа RTF файла в виде массива используется следующим образом// MS Word DataSource merge (MailMerge.DataSource)////Получите TStringList, в который записываются данные. Каждая строка (Strings i) // представляет собой единицу данных. Первая группа строк служит //главой таблицы. Количество столбцов в таблице задается аргументом colCount. // Общее количество строк в StringList должно быть кратно количеству столбцов. // Функция записывает RTF-текст в StringList и возвращает -True при успехе// ***************************** *** *********************************************** *******
Классы, Windows, Формы, SysUtils,.
function CreateRTF (StringList: TStringList; colCount: Integer): boolean,.
filePrefix = "" fcharset204Times New Roman CYR;> " f1 froman fcharset0 Times New Roman; >>"210 " viewkind4 uc1"210? rowPrefix = " trowd trgaph108 trleft-108",.
sArraySizeError = "Размер массива меньше количества столбцов"; sDivisionError = "Размер массива не делится на количество столбцов"; sError = "Ошибка,
function CreateRTF (StringList: TStringList; colCount: Integer): boolean; var x, y, i, ln: integers; s0, s, sResult: strings; begin ln: = StringList.Count; result: = False; try if ln.< colCount then Exception.Create(sArraySizeError); if (ln mod colCount) > 0, тогда Исключение. Create (sDivisionError); sResult: = filePrefix; for y: = 0 to (ln —1)div colCount do begin sResult: = sResult + rowPrefix; for x: = 0 to colCount-1 do sResult: = sResult + " cellx" + IntToStr (2108 + x * 2000) + ""; sResult: = sResult + " pard intbl f0 fs16"; for x: = 0 to colCount-1 do begin s0: = StringList y * colCount + x; s: = ""; for i: = 1 to Length (s0) do case s0 i of #13: s: = s + " линия"; "." "," ": s: = s + s0 i;#128..#255: s: = s + "" "+ IntToHex (Ord (s0 i), 2);" ",": s: = s + "" + s0 i; end; sResult: = sResult + " ячейка"; end; sResult: = sResult + " строка"210? конец? sResult: = sResult + " pard par>"; StringList.Text: = sResult; Result: = True; Except E: Исключения — Application.MessageBox (PChar (E.Message), PChar (sError), MB_. ICONSTOP);. Конец.
<-->evvcom©.2004-04-28 23:38 )17
Какой ты непутевый! Я упомянул Word только для того, чтобы увидеть результаты. Как Word создает таблицы в rtf. Прочитайте вопрос еще раз! Это не означает обращение к Word через OLE, рисование таблицы, затем сохранение всего в rtf и загрузка этого rtf в ReachEdit. Именно таким образом происходит "удаление железы через кишечник".
Снова используйте Word для определения тегов и их порядка, чтобы создать теги, перечисленные в ответе 1. Научитесь использовать готовые инструменты. Зачем изобретать колесо?
<-->Курдл©.2004-04-29 10:18 )18
>Повторяю, Word следует использовать только для определения тегов и порядка, в котором они генерируют теги, упомянутые в ответе 1. >Научитесь использовать готовые инструменты. >Какой смысл изобретать колесо? Согласен! Но это происходит, когда не хватает документации. А вот готовый технический паспорт в формате RTF! Что еще
<-->evvcom©.2004-04-29 11:47 )19
Во многих случаях реальные примеры лучше, чем документация. Действительно, в настоящее время в документации есть много примеров. SO. А автор вопроса хранил полное молчание — он это понял или ему это больше не нужно. И здесь мы не согласны.
