из bas в pas. посоветуйте Спецы.
Создана: 16 Января 2006 Пон 0:45:17.
Раздел: "Компьютерный раздел"
Сообщений в теме: 4, просмотров: 629
-
Доброго время суток Всем!
Сам ,как нызывают таких - чайник, (просто любитель)
Пол дня потерял пока что,то додумал (Вам смешно.. значит будет)
Проблемка такова:
Есть простой алгоритм на bas ->
..
DIM b$(256)
..
n = 1
FOR f = 1 TO 8
FOR g = 1 TO 8
FOR h = 1 TO 4
PRINT b$(n); : n = n + 1
NEXT h
PRINT ""; : NEXT g
PRINT : NEXT f
..
масив состоит из 0, 1 и впоследствии выводится
1111 1111 1111 ..
1111 1111 1111 ..
..
В общем надеюсь понятно.
Всю эту красоту перенести на pas (чтоб выполнялась также), а вернее на
объектно-ориен. прог-я, тоесть Delphi /в моем случае 7
Использую для вывода компонент Memo. Сохраняю в файл так же через него.
Получилось нечто ->
Var
io : Array of integer;
..
procedure TForm1.Button3Click(Sender: TObject);
var
i, f, g, h : Integer;
Line : String;
begin
SetLength (io, 256);
For i:= Low(io) to High(io) do
begin
io[i] := 1; //заполняем единичками
end;
i:= Low(io);
Memo1.Clear;
For f := 1 to 8 do
begin
For g := 1 to 8 do
begin
For h := 1 to 4 do
begin
Line := Line + IntToStr(io[i]) + ' ';
i := i+1;
Application.ProcessMessages;
end;
Line := Line + ' ';
end;
Memo1.Lines.Add(Line);
Line := '';
end;
..
(А вот теперь смешно?)
Интересует может в глазах специалистов это можно привести в нормальный вид?
Если нет, то и ладно спасибо. И так работает.
Сразу не спросил хотелось самому разобраться. Теперь спрашиваю чтобы исправить
минусы, так как уже мысли не лезут. (ибо заработало :-)
Извените Адм. и Мод. если снова напишите, что не здесь тему кинул. Не вижу другой подходяшей. -
-
Vector писал :Всю эту красоту перенести на pas (чтоб выполнялась также), а вернее на
объектно-ориен. прог-я, тоесть Delphi /в моем случае 7
Использую для вывода компонент Memo. Сохраняю в файл так же через него.
Получилось нечто ->
Var
io : Array of integer;
..
procedure TForm1.Button3Click(Sender: TObject);
var
i, f, g, h : Integer;
Line : String;
begin
SetLength (io, 256);
For i:= Low(io) to High(io) do
begin
io[i] := 1; //заполняем единичками
end;
i:= Low(io);
Memo1.Clear;
For f := 1 to 8 do
begin
For g := 1 to 8 do
begin
For h := 1 to 4 do
begin
Line := Line + IntToStr(io[i]) + ' ';
i := i+1;
Application.ProcessMessages;
end;
Line := Line + ' ';
end;
Memo1.Lines.Add(Line);
Line := '';
end;
..
Условие - обязательно объектно-ориентированное программирование? Или просто на выходе получать такую же картину, что и у программы на БЕЙСИК? Если второе - то все нормально написал. Можно, конечно, не дергать IntToStr(), раз у тебя всего два значения - ноль и единица просто ветвлением присваивать либо '0' либо '1'. -
Noom
>Условие - обязательно объектно-ориентированное программирование?
В принципе это делаю для легкого понимания в среде Win, так как командная строка многим кажется чем то не тем :)
IntToStr-пользуюсь так как в маси заганяю данные с порта алишь потом обработка (для наглядности привел пример с загоном 1-ек). Под Dos-om все прекрастно.
>.. присваивать либо '0' либо '1'
Хотел конечно прибегнуть к истина ложь, но пока дошло уже почти все работало.
Спасибо за поправки. Добавил еще обработку и теперь уж душа спокойна :) Киданул в своей v7bd. Прогу забрали, понравилась больше чем Dos вариант (им этого не понять :)
изменил i := i+i на inc(i)
в основном посоветовали завсегдатую истину
Работает - не лезь :-)