![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() только начинаю пробывать работать в делфи...возникла проблема...
при запуске программы: Код:
const d=20; n=50; type stroka=string[d]; ssilka=^stroka; text=array[1..n] of ssilka; var i,k,raz:integer; te:text; strok:ssilka; st:string; begin k:=mmOutput.Lines.Capacity; New(strok); for i:=1 to n do te[i]:=nil; for i:=1 to k do begin st:=mmOutput.Lines.Strings[i-1]; te[i]^:= st; end; for i:=1 to n do begin if te[i]=nil then begin mmOutput.Lines.Add('пусто') ; end else mmOutput.Lines.Add(te[i]^); end; Dispose(strok); когда в мемо не пишешь ничего, т.е. все эл-ты массива Nil, то выводит "пусто" коректно. Но стоит написать какой либо текст в мемо....так сразу вылетает с ошибкой...почему?что я сделал не так.Заранее спасибо.Если можно поподробнее. Последний раз редактировалось AnimatoR, 16.02.2010 в 23:36. |
#2
|
||||
|
||||
![]() Попробуй заменить
Цитата:
Код:
te[i]:= @st; В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
![]() после замены te[i]^=st на te[i]=@st при прогонке программы......и вводе текста теперь её не выбивает, но выводятся непонятные иероглифы , заместо вводимого текста к примеру
Код:
БАЦ 5ШАXШШшц пусто пусто пусто пусто пусто пусто пусто пусто пусто ... .. . хотя заместо "5ШАXШШшц" должно вывестись бац..... Есть ещё варианты? =( а то завтра лабу уже сдать надо.... ![]() |
#4
|
||||
|
||||
![]() Варианты ищи в логике программы...в нее не вникал,в глаза бросилась только эта строка...
Т.к. чтобы загнать данные в указатель используют te[i] := @st чтобы вытащить st := te[i]^ В начале был Бит, потом Байт и только потом появилось Слово... |
#5
|
|||
|
|||
![]() Спасибо...)
Но как я не пробывал...не получается...сама логика вроде верна....ибо выводит всё как надо , только вот не то.... Даже после исправлений по твоим советам: Код:
const d=20; n=50; type stroka=string[d]; ssilka=^stroka; text=array[1..n] of ssilka; var i,k,raz:integer; te:text; strok:ssilka; st:string; begin k:=mmOutput.Lines.Capacity; New(strok); for i:=1 to n do te[i]:=nil; for i:=1 to k do begin st:=mmOutput.Lines.Strings[i-1]; te[i]:= @st; end; for i:=1 to n do begin if te[i]=nil then begin mmOutput.Lines.Add('ïóñòî') ; end else begin st:=te[i]^; mmOutput.Lines.Add(st); end; end; Dispose(strok); end; ![]() |
#6
|
||||
|
||||
![]() Какая-то проблема с кодировками символов...ИМХО...
Я сделал так Код:
type stroka=string; Вот весь юнит Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) mmOutput: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const d=20; n=50; type stroka=string; ssilka=^stroka; text=array[1..n] of ssilka; var i,k,raz:integer; te:text; strok:ssilka; st:string; begin k:=mmOutput.Lines.Capacity; New(strok); for i:=1 to n do te[i]:=nil; for i:=1 to k do begin st:=mmOutput.Lines.Strings[i-1]; te[i]:= @st; end; for i:=1 to n do begin if te[i]=nil then mmOutput.Lines.Add('пусто') else mmOutput.Lines.Add(te[i]^); end; Dispose(strok); end; end. В начале был Бит, потом Байт и только потом появилось Слово... Последний раз редактировалось NIch, 17.02.2010 в 10:26. |