Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: как сохранить скрин ? Добавлено: 26.05.11 22:14  

Автор вопроса:  Coloss | ICQ: 479007356 
я следал скриншот, а вот сохранить его не могу, он сохраняется только под обычным именем типа 1.jpg а вот использовать datetime.now не удается, пишет не верный формат

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 27.05.11 05:05
В DateTime.Now есть символы, которые недопустимы в имени файла

Я такой код использую. На VB, надеюсь, не составит труда перевести.

  1.         private static string GetBackupTitle(DateTime dateTime)
  2.         {
  3.             return dateTime.ToString(@"yyyy'-'MM'-'dd HH'-'mm'-'ss", System.Globalization.CultureInfo.InvariantCulture);
  4.         }

Ответить

Номер ответа: 2
Автор ответа:
 Alex Bakanov



ICQ: 7215215 

Вопросов: 7
Ответов: 21
 Web-сайт: hstudio.ucoz.com
 Профиль | | #2
Добавлено: 27.05.11 12:22
ну вот а ты попробуй загнать всю дату в переменную , а потом эти разделители (кривые символы) замени. в вб был Split() который мог найти разделитель по заданному символу, в данном случае юзай что-то подобное у себя на C#,а потом эти разделители заменяй другими знаками ,добавляй .jpg и всё.

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 28.05.11 22:02
не нужно фигней заниматься, все делается одной строчкой

Ответить

Номер ответа: 4
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #4 Добавлено: 29.05.11 00:58
  1.     Private Sub ButtonSplit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSplit.Click
  2.         Label1.Text = currentName(DateTime.Now)
  3.     End Sub
  4.  
  5.     Public Function currentName(ByVal ddmmyyyy As Date) As String
  6.         Dim str() As String = Split(ddmmyyyy, ".")
  7.         Dim y() As String = Split(str(UBound(str)), " ")
  8.         Return y(0).ToString & str(1).ToString & str(0).ToString & ".jpg"
  9.     End Function

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 29.05.11 02:05
говнокод детектед

Ответить

Номер ответа: 6
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #6 Добавлено: 29.05.11 11:33
Уважаемый EROS!
Научите любителя, покажите сладокод, Please!!!

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 29.05.11 12:26
легко.
1. Изучите возможности функции Format по форматированию даты и времени
подробности тут:
http://msdn.microsoft.com/en-us/library/c6dw49cz(v=VS.100).aspx см.пример внизу страницы
2. Используйте подходящий для этого шаблон форматирования,либо составьте свой собственный если нет подходящего
Как именно это сделать вам показал Artyom в первом же ответе.
И ради бога, не надо изобретать велосипеды с использованием устаревших функций типа Split,UBound и прочей ереси

Ответить

Номер ответа: 8
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 29.05.11 12:33
И еще.. обратите внимание на строку в первом посте
System.Globalization.CultureInfo.InvariantCulture

Это говорит о том, что результат работы стандартных паттернов форматирования зависит от региональных настроек системы, поэтому правильнее будет указать параметр CultureInfo во избежании непредвиденных результатов

Ответить

Номер ответа: 9
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #9 Добавлено: 29.05.11 13:57
Спасибо! изучу и отчитаюсь!

Ответить

Номер ответа: 10
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #10 Добавлено: 29.05.11 20:04
может так?
  1. LbStrFormar.Text = (DateTime.Now).ToString("yyyyMMdd", Globalization.CultureInfo.InvariantCulture) & ".jpg"


или так:
  1. Dim myDTFI As DateTimeFormatInfo = New CultureInfo("ru-RU", False).DateTimeFormat
  2.         Dim myDate As DateTime = DateTime.Now
  3.  
  4.         LbStrFormar.Text = (myDate).ToString("yyyyMMdd", myDTFI) & ".jpg"

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 29.05.11 22:10
уже лучше, оба варианта более или менее приемлемы.. от себя добавлю: я не люблю знак конкатенации - &, предпочитаю использовать string.Format();
код получается более читабельным

Ответить

Номер ответа: 12
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #12 Добавлено: 30.05.11 02:01
  1. LbStrFormar.Text = String.Format("{0:yyyyMMdd}.jpg", DateTime.Now)

не понял, куда здесь CultureInfo.InvariantCultur вставить?

Ответить

Номер ответа: 13
Автор ответа:
 DimBi



Вопросов: 15
Ответов: 55
 Профиль | | #13 Добавлено: 30.05.11 02:39
видимо так:
  1. LbStrFormar.Text = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0:yyyyMMdd}.jpg", DateTime.Now)

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 30.05.11 14:21
Ну вот, все полуичлось.. теперь посомтри на свой ответ в посте №4 и ты поймешь всю его несуразность

Ответить

Номер ответа: 15
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #15 Добавлено: 30.05.11 18:36
  1.     Public Function currentName(ByVal ddmmyyyy As Date) As String

Неверная нотация. Во-первых, CurrentName. Во-вторых, никаких ddmmyyyy, должно быть осмысленное название, например currentDate.

  1.         Dim str() As String = Split(ddmmyyyy, ".")

На название пременной неправильная нотация.
В Split нужно передавать строку. Ты же передаешь дату. В VB-шний Split можно передать что угодно как Object, а это значит что будет выполняться боксинг и затем вызов ToString(). Какие настройки будут использоваться при вызове ToString() ты не можешь знать в этот момент, поэтому вместо 13.06.1995 вполне может быть 6/13/1995 или Monday 13 july 1995
Также вместо Split нужно использовать String.Split

  1. Dim y() As String = Split(str(UBound(str)), " ")

Неправильная нотация на название переменной
Вместо Split - String.Split
Вместо UBound - Array.GetUpperBound или Array.Length

  1.         Return y(0).ToString & str(1).ToString & str(0).ToString & ".jpg"

Вот тут зачем-то ToString делаются? У нас в массивах и так уже лежат строки.
Посчитай внимательнее индексы, что-то ты тут забыл, похоже дни потерял.

  1.     End Function


Кому нужно было говнокод показать?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам