Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

Что за ошибка: Invalid pointer operation.   Найти похожие ветки 

 
Hawk2 ©   (2003-09-02 19:43) [0]

Вот решил разобраться с DLL. Для лучьшего понимания решил начать с простого. Создаю библиотеку с вот такой функцией:

library DLLProject1;
uses
SysUtils,
Classes;

{$R *.RES}
function Conv(Str:string):string;
var i:integer;
Str2:string;
begin
For i:=Length(Str) downto 0 do
begin
Str2:=Str2+Str[i];
end;
Conv:=Str2;
end;
exports Conv;
begin
end.

и программа которая эту ф-цию использует:

unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Conv(Str:string):string; external "DLLProject1.dll";
var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=Conv(Edit1.Text);
end;
end.

ввожу текст в поле, нажимаю кнопку и тут вылетает ошибка: Invalid pointer operation.

P.S. И еще, только обнаружил, если вводить строку в два символа, то все работает нормально, а если больше - глюк. Где что не так?


 
Skier ©   (2003-09-02 19:51) [1]

Начнём отсюда For i:=Length(Str) downto 0 do
Дальше сложнее...


 
Hawk2 ©   (2003-09-02 19:59) [2]

Если поставить For i:=Length(Str) downto 1 do ошибка остается, но теперь хавает строку размером в три символа, а четире и больше ругается.


 
Fog ©   (2003-09-02 20:01) [3]

Нет дело не в этом (ну может и в этом тоже...) вообщем не function Conv(Str:string): string; а function Conv(Str:string): PChar;


 
Skier ©   (2003-09-02 20:03) [4]

>Hawk2 © (02.09.03 19:59)
Теперь так :
Создай новый проект File | New | DLL
После создания увидишь большой комментарий.
Тебе следует его внимательно прочитать.


 
Hawk2 ©   (2003-09-02 22:56) [5]

Ребята спасибо, иногда пока не "ткнуть носом" не дойдет :)


 
Zheks ©   (2003-09-03 01:34) [6]

да, пустяки...


 
Amoeba   (2003-09-03 12:21) [7]

Есть альтернатива использованию стандартного sharemem, при этом более не требуется Borlndmm.dll
http://www.codexterity.com/fastsharemem.htm



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-48649
SiRex
2003-09-02 00:35
2003.09.15
Проблемка: RichEdit + Русские символы


3-48459
mOOx_
2003-08-23 14:34
2003.09.15
Общий count...


14-48714
Ru
2003-08-27 09:43
2003.09.15
С днем независимости Молдова!


3-48442
dmtr
2003-08-25 10:23
2003.09.15
Программное создание таблицы dBASE 4


1-48500
_MAD_
2003-09-02 15:56
2003.09.15
Чекбокс