ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1526
1526
EMPFEHLEN
-
Man glaubt es kaum aber ich hab mich bisher ohne Funktionen durchgeschlagen. Da mein Script aber langsam meterlang wird und das ändern der Datei einfach viel simpler ist hab ich mich jetzt endlich durchgerungen das zu lernen.
Google und die Delphi-Hilfe helfen aber leider nur bedingt!
einfache mathematische Funktionen inder Zahlen z.B multipliziert werden sollen
oder einfache Funktionen in der Strings zusammengeführt werden sind kein Problem aber ich bin auf der Suche nach einer Funktion in der ich z.B ne shellapi ausführen oder verschiedene labels ansprechen kann. Im Momment ist da bei mir ein rießiges Fragezeichen über meinem Kopf
hier einfache mathematische funkt.
Code :1 2 3 4
Function bla(x: String; y: integer) : integer; begin result:=x+y; end;
so wie es mir mein Verstand saen würde was aber leider nicht funktioniert:
oder noch falscherCode :1 2 3 4
Function bla(x: String) : string; begin result:= ShellExecute(Handle, 'open', PChar(x), nil, nil, SW_NORMAL); end;

Code :1 2 3 4
Function bla(x: integer) : integer; begin result:= labelx.caption:='texttext'; end;
würd mich freuen wenn Einer von euch mir ein bisschen auf die Sprünge helfen könnte.
gruß, smaresh
-
Warum willst du hier Funktionen nutzen und keine eigenen Prozeduren? Ist für mich nicht ersichtlich...
-
weil ich z.b. bei der shellapi 12 programme öffnen will und das wären dann 12 mal platz für script und 12 mal ändern, besser wäre es doch wenn ich die funktion oben einmal definieren könnte und unten dann nur den pfad habe und die shellapi aufrufe.
und das mit den labels war nur ein Beispiel um es zu lernen
gruß
-
Hm, ich kann dir grad irgendwie nicht folgen. Aber wenn du die gleichen Prozeduren häufiger mit unterschiedlichen Parametern ausführen willst (zB den Pfad zurechtstutzen und dann ein Programm öffnen), kannst du ja eine eigene Prozedur schreiben und die nötigen Werte als Parameter übergeben lassen.
Wenn du aber nur einen String auf ähnliche Art und Weise bearbeiten willst, dann nimmst du die Funktion, und der fertig bearbeitete String wird dann als Result zurückgegeben.
Die beiden letzten Beispiele, die du anbringst, sollten ja eigentlich Prozeduren sein, weil ja nichts zurückgegeben werden muss.
Liebe Grüße
Hellie
-
Hi,
für ShellExecute brauchst Du die ShellAPI in der Uses-Clause. Hast Du die drin?
Ach ja, Dein unterstes Beispiel zeigt ja gar keine Funktion. Was willst Du denn damit erreichen?
@Hellie:
Bei der ShellExecute-Geschichte könnte ich das verstehen, wenn in der aufrufenden Prozedur eine Fehlerabfrage erfolgen würde, denn "result" enthält ja den Fehlercode, wenn der Aufruf schiefgegangen ist.Geändert von darkframe (05.01.08 um 15:20 Uhr)
Grüße
darkframe
-
Was unterscheidet denn dann die eigentliche ShellExecute-Funktion von dieser hier? Das wären unnötige Schritte, höchstens wichtig, wenn man es übersichtlich haben möchte und nicht immer die ShellExecute-Funktion mit den vielen Parametern. Aber eigentlich extremst ineffektiv.
Hab mir das Programm mal angeschaut, mir erscheint es wirklich so als bräuchtest du hier keine Funktionen, sondern nur Prozeduren, die dann mit Klick auf einen Button aufgerufen werden, und als Parameter den Pfad, den Index oder sonstwas übergeben.
Grüße
Hellie
-
Ja Hellie du hast Recht, wenn du mir das mit den Prozeduren die bestimmte Parameter übergeben erklären würdest...
gruß smaresh
-
Kein Problem. Im Prinzip ist es wie bei den Funktionen, nur, dass es keinen Rückgabewert gibt. Um das mittlere Beispiel aufzugreifen, könnte die Prozedur zB
Procedure bla(x: String);
begin
ShellExecute(Handle, 'open', PChar(x), nil, nil, SW_NORMAL);
end;
heißen. Nun könntest du zB über die Anweisung
bla('C:\meineanwendung.exe');
genau dieses Programm aufrufen. Wichtig ist nur, dass in der Prozedur alles so abstrakt geschrieben und mit Parametern beschrieben ist, dass die für alle Anwendungsfälle funktioniert.
Du kannst natürlich nicht nur den Pfad selbst als Parameter übergeben, sondern auch den Namen des Buttons oder woher du auch immer den Pfad dann nimmst, und in dieser von dir geschriebenen Prozedur dann den übergebenen Parameter zum Pfad "umarbeiten".
Bin ich zu verstehen
Liebe Grüße
Hellie
-
geht leider nicht hab das gleiche Problem wie mit den Funktionen
der meldet ein Fehler wenn ichs unter den vars reinschreib:
[Error] Unit1.pas(25): Statements not allowed in interface part
[Error] Unit1.pas(26): Undeclared identifier: 'Handle'
[Error] Unit1.pas(24): Unsatisfied forward or external declaration: 'bla'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
das wenn ichs unter implementation schreib
[Error] Unit1.pas(33): Undeclared identifier: 'Handle'
[Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'TForm1.Button1Click'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
hoffe ihr könnt was damit anfangenGeändert von smaresh (05.01.08 um 16:37 Uhr)
-
Entweder schreibst du's im Interface-Teil, aber nicht in den Typ TForm1:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
unit Unit1; interface uses ... type TForm1 = class(TForm) ... end; [B] procedure bla(x:string);[/B] var Form1: TForm1;
oder mit zum Typ TForm1:
Code :1 2 3 4 5 6 7 8 9 10
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); [B] procedure bla(x:string);[/B] private { Private-Deklarationen } public { Public-Deklarationen } end;
Dann muss die Prozedur selbst aber auch
Code :1
procedure TForm1.bla(x:string);
heißen.
Was das Handle angeht, versuch's mal mit ShellExecute(Application.Handle, 'open', PChar(x), nil, nil, SW_NORMAL); stattdessen.
Hoffe, ich konnte ein Bisschen helfen.
Grüße
Hellie
-
ok danke wenn ichs unter TForm reinschreib dann gehts danke
gruß smaresh
-
Grüße
darkframe
Ähnliche Themen
-
mathematische Funktionen in C++ (integegrieren, ableiten, Funktionen aufstellen...)
Von busenbach im Forum C/C++Antworten: 2Letzter Beitrag: 04.09.07, 07:19 -
Problem mit Gültigkeitsbereich von Funktionen innerhalb von Funktionen
Von Karl Förster im Forum PHPAntworten: 7Letzter Beitrag: 26.04.06, 21:32 -
XSL mit PHP-Funktionen
Von shockshell im Forum XML TechnologienAntworten: 0Letzter Beitrag: 15.06.05, 09:35 -
Mit SWT Win API Funktionen / Funktionen aus beliebigen DLLs aufrufen.
Von Thomas Darimont im Forum JavaAntworten: 9Letzter Beitrag: 10.05.05, 22:03 -
Funktionen
Von TsEnG im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 09.02.04, 14:02





Zitieren

Login





