![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |
|
#7
|
|||
|
|||
|
Всё и правда работает =)))) спасибо огромное....завтра у преподши спрошу почему такое условие типов она мне дала....которое путает что то с кодоировкой =))) СПасибо ещё раз за быстрый ответ )
|