![]() |
Übergabestring bearbeiten.
Ich hab ein kleines Problem mit einem Datenbankprogramm.
Dieses Programm kann ich leider nicht modifizieren. Somit müsste ich ein kleines Tool coden. Das Datenbankprogramm nimmt den Explorer aus Windows her. Somit gibt es auch den Befehl "Sendto" (im rechten-Maustaste-Menu). Wenn ich nun eine Datei z.B. an Wordpad senden will kommt eine Fehlermeldung. Diese ist auch total logisch, weil das Programm aus dem ich den Sendto Befehl ausführe an die Datei noch einen Anhang mitschickt. Das Ganze sieht dann so aus (Ich vereinfache den String in diesem Beispiel.): E:\Ordner\Unterverzeichnis\Datei.Endung@@\Programm ordner\Versionsinformation\4 Somit kommt dann die Errormeldung: Kann 4 nicht öffnen. Die Lösung währe nun folgendes: Ich bräuchte ein kleines Tool welches den Übergabestring aus Sendto übernimmt und die Information hinter dem ersten @ einfach abschneidet und dann den Rest an das andere Programm weiter gibt. Sollte dann so aussehen: E:\Ordner\Unterverzeichnis\Datei.Endung Nun hänge ich aber noch am @-Zeichen und an dem Problem, wie ich den String aus dem Sendto-Befehl in mein Programm bekomme. Ich hatte mich gestern 2 Stunden in Netz gehängt und bin nich auf eine Lösung gestoßen. Könnte mir einer von Euch Freaks hiermit helfen?. Danke schon mal. |
Re: Übergabestring bearbeiten.
Willst du den String bearbeiten, der an Wordpad geschickt wird oder den, der an dein Programm geschickt wird?
[edit]Verdammte Tastatur, und das 2 Mal :roll:[/edit] |
Re: Übergabestring bearbeiten.
Wordpad war nur ein Beispiel, aber ja, es geht um den String, den ich zu meinem Programm schicke. Mein Programm soll sozusagen eine Brücke darstellen.
Sprich das Programm, welches die Datei erstellt hatte, hängt immer diesen Schmus nach den zwei @-Zeichen dran. Ergo muss mein Programm den Schmus inkl. den @-Zeichen killen und nur den String ohne dem Anhang weitergeben. Sonst kann das Folgeprogramm die Datei nicht öffnen. |
Re: Übergabestring bearbeiten.
naja, wenn du weisst wie der ordner heisst könntest du es so machen:
Delphi-Quellcode:
ich weiss nit, obs genau so geht
procedure uebergabe(uebergabestring:string);
const pfad='meinProg'; var x:integer; begin x:=find(pfad,uebergabestring); trim(uebergabestring8,x); end; find muss den index des ersten buchstaben des gesuchten strings im grossen string zurückgeben trim muss in einem string alles nach einem bestimmten index abschneiden trim gibts, aber obs genau das tut? find musse gucken, welches find genau |
Re: Übergabestring bearbeiten.
Hmm müsste ganz nah dran sein. Gibt es nicht irgendwo im Net ne Übersicht über alle Zeichen? Es müsste doch möglich sein alles ab dem ersten @ zu trimmen. Nur wie bestimme ich @?
|
Re: Übergabestring bearbeiten.
Geh den String Zeichen für Zeichen in einer Schleife durch und vergleiche mit "@". Eine ASCII Tabelle wird sich im Internet schon finden lassen. ;)
|
Re: Übergabestring bearbeiten.
Delphi-Quellcode:
:gruebel:program SendToWordpad; uses SysUtils, Windows, ShellApi; function TrimAtDoubleAt(s: String): String; var iPos: Integer; begin Result := s; iPos := pos('@@', s); If iPos>0 then Result := copy(s, 1, iPos-1); end; begin ShellExecute(0, 'open', PChar( TrimAtDoubleAt( ParamStr(1) ) ), nil, nil, SW_SHOWNORMAL); //Bleibt zu hoffen, dass der komplette Paramter in Anführungszeichen übergeben wird end; |
Re: Übergabestring bearbeiten.
Dani kannst Du mir sagen welche Projectart du für deinen Code benutzt hast
Es hängt nun nur noch am string. Ich habs mal in eine Oberfläche eingebaut um zu sehen ob der Code funzt. Hier mal der Code von mir:
Delphi-Quellcode:
Nun müsste das Programm aber auch bei Sendto laufen, oder wenn ich eine Datei auf das Programm ziehe.
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, StdCtrls; type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Edit1: TEdit; Edit2: TEdit; GroupBox1: TGroupBox; ComboBox1: TComboBox; Edit3: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function TrimAtDoubleAt(s: String): String; var iPos: Integer; begin Result := s; iPos := pos('@@', s); If iPos>0 then Result := copy(s, 1, iPos-1); end; procedure TForm1.Button1Click(Sender: TObject); begin if not OpenDialog1.execute then exit; Edit1.text:=Opendialog1.filename; Edit2.text:=TrimAtDoubleAt( Edit1.text ); if combobox1.itemindex=0 then Edit3.text:='notepad.exe'; if combobox1.itemindex=1 then Edit3.text:='wordpad.exe'; shellexecute (0, Nil, PChar(edit3.text), PChar(edit1.text), Nil, SW_NORMAL); end; end. |
Re: Übergabestring bearbeiten.
Delphi-Quellcode:
So öffnet ers, findet es aber nicht ... hmm
program atkillcon;
{$APPTYPE CONSOLE} uses SysUtils, Windows, ShellApi; function TrimAtDoubleAt(s: String): String; var iPos: Integer; begin Result := s; iPos := pos('@@', s); If iPos>0 then Result := copy(s, 1, iPos-1); end; begin ShellExecute(0, 'open', PChar( TrimAtDoubleAt( ParamStr(1) ) ), nil, nil, SW_NORMAL); //Bleibt zu hoffen, dass der komplette Paramter in Anführungszeichen übergeben wird end. Muss nur noch simulieren ... |
Re: Übergabestring bearbeiten.
Danke Dani. Dein Code funzt. Ich habs simuliert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz