error 217

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Laserer
Beiträge: 12
Registriert: Mo 21. Jul 2008, 18:57

error 217

Beitrag von Laserer »

Hallo liebe Freepacal & Lazarus Community. Ich bin neu hier und ich hoffe, ihr könnt mir bei meinem ersten gröberen Problem helfen, welches ich einfach nicht bewältigen kann, selbst nach stundenlanger suche mit google. Zuerst mal ein bisschen Code:

Code: Alles auswählen

program k8055;
 
{$mode objfpc}{$H+}
 
uses
        {$IFDEF UNIX}{$IFDEF UseCThreads}
                cthreads,
        {$ENDIF}{$ENDIF}
                Classes, SysUtils
        { you can add units after this };
 
var
        CardAddr : longint;
        h : longint;
        Counternumber : longint;
        pulses : longint;
        str : string;
 
function OpenDevice(CardAddr:longint) : longint; stdcall; external 'libk8055';
function ReadCounter(Counternumber:longint) : longint; stdcall; external 'libk8055';
 
begin
        CardAddr := 0;
        h:=OpenDevice(0);
        case h of
                0: writeln('Karte verbunden');
                -1: writeln('Karte nicht gefunden');
        end;
 
        pulses:=ReadCounter(1);
        str := 'Counter 1: ' + inttostr(pulses);
        writeln(str);
end.
Dieser Code spuckt bei mir unter openSUSE 10.3 (i386) folgendes aus:

Code: Alles auswählen

Karte verbunden
Runtime error 217 at $080546CD
  $080546CD
  $08054999
  $08090511
Der Runtime Error verschwindet aber interessanterweise, sobald ich die zeilen mit str:= ... und writeln(str) auskommentiere. Woran könnte das liegen?

LG

P.S.: Unter Windows funktioniert der Code übrigens einwandfrei,

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Was ist den "libk8055"?
Versuch mal cdecl statt stdcall.

Laserer
Beiträge: 12
Registriert: Mo 21. Jul 2008, 18:57

Beitrag von Laserer »

Entschuldigt bitte vielmals, hab völlig vergessen zu sagen, worum es hier eigentlich geht. Die libk8055 spricht ein USB-Interface Board an ( http://libk8055.sourceforge.net/" onclick="window.open(this.href);return false; ) Ich hab auch schon dafür gesorgt, dass jeder auf das Gerät zugreifen kann, sodass ich nicht jedesmal das programm mit sudo aufrufen muss

Das mit cdecl werde ich gleich ausprobieren!

mfg

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du versuchst unter Windows ohne Konsole auf die Konsole zuzugreifen würde ich mal tippen. Entweder du verabschiedest dich vom writeln, oder du dekativierts Compilereinstellung->Linken->Win32 GUI Anwendung
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Christian hat geschrieben:Du versuchst unter Windows ohne Konsole auf die Konsole zuzugreifen würde ich mal tippen. Entweder du verabschiedest dich vom writeln, oder du dekativierts Compilereinstellung->Linken->Win32 GUI Anwendung
Du solltest dich mal erholen.
Erstens schreibt er openSUSE 10.3 (i386) und zweitens ist das ein Konsolenprogramm.

Laserer
Beiträge: 12
Registriert: Mo 21. Jul 2008, 18:57

Beitrag von Laserer »

Vielen Vielen Dank theo für deinen Hinweis, was ich nach 3 stunden googlen nicht lösen konnte, hast du mit deinem schlichten Post gelöst. Ist im Nachhinein auch völlig klar, was da passiert ist. Die Herstellerfirma liefert das Board mit einer DLL plus Dokumentation für Delphi aus. Deshalb hab ich auch überhaupt erst angefangen, für FPC zu programmieren. Jedoch gibt es kein Modul für Linux, außer eben der libk8055 von sourceforge, welche aber für C geschrieben ist. Irgendwie logisch, dass ich es dann mit einem anderen Befehl aufrufen muss, wobei mir cdecl bis dato nicht geläufig war.

Danke auch Christian für deinen Hinweis. Und du wirst lachen, aber das war vor ein paar Tagen auch ein Problem, welches ich aber zum Glück selber lösen konnte. Bin aber eben inzwischen beim Programmieren auf Linux, da das Konsolenprogramm später auf nem Server laufen soll. Trotzdem probier ich zuerst meist lieber auf WinXP herum, bevor ich es auf Linux portiere. Aber am Anfang ist mir genau das passiert. Nur ohne error 217 :D

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ups... sollte mir wirklich langsam ne lesebrille zulegen was ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten