Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245

PascalABC.net, удаление System.IO.Directory.Delete

11.01.2023, 18:47. Показов 748. Ответов 16

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Делал программу, и мини-программу для её удаления.
В итоге при проверке случайно забыл изменить путь к файлам, и удалил саму программу с помощью System.IO.Directory.Delete...
Осталась лишь кучка .exe файлов...
Никакие программы даже не находят то, что смог удалить паскаль, видимо процедура и правда работает...
Вопрос избитый, но задам - хоть как-то можно вернуть в код?
1k строчек кода заново писать - сами понимаете...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2023, 18:47
Ответы с готовыми решениями:

Аналог Python-функции OS.System(cmd) на PascalABC.NET
Подскажите как реализовать на PascalABC.NET аналог функции на Python? import os os.system(""); Что для этого использовать? Мне...

PascalABC.net модуль FormsABC удаление / изменение текста кнопки
Проблема в следующем: нужно создать нечто на подобии "Своей игры". То есть когда у вас есть несколько тем и несколько вопросов разной...

Переделать код PascalABC -> PascalABC.NET
Вот код на PascalABC: Uses Utils; var i: integer; mb, b: integer; begin ClrScr; i := 3;

16
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 19:41
Лучший ответ Сообщение было отмечено Daniilbata как решение

Решение

Эта процедура удаляет только описание файлов в заголовке диска.

Если после удаления винда не записала вам на диск, где были эти файлы, какой то новый файл - старые данные ещё должно быть можно достать программами, которые обращаются к диску напрямую, обходя файловую систему. Но если вы много пользовались компом после этого - вряд ли там всё цело.

Следующий вариант: использовать dotpeek или ilspy чтобы построить теоретически-рабочий (а на самом деле не рабочий) код на C#, который делал бы то же что эти ваши .exe файлы.
То есть переписать с 0 придётся, но хоть будет куда подглядывать - код на C# будет очень похожим на то, что вы делали в паскале.

---
Что касается на будущее:

1. Используйте отдельное пространство (ещё 1 папку, в некоторых случаях может даже полноценный сендбокс) когда тестируете такое.
Возможно можно было бы придумать что-то с System.Environment.CurrentDirectory в данном случае, чтобы на время дебага всё оградить

2. Используйте системы контроля версий, вроде git, чтобы можно было посмотреть что именно изменилось и если что - откатить.
И регулярно синхронизируйтесь с облаком, вроде github-а. Там можно и приватный репозиторий сделать, но обычно нет смысла особо прятать дерево в лесу, пока вы не собираетесь за деньги свой код продавать.
А когда собираетесь - надо будет ещё отдельно позаботиться чтобы тот же dotpeek было не так просто использовать на ваших бинарниках.

3. "1k строчек кода заново писать" - это мелочь, на самом деле. Вам этот код наверное кажется большим, потому что вы вложили кучу сил в получение новых знаний, нужных чтобы его написать. Но в отличии от кода - эти знания как раз не удалились.
Я сам когда начинал программировать - нашёл что рефакторить или даже переписывать с 0 куски кода что писал когда знал меньше - очень полезно, чтобы усвоить знания и более явно посмотреть: что я новое узнал и правильны ли эти знания.
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 20:18  [ТС]
Sun,
1-й вариант: Пользовался пк часа 3, но не активно после такого "провала". Зато, попытался откатить винду на 2 часа назад что конечно-же не помогло (надеялся что винда хоть удалённый файл посчитает важным пользовательским). Потом где-то 3 программы для восстановления использовал, они ничего не нашли.
Однако, скажите название подобных программ, быть может помогут.
2-й вариант: К огромному сожалению я не знаком с C, в школе познакомился с Питоном, сейчас Паскаль.
1) Да я всегда стараюсь использовать, кроме того - не бывало такого чтобы я мог удалить файл "совсем", в обход корзины. Первый раз делал, и накосячил с лучшим "изделием".
2) Я обычно отсылаю версии знакомому, с которым мы работаем, тем самым сохраняя их в архивах соц.сети, + раньше OneDrive использовал, если хотел иногда на телефоне дописать что-либо. В этот раз знакомому зачем-то одни .exe кидал, ни одного кода(
3) Полностью с вами согласен, собственно, за создание проекта я освоил ABCobjects. Но всё-равно, учитывая какие там часто были, как выражается мой знакомый, "формулы" из round(window.Width/2.75), написанных по 4-6 для одного только объекта, и т.п., чтобы привязать размеры и расположение объектов к размерам экрана - писать это заново будет душновато)
Да и, в целом .exe завершён на 97%, а т.к. на всеобщее обозрение я его выставлять не буду, то и его достаточно.)
Вас же в очередной раз благодарю за быструю помощь, прямо-таки мониторите мои темы)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 21:00
Цитата Сообщение от Daniilbata Посмотреть сообщение
Однако, скажите название подобных программ, быть может помогут
Я сам всегда был слишком осторожен, поэтому только знаю общий принцип работы этих программа - не конкретные примеры.

Цитата Сообщение от Daniilbata Посмотреть сообщение
не бывало такого чтобы я мог удалить файл "совсем", в обход корзины
А, точно, вот думал что что-то забываю... Ещё можно так:
Pascal
1
2
3
4
## {$reference 'Microsoft.VisualBasic.dll'}
uses Microsoft.VisualBasic.FileIO;
 
FileSystem.DeleteFile('1.exe', UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin, UICancelOption.ThrowException);
Цитата Сообщение от Daniilbata Посмотреть сообщение
тем самым сохраняя их в архивах соц.сети
Архивация и контроль версий это не одно и тоже. git хранит только изменения между коммитами, а не состояние файлов в момент каждого коммита.
Сложно словами передать сколько это на самом деле меняет. Но те кто системы версий попробовали - без них ничего уже не делают)) Я уже даже вне программирования кучу применений нашёл.

Цитата Сообщение от Daniilbata Посмотреть сообщение
прямо-таки мониторите мои темы
Я мониторю раздел форума: https://www.cyberforum.ru/pascalabc-net/
Там показывает всё что я ещё не читал. А вам отвечаю чаще только потому, что ваши темы это не шаблонные задачки.

Добавлено через 5 минут
Цитата Сообщение от Daniilbata Посмотреть сообщение
написанных по 4-6 для одного только объекта, и т.п.
Если при программировании вам приходится писать кучу шаблонных вещей - вы неправильно программируете. Делайте так, чтобы вещи друг из друга логично вытекали. А что остаётся магическим числом - запихните где то в константы.

И рекомендую дальше попробовать WPF или WinForms. ABCObjects это, всё же, не модуль для написания оконных систем.
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 21:01  [ТС]
1) Понял поищу сам
2) Да способов удаления много, а вот восстановления - единицы)
3) Как-нибудь задумаюсь, но пока моя программа это код, который ни к чему кроме как паре фото/медиа - не привязывается. Потому, проще отредактировать код, а старый удалить
4) Раздел видел, тоже там иногда смотрю, вдруг что-то интересное найду; Спасибо)
5) Нет, это не шаблоны, вы не так поняли)) это строки вида: A.MoveTo(round(window.Width/5)-razmer*x1,-massif,...);, и т.д. Из-за того что везде надо привязываться к экрану, они и выглядят одинаковыми) А в константы их забить нельзя, даже если я и почти лишаю пользователя возможности изменения размера экрана (убираю борты)
5.1) А с модулем WPF хочу познакомиться, часто вижу что его считают более практичным.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 21:05
Цитата Сообщение от Daniilbata Посмотреть сообщение
я не знаком с C
C# ближе к Java чем к C/C++. Ну и C# это .Net язык, так же как данный паскаль, но более чистый (без паскалевских надстроек).
Организация классов может быть не знакома, но тела подпрограмм после декомпиляции будут выглядеть очень похоже на ваш изначальный код.

Добавлено через 1 минуту
Цитата Сообщение от Daniilbata Посмотреть сообщение
Да способов удаления много, а вот восстановления - единицы
Нет, по моему вы не поняли. Это код для удаления в корзину. А оттуда пользователь всегда может восстановить.
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 21:08  [ТС]
Цитата Сообщение от Sun Serega Посмотреть сообщение
Нет, по моему вы не поняли. Это код для удаления в корзину. А оттуда пользователь всегда может восстановить.
А, понял, тогда будет полезен, как минимум для тестирования)
Спасибо!
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 21:13
Цитата Сообщение от Daniilbata Посмотреть сообщение
с модулем WPF
Модуль это .pas файл, который начинается с unit и подключается с uses.
А WPF это набор библиотек (.dll), которые подключаются директивой $reference.

В этих библиотеках ещё есть пространства имён, как System, которые тоже можно подключать с uses.
Но это тоже не модули - в их случае uses только позволяет писать, к примеру, TimeSpan вместо System.TimeSpan, но в .exe ничего нового не добавляется.

Добавлено через 3 минуты
Вот пример простенькой программы с WPF:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{$apptype windows}
 
{$reference PresentationFramework.dll}
{$reference PresentationCore.dll}
{$reference WindowsBase.dll}
 
uses System.Windows;
uses System.Windows.Controls;
 
begin
  var w := new Window; // System.Windows.Window
  
  var b := new Button;
  w.Content := b;
  b.Content := 'Тык сюды';
  b.Click += (o,e)->
  begin
    MessageBox.Show('Обработка тыка');
  end;
  
  var exit_code := Application.Create.Run(w);
  Halt(exit_code);
end.
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 21:18  [ТС]
Вы уж простите, но для меня в новинку даже тот факт, что в {} не комментарии (первый курс колледжа)
Потому, задам вопрос: Данный модуль есть в справке хоть в каком-то виде, или можно-ли его найти на просторах интернета? Не хотелось бы чтобы он был таким-же как Graph3D.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 21:22
{} это комментарий, {$} это директива. Посмотрите в справке на страницу директивы компилятора.

Цитата Сообщение от Daniilbata Посмотреть сообщение
Не хотелось бы чтобы он был таким-же как Graph3D.
У Graph3D есть примеры в G:\PABCWork.NET\Samples - там большая часть кода сама себя объясняет.
А WPF это часть среды .Net для ОС Windows - поэтому справка, соответственно, на сайте майков:
https://learn.microsoft.com/en... work-4.8.1
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 23:00  [ТС]
Насчёт первого догадался, но спасибо за место)
Насчёт второго - модуль то неплохой, но нет казалось бы очевидной функции столкновений, а без неё - слишком много мороки)
Потому хоть примеры (а точнее презентации с оф сайта) и помогли - но всё-же 2д остался в приоритете.
Хотя, в 2д нет анимаций, и перемещения дёрганые)
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
11.01.2023, 23:14
Столкновения это часть физического движка - а это не меньше кода чем весь Graph3D, если нормально реализовывать.
В то же время если вам достаточно хитбоксы (то есть описывающие 3D прямоугольники) - это и вручную реализовать не сложно.
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
11.01.2023, 23:36  [ТС]
Честно говоря, не припомню чтоб видел функцию определения подобного у объектов. Пройдусь ещё раз по справке, потому как если найду - будет весьма просто реализовать, согласен. Но, повторюсь, я не видел такого в справке, возможно поэтому чего-то не знаю(
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
12.01.2023, 00:36
Готового вроде нет, но опять же, всё можно сделать ручками:
Pascal
1
2
3
4
5
6
7
8
9
10
11
function Object3DSize(self: Object3D): Vector3D; extensionmethod;
begin
  match self with
    
    CubeT(var cube): Result := V3D(cube.SideLength, cube.SideLength, cube.SideLength);
    
    SphereT(var sphere): Result := V3D(sphere.Radius*2, sphere.Radius*2, sphere.Radius*2);
    
    else raise new System.NotImplementedException;
  end;
end;
0
19 / 14 / 4
Регистрация: 11.09.2021
Сообщений: 245
12.01.2023, 00:38  [ТС]
Интересно, но пока много непонятного, завтра на ПК открою, посмотрю что паскаль подскажет)
Спасибо!!!
0
 Аватар для XzzzX
405 / 280 / 120
Регистрация: 09.07.2021
Сообщений: 1,016
Записей в блоге: 1
12.01.2023, 07:54
Цитата Сообщение от Sun Serega Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
function Object3DSize(self: Object3D): Vector3D; extensionmethod;
begin
  match self with
    CubeT(var cube): Result := V3D(cube.SideLength, cube.SideLength, cube.SideLength);
    SphereT(var sphere): Result := V3D(sphere.Radius*2, sphere.Radius*2, sphere.Radius*2);
    else raise new System.NotImplementedException;
  end;
end;
зафиксировано первое применение pattern matching после его релиза. и по нему раздела в справе нет даже, как я понимаю
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
12.01.2023, 09:32
Не знаю, я его всё это время использовал. Я думаю дело в том, что мелкие программы, которых тут большинство, не достаточно сложные чтобы match или is-var были нужны.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.01.2023, 09:32
Помогаю со студенческими работами здесь

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в PascalABC у меня не работали в .net

Переделать программу из PascalABC в PascalABC.NET
program pr1 uses crt; const n=10; var i,k1,k2,c:integer; a,b:array of integer; BEGIN k1:=0; k2:=0; for i:=1 to n do begin ...

Установится ли PascalABC.NET на систему, где установлен только .NET 4.6.1?
Привет всем. Вопрос, собственно, озвучен выше. Конкретнее: есть компьютер со свежеустановленной Win10 x64, на которой присутствует...

PascalABC.NET и Excel
Программа должна искать в тексте из файла .xlsx значение,которое перед этим ввел пользователь. assign(f,'D:\Дані.xlsx'); reset(f);...

Перевести С на PascalABC.NET
Ребят Я пытался ... (честно !) Но есть много ошибок . В основном у меня проблемы с функциями, не могу перевести. Такие как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru