Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизInvalid floating point operation Исключение класса ElnvalidOp Найти похожие ветки
← →
XTD © (2006-06-05 16:26) [0]OpenDialog1.Execute();
ListBox2.Items.AddStrings(OpenDialog1.Files);
y:=ListBox2.Items.Count;
if y > 0 then
begin
i:=0;
for i:=1 to y do
begin
ListBox1.Items.Add(FaileNameTime(ListBox2.Items[i-1]));//ОШИБКА !!!
end;
end;
Добавляю файлы в листбокс2, потом обрабатываю функцией FaileNameTime и потом возвращаю в листбокс1.
Когда выбираю штук 20 файлов, все работает. Когда больше выбираю, ругается :
«Проект вызвал исключение класса ElnvalidOp с сообщением «Invalid floating point operation» Процесс остановлен»
Что делать ???
← →
Ega23 © (2006-06-05 16:30) [1]
> FaileNameTime
Код функции в стуию.
> i:=0;
> for i:=1 to y do
> begin
> ListBox1.Items.Add(FaileNameTime(ListBox2.Items[i-
> 1]));//ОШИБКА !!!
> end;
Это изврат. Достаточно
for i:=0 to ListBox2.Items.Count-1 do
....
← →
XTD © (2006-06-05 16:35) [2]Функция работает с полным именем файла и преобразует его только в имя, без расширения и пути.
Пример код:
function ExtractFileNameEx(FileName: string; ShowExtension: Boolean): string;
//Функция возвращает имя файла, без или с его расширением.
//ВХОДНЫЕ ПАРАМЕТРЫ
//FileName - имя файла, которое надо обработать
//ShowExtension - если TRUE, то функция возвратит короткое имя файла
// (без полного пути доступа к нему), с расширением этого файла, иначе,
возвратит
// короткое имя файла, без расширения этого файла.
var
I: Integer;
S, S1: string;
begin
//Определяем длину полного имени файла
I := Length(FileName);
//Если длина FileName <> 0, то
if I <> 0 then
begin
//С конца имени параметра FileName ищем символ "\"
while (FileName[i] <> "\") and (i > 0) do
i := i - 1;
// Копируем в переменную S параметр FileName начиная после последнего
// "\", таким образом переменная S содержит имя файла с расширением, но без
// полного пути доступа к нему
S := Copy(FileName, i + 1, Length(FileName) - i);
i := Length(S);
//Если полученная S = "" то фукция возвращает ""
if i = 0 then
begin
Result := "";
Exit;
end;
//Иначе, получаем имя файла без расширения
while (S[i] <> ".") and (i > 0) do
i := i - 1;
//... и сохраням это имя файла в переменную s1
S1 := Copy(S, 1, i - 1);
//если s1="" то , возвращаем s1=s
if s1 = "" then
s1 := s;
//Если было передано указание функции возвращать имя файла с его
// расширением, то Result = s,
//если без расширения, то Result = s1
if ShowExtension = TRUE then
Result := s
else
Result := s1;
end
//Иначе функция возвращает ""
else
Result := "";
end;
← →
XTD © (2006-06-05 16:44) [3]24 файла открывает, 25 ОШИБКА ... :-(
← →
Ega23 © (2006-06-05 16:51) [4]
> function ExtractFileNameEx
Мне не эта функция нужна.
Вот смотри, у тебя в твоём кодеListBox1.Items.Add(FaileNameTime(ListBox2.Items[i-1]));
что делает функция FaileNameTime? Приведи её код. Потому как остальное, по-идее, такое исключение вызвать не может.
← →
XTD © (2006-06-05 16:52) [5]Это и есть ее код ...
← →
XTD © (2006-06-05 16:54) [6]У меня тоже самое, только без комментариев ...
← →
XTD © (2006-06-05 16:56) [7]Что вообще вызывает исключение ??? Где можно почитать ???
← →
Ega23 © (2006-06-05 16:59) [8]
> У меня тоже самое, только без комментариев ...
Вот и давай твоё "тоже самое".
← →
XTD © (2006-06-05 17:01) [9]I := Length(FileName);
if I <> 0 then
begin
while (FileName[i] <> "\") and (i > 0) do
i := i - 1;
S := Copy(FileName, i + 1, Length(FileName) - i);
i := Length(S);
if i = 0 then
begin
Exit;
end;
while (S[i] <> ".") and (i > 0) do
i := i - 1;
S1 := Copy(S, 1, i - 1);
if s1 = "" then
s1 := s;
NameF := s1;
end
else
NameF := "";
if Length(NameF) > 30 then
begin
res := copy(NameF,1,30);
end
else
begin
while Length(NameF) < 30 do
begin
NameF := NameF+" ";
end;
res:=NameF;
end;
← →
Ega23 © (2006-06-05 17:08) [10]ужас какой-то. Посмотри в сторону функций ExtractFileName и ExtractFileExt
← →
XTD © (2006-06-05 17:13) [11]Ок!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c