Lazarus 3.0 (2023.12.21.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz: SIGSEGV hibaüzenet - kezdő 2014 dec. 28 19:45 #1425

  • sa781207
  • sa781207 profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Minek ez ?

Föl dobod az IDE-ben a TEDIT eket az ha a lazarus orgon, valaki összevissza kínozza a programozási nyelvet hát az ő baja.

Válasz:SIGSEGV hibaüzenet - kezdő 2014 dec. 28 19:41 #1424

  • sa781207
  • sa781207 profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 16
  • Köszönetek: 0
Miből tanulsz ?

Nézd meg a lazarus.org -ot gyakran vagy van egy új könyv nekem még nincs meg de amúgy ígéretes a lazarus GTK bár valsz csak grafika, de lehet, hogy sok újdonság van benne.

Ez a setlength ezés, hogy is mondjam, egyszerű !

Rengeteg módon csinálhatsz tömböt, de legegyszerűbb, így :

Var
Tomb : array[kezdo..vegzo] of tipus;

Ha a setlength bedöglik vagy valami nagyon ügyeset akarsz van variant típus. (Lassú de tudomásom szerint mindenhez jó!)

Sisegv megdobja sokszor, de nem egyszerü, proszáld meg a helpet a lazarus orgon komolyan angolt ! 500 direktíva van fordításhoz.
Van egy jó köny (nincs benne rész tulajdonom de jó). Delphi 6 fekete nézd meg ha nem haragszol.

Nincs egyszerű ötletem, az a bajom, hogy az angol forum nagyobb de gyere ide vissza, valami kavarodas van néha a lazarus orgon elavult a help. Jó itt írj vissza segítek. Tört angolba megy a lazarus, esetleg külföldről, stb. Én is kétségtelen vagyok pedig delphi 7-ben irtam ezt azt. Nincs tökéletes programnyelv.
Ki lehet akasztani a lazarust. Nagyon furcsa az élet mert már androidon is fut.

Válasz:SIGSEGV hibaüzenet - kezdő 2012 ápr. 21 19:31 #1054

  • prekox
  • prekox profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 87
  • Köszönetek: 4
Azért működik 10-el, mert így nem indexeled túl a tömböt.
A setlength-el beállított tömb indexe 0-val kezdődik és ha a for ciklus 1-től megy 5-ig és i:=5, akkor a tömb indexe 0-tól megy 4-ig és nincs 5-ös indexű elem. Tehát a for ciklusnak 0-tól kell mennie i-1-ig stb.

Szerintem.
i5 3470
8GB
Win 10
CodeTyphon 7.0

Válasz:SIGSEGV hibaüzenet - kezdő 2012 ápr. 21 14:59 #1052

  • egocska
  • egocska profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 6
  • Köszönetek: 0
És lám, működik. Köszönöm.


Egy aprócska kérdés ehhez, ha még van türelmed. Próbálkozásaim során volt 3 sor ami benne volt a kódban:

i:= 5;
j:= 5;
SetLength(TEdits,i,j);

Ezek után is sigsegv hibaüzenetet adott. Most, hogy átírtam:

SetLength(TEdits,10,10);

műxik. Miért?

Aztán ha nem haragszol biztos lesz még kérdésem, amíg meg nem értem a logikáját. Az eddigit és előre is köszönöm.

Válasz:SIGSEGV hibaüzenet - kezdő 2012 ápr. 17 21:31 #1049

  • prekox
  • prekox profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 87
  • Köszönetek: 4
Mert dinamikus tömböt akarsz létrehozni, aminek nincs egy eleme sem és TEdits[0,0]-án nincs tömbelemnek lefoglalva hely azaz nem létezik. :(
A SetLength-el lődd be a méretet és akkor adj neki értéket.
i5 3470
8GB
Win 10
CodeTyphon 7.0

SIGSEGV hibaüzenet - kezdő 2012 ápr. 15 21:54 #1047

  • egocska
  • egocska profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 6
  • Köszönetek: 0
Sziasztok!

Éppen csak ismerkedem a Lazarusszal, mindjárt beleütköztem egy olyan hibaüzenetbe amivel semmit nem tudok kezdeni. Egy programot akarok készíteni, ahol a problémám egyik felét megtaláltam a neten (Delphi forumban, táblázat készítése TEdit-tel). Addig bütyköltem amig lefordul, azonban az alábbi sornál elakad sigsegv hibaüzenettel (nincs tűzfalam, amivel összeakadna, a legújabb gdb-t használom):

TEdits[i,j] := TEdit.Create(nil);

A teljes kód:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;
TEdits: array of array of TEdit;
implementation

{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
j: integer;
begin
for i := 1 to 5 do
begin
for j := 1 to 4 do
begin
TEdits[i,j] := TEdit.Create(nil);
TEdits[i,j].Width := 121;
TEdits[i,j].Height := 21;
TEdits[i,j].Top := i*21;
TEdits[i,j].Left := j*121;
Form1.InsertControl(TEdits[i,j]);
TEdits[i,j].Show;
TEdits[i,j].Visible := True;
end;
end;
end;




end.

Már nincs ötletem merre induljak el (win32, XP környezet). Segítséget előre is köszönöm.

  • Oldal:
  • 1