Autor Beitrag
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Sa 21.06.03 01:58 
Ja Leute, die Frage steht in im Titel. Sorry, aber ich fange gerade mit Kylix an.


Moderiert von user profile icontommie-lie: Überflüssige Beiträge entfernt

_________________
Popov
Popov Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Sa 21.06.03 01:59 
EDIT //

Da von tommie-lie die überflüssige Beiträge entfernt wurden, ist der ganze Witz der Bemerkung dahin, da sich der Text auf die entfernten Beiträge bezog. Da die Bemerkung ohne die Beiträge schwachsinnig klingt, hab ich auch die Bemerkung entfernt und nur noch den Code gelassen.



ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
uses ..., Libc;

...

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Libc.system('konqueror') = -1 then
    ShowMessage('Konnte Programm nicht starten.');
end;


System in system verändert

_________________
Popov


Zuletzt bearbeitet von Popov am Do 24.07.03 19:16, insgesamt 2-mal bearbeitet
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Sa 21.06.03 09:37 
Popov hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
Libc.System('konqueror')					


Und wenn du dich an die Groß-/Kleinschreibung der Libc Befehle halten willst, sollte es Libc.system() lauten. Das ist keine Kritik. Wie man seinen Code schreibt, ist einem selbst überlassen. Aber C Programmierer sind da peniebler.

Es gibt auch noch Funktionen wie Libc.popen, Libc.fork & Libc.execXX.

_________________
Ist Zeit wirklich Geld?
Popov Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Sa 21.06.03 13:55 
Guter Hinweis. Allerdings ist es Pascal (nicht C) und somit ein wenig egal. Andererseits sollte man sich vor Augen halten, daß es Linux ist und bei Linux ist Groß-/Kleinschreibung nicht egal. Also sollte man sich immer Bewußt sein, wie man etwas schreibt. Da bei Windows-Delphi sowas egal ist, könnte man auf die Idee kommen, daß es Linux-Delphi auch vieles andere egal ist.

Was allerdings schlimmer wäre (ich hab übrigens den Code komplett ins Feld getippt und nicht kopiert) ist, daß es bei Dateinamen nicht egal ist. Das würde also weniger funktionieren:

Libc.system('Konqueror'); // Dateiname ist groß

Mehr zufällig als mit Absicht drann denkend, hab ich den Dateinamen klein geschrieben. Das wäre weniger egal.

Allerdings ist es hier egal ob es Libc.system() oder Libc.System() heißt. Wenn es aber zum guten Ton gehört es klein zu schreiben, dann werde ich es schwer haben mich drann zu gewöhnen.

_________________
Popov
BeniSchindler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 82

Win 2k / suse9.1
D7 Prof / Kylix 3
BeitragVerfasst: Fr 04.07.03 13:44 
Bei den Prozedur aufrufen ist die Groß/Kleinschreibung auch egal.
Das wichtige ist jedoch, dass in der USES-class die Groß/Kleinschreibung beachtet wird. Ansonsten findet er die Units nicht.

_________________
Result := 42; Application.ProcessMessages;
yellomb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21


D6
BeitragVerfasst: Di 06.01.04 12:16 
Also bei mir tut sich mit: Libc.System('konqueror');
ganichts, obwohl ich Libc in der uses eingebunden hab, hat jemand ne Ahnung woran das liegt :?:
Lhid
ontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 831



BeitragVerfasst: Di 06.01.04 12:30 
Meinung und mich grundlegend geändert-> alte beiträge gelöscht


Zuletzt bearbeitet von Lhid am Sa 26.09.09 13:43, insgesamt 1-mal bearbeitet
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Di 06.01.04 12:41 
Schöner Tipp, aber ich glaube nicht, daß das yellombs Problem ist, denn er sagt, es würde isch gar nichts tun. Linux ist schon so fortschrittlich und sagt dir, daß es die lib(bor)qt nicht findet ;-)

@yellomb: Hast du denn den Konqueror überhaupt installiert? Wenn du KDE nicht installiert hast, kann es durchaus sein, daß du den konquerer gar nicht hast. Wenn du Gnome (ab Version 2) benutzt, könntest du z.B. versuchen den nautilus zu laden ( Libc.system('nautilus'); ) oder ein anderes Programm (vielleicht yast bei SuSE, linuxconf bei RedHat oder eben ein anderes Programm, von dem du weißt, das es da ist. Zur Not auch Kylix selbst, "startkylix" ist hier das Startscript deiner Wahl).

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
NetZwerg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 448

Slackware 10.1
Kylix 3, D5 Standard
BeitragVerfasst: Mi 01.06.05 14:22 
hurra, ich bin auch mal wieder da :D

bei mir geht es auch nicht, weder mit 'konqueror' noch mit '/opt/kde/bin/kwrite' oder so. :(

_________________
"Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 01.06.05 18:28 
user profile iconNetZwerg hat folgendes geschrieben:
bei mir geht es auch nicht, weder mit 'konqueror' noch mit '/opt/kde/bin/kwrite' oder so. :(
:gruebel:
Also folgender C-Code funktioniert einwandfrei:
ausblenden Quelltext
1:
2:
3:
4:
5:
#include <stdlib.h>
int main()
{
    system("gedit");
}
Was ist denn bei dir der Rückgabewert von system()?

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
rap86
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 01.06.05 19:00 
wenn ich

irgendetwas mit system starten will

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
     system('konqueror');
end;


krieg ich folgende Fehlermeldung:
ausblenden Quelltext
1:
unit1.pas(125,12) Fatal: Syntax error, "." expected but "(" found					


wieso? was ist an dem Aufruf falsch?

ps: Libc is unter Uses eingetragen.

mfg
RaP86
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 01.06.05 19:14 
Du musst "Libc.system()" schreiben. So erkennt Kylix es als den Unit-Specifier "system", der die implizit eingebundene system.pas wiedergibt. Und Unit1(blubb) kannst du ja auch nicht als Funktion aufrufen ;-)
(Ich weiß schon, warum ich C mag... keine Compiler Magic user defined image)

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
rap86
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 01.06.05 19:21 
Das krieg ich wenn ich das eingebe was du gesagt hast:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure blabla ;
begin
     libc.system('konqueror');
end


ausblenden Quelltext
1:
2:
3:
4:
5:
unit1.pas(98,30) Hint: Parameter "Sender" not used
unit1.pas(97,31) Hint: Parameter "Sender" not used
unit1.pas(125,17) Error: Illegal expression
unit1.pas(125,17) Error: Illegal expression
unit1.pas(125,17) Fatal: Syntax error, ";" expected but "(" found


ps: ich benutz nich kylix, da ich einen 2.6.8 kernel hab und das dauernd abstürzt, sondern lazarus mit fpc :)
deswegen sehen die fehlermeldungen etwas anders aus...
NetZwerg
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 448

Slackware 10.1
Kylix 3, D5 Standard
BeitragVerfasst: Mi 01.06.05 20:23 
@tommie-lie:
ja c funktioniert bei mir auch, aber in kylix gehts halt nich! :(

_________________
"Manche Leute drücken nur deshalb ein Auge zu, damit sie besser zielen können."
Billy Wilder, amer. Filmregisseur
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 01.06.05 20:36 
user profile iconrap86 hat folgendes geschrieben:
ps: ich benutz nich kylix, da ich einen 2.6.8 kernel hab und das dauernd abstürzt, sondern lazarus mit fpc :)
deswegen sehen die fehlermeldungen etwas anders aus...
Tja, mein Beileid. :mrgreen: Durch die verkrüppelte FPC-Implementierung der Libc bin ich noch nicht durchgestiegen. Ich weiß auch noch nicht, welche Droge ich nehmen muss, um das überhaupt zu tun, geschweige denn welche der Autor des Dings genommen hat, um es überhaupt zu schreiben.
Daher kann ich dir leider nicht sagen, was FreePascal da gerne als Argumente hätte (die Tatsache, daß er nach "libc.system" aber gerne ein Semikolon hätte und keine Klammer, lässt darauf schließen, daß es sich bei libc.system um etwas anderes handelt, als die Funktion aus der glibc.so, wie man es eigentlich erwarten würde.
Irgendeiner (war es hier oder in der Delphi-Praxis? :gruebel:) wollte mir mal erzählen, daß man bei Pascal gefälligst nicht die Standard-Bibliotheken zu nutzen hat, die überall vorhanden sind, sondern irgendwelchen proprietären Fummelkram, vielleicht findest du im Freepascal-Forum entsprechende Mit-Frickeler.

Kleiner Tipp: Von einem anderen Programmierer weiß ich, daß der Kommandozeilencompiler von Kylix auch auf einem 2.6er-Kernel funktioniert. Ich weiß nicht, welche IDE er benutzt, aber den Compiler setzt er erfolgreich auf einem 2.6er-Kernel ein und er kompiliert damit sein Projekt Tux Commander erfolgreicher als ich meinen angestrebten FreePascal-Port vom gleichen Programm.


@NetZwerg: Deswegen wollte ich ja auch den Rückgabewert von libc.system() wissen ;-) Evtl auch mal stderr auf die Konsole (oder in eine Datei) umleiten und die posten. Vielleicht verrät auch der Kylix-Debugger ein paar Fehlermeldungen. Hast du evtl auch ein System mit 2.4er-Kernel (und dazu passender älterer glibc) zur Verfügung, auf dem du es mal ausprobieren könntest?

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
rap86
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mi 01.06.05 20:54 
mh... das is *mist*e :)

ich versuch mal irgendwen im freepascalforum zu fragen... bisher liefs eigentlich ziemlich gut damit...
nur seit ich vorgestern angefangen hab mit systembefehlen zu arbeiten krieg ich ne tierisch menge fehler die ich ehrlich gesagt nicht verstehe... :)

ps: da gibs son schönes Element Process1:TProcess.... da kann man nen command angeben und wenn man das element auf true setzt führt der den befehl sogar aus... frag is nur wie ich jetzt den output vom program in mein program reinkriege. process1.output gibbet, aber der hat als ausgabe TInputPipeStream ich hab ka wie ich das in einen String umwandle damit ich das in ein memo ausgeben kann... kannst du mir da eventuell helfen??

mfg
Patrick
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mi 01.06.05 21:09 
user profile iconrap86 hat folgendes geschrieben:
nur seit ich vorgestern angefangen hab mit systembefehlen zu arbeiten krieg ich ne tierisch menge fehler die ich ehrlich gesagt nicht verstehe... :)
Ja, habe ich auch gemerkt, und genau aus dem Grund (und weil der Linker schlichtweg zu schlecht ist (anders kann man's schon gar nicht mehr nennen)) bevorzuge ich bei der systemnahen Programmierung C. Kylix hat da nämlich ganz andere Macken.

rap86 hat folgendes geschrieben:
ps: da gibs son schönes Element Process1:TProcess.... da kann man nen command angeben und wenn man das element auf true setzt führt der den befehl sogar aus... frag is nur wie ich jetzt den output vom program in mein program reinkriege. process1.output gibbet, aber der hat als ausgabe TInputPipeStream ich hab ka wie ich das in einen String umwandle damit ich das in ein memo ausgeben kann... kannst du mir da eventuell helfen??
Theoretisch würde ich sagen, daß es eine gewöhnliche Pipe ist. In dem Fall wäre es so, daß du wie auf eine Datei zugreifst, also liest du den String wie aus einer Textdatei per TFileStream unter Delphi: Speicher für den String allokieren und einfach lesen. Dazu gibt es hier im Forum Beispielcode (Suche in: Delphi-Forum, Delphi-Library "TFILESTREAM STRING LESEN" sind da die Stichworte ;-)). Allerdings weiß ich nicht, wie du in dem Fall an die Länge des Stream kommst. Das hängt davon ab, ob der Stream der Pipe erst gefüllt wird, nachdem der Prozess wieder beendet wurde, dann steht die Länge der Ausgabe fest. Andernfalls vergrößert sich der Stream ständig und du musst dir ein geeignetes Leseverfahren überlegen, um an eine dynamische Menge an Zeichen zu kommen.
Aber bei der FPC-RTL bin ich mir über die saubere Implementierung nicht so sicher :mrgreen:

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
rap86
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 02.06.05 10:29 
Kannst du mir eventuell mal ein kurzes Beispiel machen?
Ich werde irgendwie aus den Beispielen nicht schlau :S

thx
Patrick
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 02.06.05 11:35 
user profile iconrap86 hat folgendes geschrieben:
Kannst du mir eventuell mal ein kurzes Beispiel machen?
Klick
Das ist zumindest das Prinzip. Aber wie gesagt, ich weiß nicht, ob TInputPipeStream.Size in der FPC-RTL vernünftige Werte enthält, oder wann der Stream mit Daten gefüllt wird.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
rap86
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 02.06.05 17:26 
danke für die hilfe... es läuft :)

thx

mfg
patrick