Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 6
1

Открытие файла через OpenFileDIalog и записать имя файла в переменную

30.03.2015, 23:01. Просмотров 3019. Ответов 9
Метки нет (Все метки)

Можно ли в формах Pascal ABC Net, открыв файл через openfiledialog, записать в строковую переменную полное имя файла?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2015, 23:01
Ответы с готовыми решениями:

Записать в переменную заданный элемент файла
Составить программу ,которая в переменной n будет получать 5-й элемент вещественного файла Fx.

Открытие файла через программу
Здравствуйте! Можно ли запустить файл через программу (программно). Например есть файл File.124...

В результирующий файл Outlet.out записать имя файла без указания пути к нему
помогите пожалуйста !!! Дан текстовый файл Inlet.in , содержащий строко-вые величины S , значения...

Как из текстового файла, используя openfiledialog, записать текст в переменную
Как из текстового файла, используя openfiledialog, добавить текст в код программы?

9
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30765 / 20096 / 7852
Регистрация: 22.10.2011
Сообщений: 34,914
Записей в блоге: 6
30.03.2015, 23:20 2
Можно.
Pascal
1
var s : string := OpenFileDialog1.FileName;
1
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 6
31.03.2015, 16:02  [ТС] 3
Спасибо, это я понял. Но возник еще вопрос. А именно, как считать данные с файла, если используешь openfilediolog.
Приведу пример:
Стоит задача считать матрицу неизвестного размера с файла. Если писать программу под командную строку,
то это будет выглядеть так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
type vector=array of array of real;
 var i,n,n1,n2,j:integer;
     t:vector;
     file1:text;
     string1:string;
begin
//в string1 заппрашивается у пользователя путь к файлу
assign(file1,string1);
 reset(file1);
 i := -1;
  while not Eof(file1) do begin
    Inc(i);
    SetLength(t, i + 1);
    j:= -1;
    while not Eoln(file1) do begin
      Inc(j);
      SetLength(t[i], j + 1);
      Read(file1, t[i, j]);
    end;
    ReadLn(file1);
  end;
  CloseFile(file1);
end.
Но как такую же операцию описать при использовании форм и openfiledialog?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30765 / 20096 / 7852
Регистрация: 22.10.2011
Сообщений: 34,914
Записей в блоге: 6
31.03.2015, 17:43 4
Да это все делается в разы проще:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{$apptype windows}
{$reference System.Windows.Forms.dll}
{$reference System.Core.dll}
 
uses System.Text, System, System.Windows.Forms, System.Net,
  System.IO, System.Linq; // добавляем вот эти 2 модуля
 
// ...
 
type 
  vector = array of real;
  matrix = array of vector;  
var 
  t : matrix;
 
function GetLine(L : string) : vector;
begin
  result := &Array.ConvertAll(L.Split('  '.ToCharArray()), StrToFloat);
end;
 
procedure MyButtonClick (sender: Object; e: EventArgs);
begin
  var OpenFileDialog1 : OpenFileDialog := new OpenFileDialog();
  if OpenFileDialog1.ShowDialog = DialogResult.OK then
  begin
    t := &File.ReadAllLines(OpenFileDialog1.FileName).Select(GetLine).ToArray();
  end;
end;
(это чистый WinForms, у меня нет .NET 4, чтобы проверить с редактором форм, но наверняка код практически не изменится, только описание обработчика нажатия на кнопку... Сам алгоритм останется тот же)
1
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 6
31.03.2015, 19:40  [ТС] 5
ругается.

Открытие файла через OpenFileDIalog и записать имя файла в переменную


И как после прочтения файла узнать размерность матрицы?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30765 / 20096 / 7852
Регистрация: 22.10.2011
Сообщений: 34,914
Записей в блоге: 6
31.03.2015, 23:57 6
Какое же это статическое поле? Это обычный enum (полностью - System.Windows.Forms.DialogResult, в нем - элемент OK), они там что вообще, белены объелись? Не знаю, как там реализовано с дизайнером форм, надо ждать кого-нибудь, у кого установлен .NET 4 и он может проверить, что происходит, и что за отсебятину навертели эти разработчики.
Цитата Сообщение от Flame444 Посмотреть сообщение
И как после прочтения файла узнать размерность матрицы?
Как обычно:
Pascal
1
2
    var rows : integer := t.Length; // число строк
    var cols : integer := t[0].Length; // число столбцов
0
Эксперт Pascal/Delphi
2357 / 1277 / 1483
Регистрация: 29.08.2014
Сообщений: 4,600
01.04.2015, 08:35 7
в формах примерно так (не уверен, что правильно). У OpenFileDialog1 есть событие FileOk, оно и вызывается, если нажата кнопка "открыть"
Pascal
1
2
3
4
5
6
7
8
9
10
11
implementation
 
procedure Form1.button1_Click(sender: Object; e: EventArgs);
begin
  openFileDialog1.ShowDialog;
end;
 
procedure Form1.openFileDialog1_FileOk(sender: Object; e: ComponentModel.CancelEventArgs);
begin
  label1.Text:=openFileDialog1.FileName;
end;
1
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 6
02.04.2015, 17:43  [ТС] 8
Чуть изменил, вроде работает. Единственное не пойму, как в формах обращаться к отдельному элементу матрицы?
Я так понял, привычное в паскале t[i,j] не работает.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30765 / 20096 / 7852
Регистрация: 22.10.2011
Сообщений: 34,914
Записей в блоге: 6
02.04.2015, 17:45 9
Да все работает, что вы заладили, "формы, формы". Что, в формах другой синтаксис Паскаля? Все ТОЧНО так же работает, никаких изменений.
1
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 6
02.04.2015, 18:10  [ТС] 10
Спасибо. Вижу. Ошибка в другом)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 18:10

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

Получить только имя файла через openFileDialog
Необходимо получить только имя файла через openFileDialog, чтобы в textBox отображалось название...

Записать имя файла в переменную
Здравствуйте, Возможно ли, вместо того , чтобы использовать SAD.open("Batch.cmd") ...

Открытие файла через переменную
Здравствуйте, вот у меня к примеру будет такой код: string cfg; getline(cin, cfg); cfg +=...

Имя файла и нового листа через переменную
Задача: в папке есть несколько текстовых файлов, каждый заканчивается "_1.txt", "_2.txt", и тд....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.