Advertisement
gguuppyy

форма31

Mar 6th, 2024 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.80 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. procedure EditAKeyPress(Sender: TObject; var Key: Char);
  53.  
  54. Private
  55. { Private declarations }
  56. Public
  57. { Public declarations }
  58. End;
  59.  
  60. Var
  61. MainForm: TMainForm;
  62.  
  63. Implementation
  64.  
  65. {$R *.dfm}
  66.  
  67. Uses
  68. Instruction,
  69. Information;
  70.  
  71. {Function CountVowels(Const Word: String; Vowel1, Vowel2: Char): Integer;
  72. Var
  73. CharIndex, Count: Integer;
  74. Begin
  75. Count := 0;
  76.  
  77. For CharIndex := 1 To Length(Word) Do
  78. Begin
  79. If (Word[CharIndex] = Vowel1) Or (Word[CharIndex] = Vowel2) Then
  80. Inc(Count);
  81. End;
  82.  
  83. Result := Count;
  84. End;}
  85.  
  86. function MinWordLen(const Text: string; var IndexBegin: Integer): string;
  87. var
  88. MinWord, Word: string;
  89. Index, I: Integer;
  90. CheckPr: Boolean;
  91. begin
  92. MinWord := Text;
  93. Word := '';
  94. Index := 1;
  95. for I := 1 to Length(Text) do
  96. begin
  97. CheckPr := False;
  98. if Text[I] = ' ' then
  99. begin
  100. CheckPr := True;
  101. Word := Copy(Text, Index, I - Index);
  102. end;
  103. if I = Length(Text) then
  104. begin
  105. Word := Copy(Text, Index, I - Index + 1);
  106. end;
  107. if (Length(MinWord) > Length(Word)) and (Length(Word) <> 0) then
  108. begin
  109. IndexBegin := Index;
  110. MinWord := Word;
  111. end;
  112. if CheckPr = True then
  113. begin
  114. Index := I + 1;
  115. end;
  116. end;
  117. Result := MinWord;
  118. end;
  119.  
  120.  
  121. procedure TMainForm.Button1Click(Sender: TObject);
  122. var
  123. ResultText, Text: String;
  124. MinWord: String;
  125. IndexBegin: Integer;
  126. begin
  127. Text := EditA.Text;
  128.  
  129. if Text <> '' then
  130. begin
  131. MinWord := MinWordLen(Text, IndexBegin);
  132. if MinWord <> '' then
  133. ResultText := 'В заданном предложении самое короткое слово: "' + MinWord + '", начиная с позиции: ' + IntToStr(IndexBegin)
  134. else
  135. ResultText := 'В предложении отсутствуют слова';
  136.  
  137. Memo1.Lines.Clear;
  138. Memo1.Lines.Add(ResultText);
  139. end
  140. else
  141. ShowMessage('Окно ввода пустое. Повторите попытку.');
  142. end;
  143.  
  144. procedure TMainForm.EditAKeyPress(Sender: TObject; var Key: Char);
  145. begin
  146. if (Key in ['0'..'9', ',', '.', '-', #13]) then
  147. begin
  148. Key := #0;
  149. ShowMessage('Недопустимый символ');
  150. end;
  151. end;
  152.  
  153. procedure TMainForm.EditAChange(Sender: TObject);
  154. begin
  155. if Length(EditA.Text) = 0 then
  156. Memo1.Lines.Clear;
  157. end;
  158. Procedure TMainForm.FormCloseQuery(Sender: TObject; Var CanClose: Boolean);
  159. Var
  160. Confirmation: Integer;
  161. Begin
  162. Confirmation := Application.MessageBox('Вы уверены, что хотите выйти?', 'Выход', MB_YESNO);
  163. CanClose := Confirmation = IDYES;
  164. End;
  165.  
  166. Procedure TMainForm.FormMouseEnter(Sender: TObject);
  167. Begin
  168. ClipBoard.Clear;
  169. End;
  170.  
  171. Procedure TMainForm.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  172. Begin
  173. If EditA.Text <> '' Then
  174. Button1.Enabled := True
  175. Else
  176. Button1.Enabled := False;
  177. End;
  178.  
  179. Procedure TMainForm.N1Click(Sender: TObject);
  180. Begin
  181. If Memo1.Lines.Count = 0 Then
  182. Begin
  183. N4.Enabled := False;
  184. End
  185. Else
  186. Begin
  187. N4.Enabled := True;
  188. End;
  189. End;
  190.  
  191. Procedure TMainForm.N2Click(Sender: TObject);
  192. Begin
  193. InstructionForm.ShowModal;
  194. End;
  195.  
  196. Procedure TMainForm.GetPath(Var Path: String);
  197. Begin
  198. If OpenDialog1.Execute Then
  199. Begin
  200. Path := OpenDialog1.FileName;
  201. End
  202. Else
  203. Begin
  204. ShowMessage('Открытие файла отменено.');
  205. Abort;
  206. End;
  207. End;
  208.  
  209. Procedure TMainForm.N3Click(Sender: TObject);
  210. Var
  211. IsCorrect, Fail: Boolean;
  212. Path, Errors, A, B, Str: String;
  213. Count: Integer;
  214. FileElem: TextFile;
  215. FileStream: TFileStream;
  216. Begin
  217. GetPath(Path);
  218.  
  219. AssignFile(FileElem, Path);
  220. Fail := False;
  221. IsCorrect := True;
  222. Count := 0;
  223. If Path = '' Then
  224. IsCorrect := False;
  225. If IsCorrect Then
  226. Try
  227. FileStream := TFileStream.Create(Path, FmOpenRead Or FmShareDenyNone);
  228. Try
  229. //Файл успешно открыт - добавьте код для работы с открытым файлом
  230. Reset(FileElem);
  231. ShowMessage('Файл успешно открыт.');
  232. Finally
  233. FileStream.Free;
  234. End;
  235. Except
  236. On E: EInOutError Do
  237. Begin
  238. If E.ErrorCode = 103 Then
  239. Begin
  240. IsCorrect := False;
  241. //Ошибка I/O с кодом 103 - файл занят или недоступен
  242. ShowMessage('Ошибка I/O (код 103): Файл занят или недоступен.' + #13#10 + 'Проверьте файл и повторите попытку.');
  243. End
  244. Else
  245. Begin
  246. IsCorrect := False;
  247. //Другая ошибка I/O - выводим сообщение об ошибке
  248. ShowMessage('Ошибка I/O: ' + E.Message);
  249. If E.Message = 'I/O error 32' Then
  250. ShowMessage('Файл используется в нескольких процессах' + #13#10 + 'Проверьте файл и повторите попытку.');
  251. End;
  252. End;
  253. On E: Exception Do
  254. Begin
  255. //Другие исключения - выводим сообщение об ошибке
  256. ShowMessage('Ошибка: ' + E.Message + #13#10 + 'Проверьте файл и повторите попытку.');
  257. IsCorrect := False;
  258. End;
  259. End;
  260. If IsCorrect = True Then
  261. Begin
  262. Try
  263. Try
  264. Reset(FileElem);
  265. Except
  266. CloseFile(FileElem);
  267. IsCorrect := False;
  268. ShowMessage('Ошибка открытия файла.');
  269. End;
  270. If IsCorrect Then
  271. Begin
  272. While Not Eof(FileElem) Do
  273. Begin
  274. ReadLn(FileElem, Str);
  275. Inc(Count);
  276. End;
  277. CloseFile(FileElem);
  278. If Count <> 1 Then
  279. Fail := True;
  280. End;
  281. If IsCorrect Then
  282. Begin
  283. Reset(FileElem);
  284. Try
  285. Readln(FileElem, A);
  286. Except
  287. Fail := True;
  288. End;
  289.  
  290. End;
  291. Finally
  292. CloseFile(FileElem);
  293. ShowMessage('Импорт завершен.');
  294. End;
  295. If Length(A) > 50 Then
  296. Fail := True;
  297. Errors := 'Некорректные данные файла! Проверьте данные и повторите попытку.';
  298. If Fail = True Then
  299. Begin
  300. ShowMessage(Errors);
  301. End;
  302. If Fail = False Then
  303. EditA.Text := A;
  304. End;
  305. End;
  306.  
  307. Procedure TMainForm.N4Click(Sender: TObject);
  308. Begin
  309.  
  310. If SaveDialog1.Execute Then
  311. Begin
  312.  
  313. Memo1.Lines.SaveToFile(SaveDialog1.FileName);
  314. ShowMessage('Сохранение завершено.');
  315. End
  316. Else
  317.  
  318. Begin
  319. ShowMessage('Сохранение в файл отменено.');
  320. End;
  321.  
  322. End;
  323.  
  324. Procedure TMainForm.N5Click(Sender: TObject);
  325. Begin
  326. InformationForm.ShowModal;
  327. End;
  328.  
  329. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement