Pascal assign ошибка

1. Ошибка времени выполнения: «Данный формат пути не поддерживается».

Это самая известная ошибка, которую рано или поздно встречает любой начинающий программист. Взгляните на картинку:

Листинг 3. Ошибка в процедуре Assign №1

Впервые встретившись с этой ошибкой, можно прийти в недоумение. Файл, из которого мы собираемся читать, на месте. Он доступен и нормально открывается текстовым редактором. Тем не менее, что-то не так. На самом деле, все просто: во время набора текста программы вместо латинской  «ЦЭ» была напечатана русская «ЭС». К счастью, такая ошибка единственная в своем роде. Раскладки «qwerty» и «йцукен» имеют совпадение только в одном месте.

2. Ошибка времени выполнения: «Файл не найден». 

Листинг 4. Ошибка в процедуре assign №2

Еще одна «механическая» ошибка, связанная с использованием процедуры Assign. В принципе, история похожа на рассказанную выше. Автор программы видит, что файл не найден, идет в папку «123» и не понимает: «Как не найден? Вот же он!»

Рис.1. Файл, да не совсем тот

Все просто: вместо нужного вам текстового файла «55.txt» вы создали файл с именем «55.txt.txt» . Этой ошибки не будет возникать, если вы для себя четко раз и навсегда уясните, что такое расширение в имени файла. И вообще, не пользуйтесь проводником в Windows, а работайте в менеджере файлов, например, в Total Commander.

I wrote this program and I just can’t figure out what is wrong with it.
The SkaitytiDuomenis (read values) procedure takes two arrays as arguments so it can read coordinates from a text file and store them in the arrays, but the problem is it doesn’t really read it. There is something wrong with the assign() part, but I can’t figure it out for the life of me. Anyone who helps will be greatly appreciated, as this is a state exam I’m trying to prepare for.

program Uzduotis1;
type
    masyvas = array[1..50] of integer;
{*************************Kintamieji************************}
var
    Duomenys, Rezultatai :text;
    x, y                 :masyvas;       {koordinates (x;y) }
    UzsakymuSk,                           {uzsakymu skaicius}
    DienosKm,                    {dienos kilometrazo limitas}
    NuvaziuotiKm,                 {nuvaziuotu kilometru suma}
    LikeKlientai,             {neaptarnautu klientu skaicius}
    UzsakymoNr                  {atliekamo uzsakymo numeris}
                         :integer;
{*************************Proceduros************************}
procedure SkaitytiDuomenis(var a,b:masyvas);
var i:integer;
begin
    for i:=1 to UzsakymuSk do
        readln(Duomenys, a[i], b[i]);
end;
procedure IsvestiRezultatus;
    begin
        rewrite(Rezultatai);
        write(LikeKlientai,' ',NuvaziuotiKm);
        close(Rezultatai)
    end;
{************************Funkcijos**************************}
function atstumas(a,b :integer) :integer;
    begin
        atstumas := (abs(a) + abs(b)) * 2;
    end;
{********************Pagrindine programa********************}
begin
    assign(Duomenys,'C:\Duomenys\U1.txt');
    assign(Rezultatai,'C:\Duomenys\U1rez.txt');
    reset(Duomenys);
    readln(Duomenys,UzsakymuSk,DienosKm);
    SkaitytiDuomenis(x,y);
    NuvaziuotiKm := 0;
    LikeKlientai := UzsakymuSk;
    UzsakymoNr := 1;
    while ((UzsakymoNr<UzsakymuSk) and (NuvaziuotiKm<DienosKm)) do
        begin
            NuvaziuotiKm := NuvaziuotiKm + atstumas(x[UzsakymoNr],y[UzsakymoNr]);
            LikeKlientai := LikeKlientai - 1;
            UzsakymoNr := UzsakymoNr + 1
        end;
    IsvestiRezultatus;
end.

This is the input file:

14 30
2 3
3 –1
-2 –4
–3 0
-2 4
0 2
5 -4
1 2
4 -3
2 1
-5 -5
-1 0
0 5
2 5

program test;
var
  myfile: text;
begin
  assign(myfile, "test1.txt");//Здесь ошибка
  close(myfile);
end.

Текст ошибки: «Ошибка: неверное выражение».
Pascal abc, в интернете ничего не нашёл.
Помогите :(

задан 12 янв 2013 в 12:37

Roan's user avatar

1

Не верное определение типа

var
  myfile: text;

Должно быть textfile

ответ дан 12 янв 2013 в 12:40

Rsecomua's user avatar

RsecomuaRsecomua

4,26313 серебряных знаков17 бронзовых знаков

Все, разобрался. Нужны не двойные кавычки, а обычные. Т.е. ‘test1.txt’

ответ дан 12 янв 2013 в 12:42

Roan's user avatar

RoanRoan

3975 серебряных знаков17 бронзовых знаков

Mystic

user_str = input(‘Введите строку: ‘)
user_words = user_str.split()
result_list = [[], [], [], []]

eng_alphabet = [«A», «B», «C», «D», «E»,
«F», «Z», «H», «I», «K»,
«L», «M», «N», «O», «P»,
«Q», «R», «S», «T», «V»,
«X»]

result_list[0].append(‘Всего слов — ‘ + str(len(user_words)))
long_word = max(user_words, key=len)
result_list[1].append(‘Все четные цифры строки — ‘ + ».join([elem for elem in user_str if int(elem) % 2 == 0]))
result_list[2].append(‘Самое длинное слово — ‘ + long_word)
result_list[3].append(‘Все символы длинного слова — ‘ + ».join([elem for elem in list(long_word) if elem not in eng_alphabet]))

Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Ярик

Репутация: -  0  +



При работе с файлом мне нужно указать путь к файлу с клавиатуры. В моём варианте assign работает только, если в программе не участвует readln(read). Поиском не пользовался, дабы нет времени. Просто очень срочно. Ребят, прошу помощи.

 
uses crt;
const N=10; M=15;
type massiv=array[1..N,1..M] of integer;
var a: massiv;
i,v,h,o,b,p,N2,M2,j,t,g,k,l: integer;
s: real;
f,f2: text;
str:string;
ch: char;

begin {1}
clrscr;

writeln ('Введите размер матрицы вида (M*N; gde N-столбцы (максимальный размер 10*15)');
writeln ('Введите количество столбцов');
repeat
read (N2);
until (N2>=3) and (N2<=10); {часть ввода данных}
writeln ('Введите количество строк');
repeat
read (M2);
until (M2>=1) and (M2<=15);
writeln;

begin
writeln ('Куда вывести используемые данные? 1-записать в файл 2-вывести на окно ');
ch:=readkey;
if ch='1' then {сама работа с файлом (запись текста в него, с указанием полного пути, вводимого с клавы}
writeln ('Введите путь к файлу');
read (str);
assign (f2,str);
rewrite (f2);
write (f2,'isxodnaya matriza');

close (f2);
end;

readln;
readln;
end. {1}

я, думаю, для вас это ламерский вопрос..

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Partlibclient dll ошибка
  • Partlibclient dll исправить ошибку
  • Pantum ошибка 103f
  • Pantum ошибка соединения
  • Pantum ошибка сканер не подключен

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии