Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Помогите сделать программу для создания файлов


Автор: GLATSIOUS 7.11.2007, 15:27
Короче смысл такой: у меня есть форма с текстбоксом и кнопкой.Мне нужно сделать так чтобы когда я нажимал на кнопку у меня текст из текстбокса загружался в html файл причём так,чтобы у меня в этом файле уже были строки которые я уже заранее написал:

_____________________
_____________________ вот текст который я написал заранее

_____________________ а это текст из текстбокса

И что самое интересное у пользователя должен быть только эта самая программа и ничего кроме.

Автор: Akina 7.11.2007, 15:38
Цитата(GLATSIOUS @  7.11.2007,  16:27 Найти цитируемый пост)
Мне нужно сделать 

Ну так делай. А как будут затыки с конкретным участком кода - милости просим с вопросами.

Автор: cardinal 7.11.2007, 17:18
GLATSIOUS, я вообще не понимаю, тебе надо записать текст в файл? Так на форуме все написано (поиск по словам Open, Print, Put...).

Автор: iff 7.11.2007, 18:06
Наверно можно так:
Код

Private Sub [Имя_кнопки]_Click()
Open "[Имя_файла].html" for Append as #1
Print #1,"<br> " + [Имя_текстбокса].Text
Close #1
End Sub

По умолчанию имя кнопки будет: Command1, а текстбокса: Text1

<br> - это код HTML, который переносит текст на следующую строку. А если у тебя в текстбоксе будет печататься текст, в котором более 1-ой строчки, то тоже можно программно переделать все невидемые символы переноса на следующею строку на html-ный тег <br>. 

Режим Append сохранит всё то, что было в файле раньше, и просто допишет текст.

Автор: GLATSIOUS 7.11.2007, 18:13
iff,спасибо огромное.Сейчас попробую сделать.
Но вот можно ли сделать так,чтоб появлялось окно(при нажатии на кнопку) в котором можно было бы указать куда создавать этот самый html файл и соответственно задать имя html файла.Просто если пользовательбудет сначала создавать html файл,а потом указывать его в проге,то от проги не будет толка.Дешевле в блокноте написать.
P.S. html я знаю.

Автор: Akina 7.11.2007, 18:30
Цитата(GLATSIOUS @  7.11.2007,  19:13 Найти цитируемый пост)
можно ли сделать так,чтоб появлялось окно(при нажатии на кнопку) в котором можно было бы указать куда создавать этот самый html файл и соответственно задать имя html файла.

На форму надо поместить (неотображаемый) контрол Common Dialog Control и вызывать его метод .ShowSave

Автор: iff 7.11.2007, 19:07
http://vbzero.narod.ru/chapter1/page_6.htm
А чтоб отобразить форму пользуйся
Код

[Имя_формы].Show

А то ведь вторая и последующие формы сами не выскакивают.

Автор: GLATSIOUS 7.11.2007, 19:35
Всё,всем спасибо.Пошёл писать...

Автор: iff 7.11.2007, 20:15
http://forum.vingrad.ru/topic-92479.html говорят, что что открывать файл в режиме Append не рекомендуется.  smile 

Автор: GLATSIOUS 7.11.2007, 20:30
Вот и следующий вопрос возник:
Кокретно - в тегах html присутствуют кавычки.Это мешает написанию программы.Можно ли выделять для программы ключевые фразы другими символами?Если да,то какими?
P.S. прога почти написана.

Автор: cardinal 7.11.2007, 20:54
Пример назови, а то не очень понятно что нужно...

Автор: GLATSIOUS 7.11.2007, 21:21
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Можете не спорить что он не нужен.В моём случае нужен даже очень.
Нужно найти замену либо в html (не желательно), либо в программном коде vb6.

Автор: iff 7.11.2007, 21:40
Попробуй кавычки вводить при помощи ASCII-кода символа (У меня дома на компьютерном столе прилипнута таблица ASCII-кодов). Ну так вот у ковычек этот код- 34.

Теперь вместо <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> пиши так:
Код

Print #1, "<meta http-equiv=" + Chr(34) + "Content-Type" + Chr(34) + " content=" + Chr(34) + "text/html; charset=windows-1251" + Chr(34) + ">"

Функция Chr(x) выводит символ, имеющий ASCII-код равный x.

Автор: GLATSIOUS 7.11.2007, 22:02
Спасибо

Автор: cardinal 7.11.2007, 22:38
GLATSIOUS, в следующий раз так и пиши, что проблемы с ковычками в строке, а это отвечается одной строкой
Код

Chr(34)

Как уже и написали...

Автор: Akina 7.11.2007, 23:08
Цитата(iff @  7.11.2007,  21:15 Найти цитируемый пост)
говорят, что что открывать файл в режиме Append не рекомендуется

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

Автор: GLATSIOUS 7.11.2007, 23:18
Народ,у меня последний вопрос:
как сделать так чтоб при начале работы проги ,она по умолчанию раскрывалась на весь экран?

Автор: cardinal 7.11.2007, 23:31
Модератор: Пожалуйста, один топик - один вопрос.

Автор: GLATSIOUS 7.11.2007, 23:39
не люблю создавать много тем.Вопрос такого уровня что при желании можно и самому найти ответ.Проблема в том что на это нет ни сил не времени.

Автор: Akina 7.11.2007, 23:49
Цитата(GLATSIOUS @  8.11.2007,  00:18 Найти цитируемый пост)
как сделать так чтоб при начале работы проги ,она по умолчанию раскрывалась на весь экран? 

Не программы, а формы.

Код

Private Sub Form_Load()
Me.WindowState = vbMaximized
End Sub

Автор: GLATSIOUS 7.11.2007, 23:59
то что доктор прописал.Спасибо

Автор: cardinal 8.11.2007, 02:52
Цитата(GLATSIOUS @  7.11.2007,  22:39 Найти цитируемый пост)
не люблю создавать много тем.

Но таковы правила и это облегчит другим с таким вопросом найти на него ответ! Так что какой бы не был пустяковый вопрос - отдельная тема!

Автор: kapbepucm 8.11.2007, 11:00
Вместо & Chr(34) & проще использовать пару ""

Автор: Akina 8.11.2007, 11:03
Цитата(kapbepucm @  8.11.2007,  12:00 Найти цитируемый пост)
Вместо & Chr(34) & проще использовать пару "" 

Можно. Но не проще. Считать кавычки - занятие муторное, и ошибиться - раз плюнуть.

Автор: kapbepucm 8.11.2007, 11:12
Akina, в чём ошибится- вместо двух, три вставить что ли? В любом случае, символ " придётся на что либо менять, вопрос на что. Поясните.  smile 

Автор: Akina 8.11.2007, 12:15
Цитата(kapbepucm @  8.11.2007,  12:12 Найти цитируемый пост)
в чём ошибится- вместо двух, три вставить что ли?

Запросто, особенно на краях литералов. Плюс - читабельность кода страдает. Я предпочитаю объявить и использовать соотв. константу:

Код

Public Const vbDoubleQuote = Chr(34)


Просто в таком коде разбираться намного проще.

Автор: GLATSIOUS 8.11.2007, 16:34
То что ты мне говорил по поводу "+ Chr(34) +" самое то!Программу написал.Всем спасибо.

Автор: iff 8.11.2007, 16:45
GLATSIOUS, а для чего твоя прога, и что она делает?

Автор: iff 8.11.2007, 17:01
GLATSIOUS, навирно с режимом Append, я просчитался, вероятно ты имел введу под словом 
Цитата

вот текст который я написал заранее
 не то что было в файле (как я подумал), а то что в твоей проге будет вбит этот текст и она будет его записывать в файл перед текстом из текстбокса. Тогда нужно пользоваться режимом Output.

Автор: iff 8.11.2007, 18:20
Цитата(Akina @ 7.11.2007,  23:49)
Код

Private Sub Form_Load()
Me.WindowState = vbMaximized
End Sub

Akina, зачем писать Me.WindowState = vbMaximized, когда можно WindowState = 2, без Me. и вместо vbMaximized просто 2.

Автор: Akina 8.11.2007, 18:31
Цитата(iff @  8.11.2007,  19:20 Найти цитируемый пост)
зачем писать Me.WindowState = vbMaximized, когда можно WindowState = 2, без Me. и вместо vbMaximized просто 2. 

Есть правильный стиль программирования, и есть "сопли". Если программист просто напишет WindowState = 2 - скорее всего его очень скоро вышвырнут за дверь.

Автор: iff 8.11.2007, 19:15
Akina, а различия в действии (быстродействии) между WindowState = 2 и Me.WindowState = vbMaximized есть?
P.S. а меня никто не вышвернет за дверь. Программирование это ш моё так сказать моё хобби.

Автор: cardinal 8.11.2007, 20:23
А ты в цикле запусти одно и другой 100000 раз и засеки время... smile  smile 

Автор: iff 9.11.2007, 22:01
Не получается засечь время таймером. В общем сделал 2 формы - одна спанелью управления, другая дудет, то сварачиваться, то обратн во весь экран разворачиваться. На первой форме установил кнопку, лейбу и невидимый значёк таймера. В свойствах таймера поставил интервал равный 1 (чтоб точнее было), а в Enabled поставил False чтоб сразу не начал засекать время), а в свойствах лейбы Caption написал 0. Набрал такой код:
Код

Private Sub Command1_Click()
Form2.Show
Timer1.Enabled = True
For i = 1 To 10
Form2.WindowState = 1
Form2.WindowState = 2
Next i
Timer1.Enabled = False
Form2.WindowState = 0
End Sub


Private Sub Timer1_Timer()
Label1.Caption = Label1.Caption + 1
End Sub

А вот Caption лейбы, отаётся 0.

Автор: Akina 9.11.2007, 22:20
iff, сорри, но приведенный код свидетельствует о ПОЛНОМ непонимании того что тут написано. И вообще о непонимании принципов работы объектов, в частности работы объекта Таймер.

В личке я тебе уже говорил как понять что 
Цитата(iff @  8.11.2007,  20:15 Найти цитируемый пост)
WindowState = 2 и Me.WindowState = vbMaximized
есть АБСОЛЮТНО одно и то же.

Автор: GLATSIOUS 11.11.2007, 15:39
Цитата(iff @  8.11.2007,  17:01 Найти цитируемый пост)
GLATSIOUS, навирно с режимом Append, я просчитался, вероятно ты имел введу под словом Цитатавот текст который я написал заранее не то что было в файле (как я подумал), а то что в твоей проге будет вбит этот текст и она будет его записывать в файл перед текстом из текстбокса. Тогда нужно пользоваться режимом Output.

ты меня славу богу понял.Но то что ты написал тоже хорошо работает.А прогу я писал для того чтобы можно было легко форматировать статьи для движка сайта на ява скрипт.На днях этот сайт с движком прикрыли,но смысл в том чтоб все менюшки лого и проч. выстраивались только из-за того что в хедере указать пару строк: 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title></title>
<link rel="stylesheet" type="text/css" href="/files/style.css"><script type="text/javascript" src="/files/DriveScript.js"></script>

Вот я и написал прогу для форматирования.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)