Hallo Liste,
ich hab eine blöde Frage , ihr weist ja, die klügere stellen immer blöde Frage an...-:_)))
Im Netz hab ich ein paar Librarys gefunden zb: http://www.engelschall.com/sw/mm/ http://www.engelschall.com/sw/str/
ich glaube, die können/müssen irgend wie mit GPC-Pascal gebunden werden oder besser gesagt wie kann man eine fremde Library unter GPC-Pascal zur Verfügung stellen.? Als neuling weis ich leider nicht wie das geht. aber muss gehen, oder ?
Danke für jede hilfreiche Idee
erkaN
On Mon, Mar 26, 2001 at 07:45:27PM +0200, erkaN wrote:
ich glaube, die können/müssen irgend wie mit GPC-Pascal gebunden werden oder besser gesagt wie kann man eine fremde Library unter GPC-Pascal zur Verfügung stellen.? Als neuling weis ich leider nicht wie das geht. aber muss gehen, oder ?
Natürlich geht das :-) Ist doch selbstverständlich für GPC. Deiner Frage geht leider nicht hevor, worum es sich dabei handelt.
a) Diese Lib kommt in Form von Units, dann kannst Du mit Uses eben_diese_lib;
die Units einbinden.
b) Diese Lib kommt in Form von Bibliotheken, wie Du sie unter /usr/lib findest, dann
1. Installiere die Lib (vergiss dabei nicht /etc/ld.so.conf) 2. Schau Dir die Funktionen an, die sie bereitstellt. Falls es C-Funktionen sind, so kannst Du eien kleinen wrapper schreiben:
Beispiel: in foo.h (Header für die Bibliothek foo.so) steht:
int bar(int x, int y);
so kannst Du in foo.pas (eine Unit, die Du in Deine Programme einbinden kannst) folgendes schreiben:
Unit foo;
Interface
Function bar (x,y:Integer) : Integer; asmname 'bar';
..... End.
Anschliessend linke beim Erzeugen eines Projektes noch gegen foo. Falls Du mehr Details benötigst, dann schreibe nochmal.
Eike
Hallo Liste, Hallo Eike,
Natürlich geht das :-) Ist doch selbstverständlich für GPC. Deiner Frage geht leider nicht hevor, worum es sich dabei handelt.
Ich hab die Datei "str-0.9.4.tar.gz" http://www.engelschall.com/sw/str/ untergelanden. Diese Datei enthält eine schöne Funktion, die mir gefallen hat. Gpc-Pascal hat vieleict das gleiche oder ähnliche Funktion, das weis ich leider nicht: Es geht um diese Vergleich-Funktion hier str_compare: This function lexicographically compares two strings. A maximum number of compared characters can be specified and the comparison can be optionally done case-insensitive
erkaN
PS: Ich hab gerade bemerkt, dass diese Funktion"str_sompare" nicht im gepackte Datei enthalten ist. die andere Funktionen aber schon da. Könnte das ein Fehler von Programier sein?
On Tue, Mar 27, 2001 at 11:28:16AM +0200, erkaN wrote:
Ich hab die Datei "str-0.9.4.tar.gz" http://www.engelschall.com/sw/str/ untergelanden. Diese Datei enthält eine schöne Funktion, die mir gefallen hat. Gpc-Pascal hat vieleict das gleiche oder ähnliche Funktion, das weis ich leider nicht: Es geht um diese Vergleich-Funktion hier str_compare: This function lexicographically compares two strings. A maximum number of compared characters can be specified and the comparison can be optionally done case-insensitive
Mhh. Keine Ahnung, ob es sowas in gpc gibt, aber Du kannst folgendes schreiben:
program foo; begin if 'Ballo' < 'ballo' then writeln('''Ballo'' ist kleiner') else writeln('''ballo'' ist kleiner') end.
Falls Du auf Unterscheidungen zwischen der GROSS/klein Schreibung verzeichten kannst, so kannst Du obiges umschreiben in
program foo; uses gpc; begin if LoCaseStr('Ballo') < LoCaseStr('ballo') then writeln('''Ballo'' ist kleiner') else writeln('''ballo'' ist kleiner') end.
Gruss Eike
Eike Lange schrieb:
On Tue, Mar 27, 2001 at 11:28:16AM +0200, erkaN wrote:
Ich hab die Datei "str-0.9.4.tar.gz" http://www.engelschall.com/sw/str/ untergelanden. Diese Datei enthält eine schöne Funktion, die mir gefallen hat. Gpc-Pascal hat vieleict das gleiche oder ähnliche Funktion, das weis ich leider nicht: Es geht um diese Vergleich-Funktion hier str_compare: This function lexicographically compares two strings. A maximum number of compared characters can be specified and the comparison can be optionally done case-insensitive
Mhh. Keine Ahnung, ob es sowas in gpc gibt, aber Du kannst folgendes schreiben:
Was heißt hier "keine Ahnung"? Du hast die Antwort doch schon gegeben. ;-)
In Pascal kann man Strings einfach mit =, <>, <, >, <=, >= vergleichen (lexikographisch).
Wenn "case-insensitivity" (kennt jemand einen vernünftigen deutschen Ausdruck dafür?) gewünscht ist, wie Eike sagte, LoCaseStr (Unit GPC) verwenden, und wenn nur die ersten paar Zeichen verglichen werden sollen, Copy:
if Copy ('Hallo', 1, 4) = Copy ('Halli', 1, 4) then ...
Wenn gewünscht, kann man eine Funktion schreiben, die das alles zusammenfaßt, mit entsprechenden Parametern (obwohl ich es in den meisten Fällen einfacher finde, einfach den Vergleich und ggf. LoCaseStr und Copy in den normalen Programmtext zu schreiben). Aber wenn man so eine Funktion schreibt, dann vielleicht doch bitte in Pascal, ohne mit C-Bibliotheken herumzuhantieren. (-; Nichts gegen C-Bibliotheken im allgemeinen, aber für Dinge, die Pascal eh schon kann, würde ich nicht unbedingt darauf zurückgreifen.)
Ach ja, in der Unit GPC gibt's auch noch StrEqualCase, die i.w. das gleiche macht wie `LoCaseStr (s1) = LoCaseStr (s2)', so daß man sich in diesem halbwegs häufigen Fall etwas Schreibarbeit spart (und sie ist auch ein kleines bißchen effizienter). Für < und > gibt's so eine Funktion allerdings (noch) nicht...
Frank