Advertisement
gguuppyy

влад32

Mar 6th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.79 KB | None | 0 0
  1.  
  2. Unit Main;
  3.  
  4. Interface
  5.  
  6. Uses
  7. Winapi.Windows,
  8. Winapi.Messages,
  9. System.SysUtils,
  10. System.Variants,
  11. System.Classes,
  12. Vcl.Graphics,
  13. Clipbrd,
  14. Vcl.Controls,
  15. Vcl.Forms,
  16. Vcl.Dialogs,
  17. Vcl.StdCtrls,
  18. Vcl.Menus,
  19. Vcl.ExtCtrls,
  20. Vcl.Imaging.Pngimage,
  21. Vcl.Imaging.Jpeg;
  22.  
  23. Type
  24. TMainForm = Class(TForm)
  25. Button1: TButton;
  26. EditA: TEdit;
  27. Memo1: TMemo;
  28. MainMenu1: TMainMenu;
  29. N1: TMenuItem;
  30. N2: TMenuItem;
  31. N3: TMenuItem;
  32. N4: TMenuItem;
  33. N5: TMenuItem;
  34. Y1: TLabel;
  35. BalloonHint1: TBalloonHint;
  36. OpenDialog1: TOpenDialog;
  37. SaveDialog1: TSaveDialog;
  38. Label1: TLabel;
  39. Label2: TLabel;
  40. Procedure Button1Click(Sender: TObject);
  41.  
  42. Procedure N2Click(Sender: TObject);
  43. Procedure N5Click(Sender: TObject);
  44. Procedure N3Click(Sender: TObject);
  45. Procedure GetPath(Var Path: String);
  46. Procedure N4Click(Sender: TObject);
  47. Procedure N1Click(Sender: TObject);
  48. Procedure EditAChange(Sender: TObject);
  49. Procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  50. Procedure FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  51. Procedure FormMouseEnter(Sender: TObject);
  52.  
  53. Private
  54. { Private declarations }
  55. Public
  56. { Public declarations }
  57. End;
  58.  
  59. Var
  60. MainForm: TMainForm;
  61.  
  62. Implementation
  63.  
  64. {$R *.dfm}
  65.  
  66. Uses
  67. Instruction,
  68. Information;
  69.  
  70. Function CountVowels(Const Word: String; Vowel1, Vowel2: Char): Integer;
  71. Var
  72. CharIndex, Count: Integer;
  73. Begin
  74. Count := 0;
  75.  
  76. For CharIndex := 1 To Length(Word) Do
  77. Begin
  78. If (Word[CharIndex] = Vowel1) Or (Word[CharIndex] = Vowel2) Then
  79. Inc(Count);
  80. End;
  81.  
  82. Result := Count;
  83. End;
  84.  
  85. Procedure TMainForm.Button1Click(Sender: TObject);
  86. Var
  87. ResultText, Text: String;
  88. MaxVowelWord: String;
  89. MaxPercentage: Double;
  90. Word: String;
  91. CurrentPercentage: Double;
  92. Index: Integer;
  93. Begin
  94. Text := EditA.Text;
  95. MaxVowelWord := '';
  96. MaxPercentage := 0;
  97. Index := 1;
  98.  
  99. If Text <> '' Then
  100. Begin
  101. Text := Text + ' ';
  102. While Pos(' ', Text) > 0 Do
  103. Begin
  104. Word := Copy(Text, 1, Pos(' ', Text) - 1);
  105. Delete(Text, 1, Pos(' ', Text));
  106.  
  107. If Word <> '' Then
  108. Begin
  109. CurrentPercentage := CountVowels(Word, 'А', 'а') / Length(Word);
  110. If CurrentPercentage > MaxPercentage Then
  111. Begin
  112. MaxPercentage := CurrentPercentage;
  113. MaxVowelWord := Word;
  114. End
  115. Else
  116. If CurrentPercentage = MaxPercentage Then
  117. Begin
  118. If CountVowels(Word, 'А','а') > CountVowels(MaxVowelWord, 'А','а') Then
  119. MaxVowelWord := Word;
  120. End;
  121. End;
  122. End;
  123.  
  124. If MaxVowelWord <> '' Then
  125. ResultText := 'Слово с наибольшей долей гласных "А, а": ' + MaxVowelWord
  126. Else
  127. ResultText := 'В предложении отсутствуют слова, содержащие гласные "А, а"';
  128.  
  129. Memo1.Lines.Clear;
  130. Memo1.Lines.Add(ResultText);
  131. End
  132. Else
  133. Begin
  134. ShowMessage('Окно ввода пустое. Повторите попытку.');
  135. End;
  136. End;
  137.  
  138. Procedure TMainForm.EditAChange(Sender: TObject);
  139. Begin
  140. If Length(EditA.Text) = 0 Then
  141. Begin
  142. Memo1.Lines.Clear;
  143. End;
  144. End;
  145.  
  146. Procedure TMainForm.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  147. Var
  148. Confirmation: Integer;
  149. Begin
  150. Confirmation := Application.MessageBox('Вы уверены, что хотите выйти?', 'Выход', MB_YESNO);
  151. CanClose := Confirmation = IDYES;
  152. End;
  153.  
  154. Procedure TMainForm.FormMouseEnter(Sender: TObject);
  155. Begin
  156. ClipBoard.Clear;
  157. End;
  158.  
  159. Procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  160. Begin
  161. If EditA.Text <> '' Then
  162. Button1.Enabled := True
  163. Else
  164. Button1.Enabled := False;
  165. End;
  166.  
  167. Procedure TMainForm.N1Click(Sender: TObject);
  168. Begin
  169. If Memo1.Lines.Count = 0 Then
  170. Begin
  171. N4.Enabled := False;
  172. End
  173. Else
  174. Begin
  175. N4.Enabled := True;
  176. End;
  177. End;
  178.  
  179. Procedure TMainForm.N2Click(Sender: TObject);
  180. Begin
  181. InstructionForm.ShowModal;
  182. End;
  183.  
  184. Procedure TMainForm.GetPath(Var Path: String);
  185. Begin
  186. If OpenDialog1.Execute Then
  187. Begin
  188. Path := OpenDialog1.FileName;
  189. End
  190. Else
  191. Begin
  192. ShowMessage('Открытие файла отменено.');
  193. Abort;
  194. End;
  195. End;
  196.  
  197. Procedure TMainForm.N3Click(Sender: TObject);
  198. Var
  199. IsCorrect, Fail: Boolean;
  200. Path, Errors, A, B, Str: String;
  201. Count: Integer;
  202. FileElem: TextFile;
  203. FileStream: TFileStream;
  204. Begin
  205. GetPath(Path);
  206.  
  207. AssignFile(FileElem, Path);
  208. Fail := False;
  209. IsCorrect := True;
  210. Count := 0;
  211. If Path = '' Then
  212. IsCorrect := False;
  213. If IsCorrect Then
  214. Try
  215. FileStream := TFileStream.Create(Path, FmOpenRead Or FmShareDenyNone);
  216. Try
  217. //Файл успешно открыт - добавьте код для работы с открытым файлом
  218. Reset(FileElem);
  219. ShowMessage('Файл успешно открыт.');
  220. Finally
  221. FileStream.Free;
  222. End;
  223. Except
  224. On E: EInOutError Do
  225. Begin
  226. If E.ErrorCode = 103 Then
  227. Begin
  228. IsCorrect := False;
  229. //Ошибка I/O с кодом 103 - файл занят или недоступен
  230. ShowMessage('Ошибка I/O (код 103): Файл занят или недоступен.' + #13#10 + 'Проверьте файл и повторите попытку.');
  231. End
  232. Else
  233. Begin
  234. IsCorrect := False;
  235. //Другая ошибка I/O - выводим сообщение об ошибке
  236. ShowMessage('Ошибка I/O: ' + E.Message);
  237. If E.Message = 'I/O error 32' Then
  238. ShowMessage('Файл используется в нескольких процессах' + #13#10 + 'Проверьте файл и повторите попытку.');
  239. End;
  240. End;
  241. On E: Exception Do
  242. Begin
  243. //Другие исключения - выводим сообщение об ошибке
  244. ShowMessage('Ошибка: ' + E.Message + #13#10 + 'Проверьте файл и повторите попытку.');
  245. IsCorrect := False;
  246. End;
  247. End;
  248. If IsCorrect = True Then
  249. Begin
  250. Try
  251. Try
  252. Reset(FileElem);
  253. Except
  254. CloseFile(FileElem);
  255. IsCorrect := False;
  256. ShowMessage('Ошибка открытия файла.');
  257. End;
  258. If IsCorrect Then
  259. Begin
  260. While Not Eof(FileElem) Do
  261. Begin
  262. ReadLn(FileElem, Str);
  263. Inc(Count);
  264. End;
  265. CloseFile(FileElem);
  266. If Count <> 1 Then
  267. Fail := True;
  268. End;
  269. If IsCorrect Then
  270. Begin
  271. Reset(FileElem);
  272. Try
  273. Readln(FileElem, A);
  274. Except
  275. Fail := True;
  276. End;
  277.  
  278. End;
  279. Finally
  280. CloseFile(FileElem);
  281. ShowMessage('Импорт завершен.');
  282. End;
  283. If Length(A) > 30 Then
  284. Fail := True;
  285. Errors := 'Некорректные данные файла! Проверьте данные и повторите попытку.';
  286. If Fail = True Then
  287. Begin
  288. ShowMessage(Errors);
  289. End;
  290. If Fail = False Then
  291. EditA.Text := A;
  292. End;
  293. End;
  294.  
  295. Procedure TMainForm.N4Click(Sender: TObject);
  296. Begin
  297.  
  298. If SaveDialog1.Execute Then
  299. Begin
  300.  
  301. Memo1.Lines.SaveToFile(SaveDialog1.FileName);
  302. ShowMessage('Сохранение завершено.');
  303. End
  304. Else
  305.  
  306. Begin
  307. ShowMessage('Сохранение в файл отменено.');
  308. End;
  309.  
  310. End;
  311.  
  312. Procedure TMainForm.N5Click(Sender: TObject);
  313. Begin
  314. InformationForm.ShowModal;
  315. End;
  316.  
  317. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement