Entwickler-Ecke
Sonstiges (Delphi) - Programm auf anderem Rechner ausfuehren
Delete - Di 06.02.07 20:26
Titel: Programm auf anderem Rechner ausfuehren
Hallo,
ich habe ein Programm geschrieben und wollte es einem Freund, der kein Delphi besitzt, geben (d.h. er hatte mal Delphi 3 auf'm Rechner). Sowohl er als auch ich besitzen Win XP - er ohne SP - ich: SP2. Ich habe die Referenzen lokal kopiert und ihm mitgegeben. Trotzdem kommt auf seinem Rechner ein Fehler (s. Anhang).
Kann mir jemand sagen, woran das liegt?
Danke im voraus!!!
jakobwenzel - Di 06.02.07 21:52
Das liegt an Z. 123 in Unit1.pas. Falls es die Unit nicht gibt, oder weniger Zeilen hat, ist dein Delphi kaputt und muss neu installiert werden. (Am besten installierst du Windows auch gleich neu, es kann nämlich sein, dass der Fehler bleibt.) :?
Spaß beiseite: Das kann an vielem liegen, meistens fehlende Zusatzprogramme, oder durch Antivirenprogs geblockte Funktionen, ...
Sag einfach mal, was das Programm genau macht, welche Units es benutzt, ... :wink:
Delete - Di 06.02.07 21:56
Das Programm verschleiert Texte. Anschließend koennen die Texte in die Zwischenablage kopiert werden. Das Programm ist klein und besitzt 2 Units.
Narses - Di 06.02.07 22:06
Moin!
Ich fürchte, du wirst nicht drum rum kommen, uns den Quelltext der Anwendung zu zeigen - so kommen wir nicht weiter... :|
Wenn es denn unbedingt sein muss, kannst du ja den Teil zum ver-/entschlüsseln unkenntlich machen; daran wird´s ja vermutlich nicht liegen (wobei Verschlüsslungsverfahren, die den Code als Geheimnis haben, meist eh nicht schwer zu knacken sind...). ;)
cu
Narses
Delete - Mi 07.02.07 20:50
Titel: Re: Programm auf anderem Rechner ausfuehren
Also hier sind die 2 Units, es handelt sich eher um eine Verschleierung, wie schon gesagt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170:
| unit verschluesselung_Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel, Clipbrd, Borland.Vcl.ActnList, Borland.Vcl.ExtCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; Memo2: TMemo; Memo1: TMemo; Label3: TLabel; Label4: TLabel; Button2: TButton; Edit2: TEdit; Memo3: TMemo; Memo4: TMemo; Button3: TButton; Button4: TButton; ComboBox1: TComboBox; ComboBox2: TComboBox; Timer1: TTimer; Label5: TLabel; Label6: TLabel; procedure Timer1Timer(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1; key, text, keytext: String; ti, ki, alpha: integer; key1, text1, keytext1: String; ti1, ki1, alpha1: integer; b: boolean=false;
implementation
uses verschluesselung_Unit2;
{$R *.nfm}
procedure TForm1.Button1Click(Sender: TObject); begin if edit1.text <> '####' then begin; showmessage('Bitte geben Sie das korrekte Schlüsselwort an!'); exit; end; alpha:=#; if Combobox1.ItemIndex=0 then alpha:=#; if Combobox1.ItemIndex=1 then alpha:=#; if Combobox1.ItemIndex=2 then alpha:=#; if (edit1.Text='') or (Memo1.text='') then begin; showmessage('Bitte Füllen Sie beide Felder aus!'); exit; end; if alpha=# then begin showmessage('Bitte geben Sie die Codierung an!'); exit; end; key:=edit1.Text; text:=memo1.Text; keytext:=text; ki:=1; for ti:=1 to length(text) do begin keytext[ti]:=char(ord(key[ki])+ord(text[ti])+ord(alpha)); if keytext[ti]='' then keytext[ti]:='0'; inc(ki); if ki>length(key) then ki:=1; end; memo2.Text:=keytext; end;
procedure TForm1.Button2Click(Sender: TObject); begin if edit2.text <> '####' then begin; showmessage('Bitte geben Sie das korrekte Schlüsselwort an!'); exit; end; alpha1:=#; if Combobox2.ItemIndex=0 then alpha1:=#; if Combobox2.ItemIndex=1 then alpha1:=#; if Combobox2.ItemIndex=2 then alpha1:=#; if (edit2.Text='') or (Memo3.text='') then begin; showmessage('Bitte Füllen Sie beide Felder aus!'); exit; end; if alpha1=# then begin showmessage('Bitte geben Sie die Codierung an!'); exit; end; key1:=edit2.Text; text1:=memo3.Text; keytext1:=text1; ki1:=1; for ti1:=1 to length(text1) do begin keytext1[ti1]:=char(ord(text1[ti1])-ord(key1[ki1])-ord(alpha1)); inc(ki1); if ki1>length(key1) then ki1:=1; end; memo4.Text:=keytext1; end;
procedure TForm1.Button3Click(Sender: TObject); begin Clipboard.AsText:=keytext; end;
procedure TForm1.Button4Click(Sender: TObject); begin Clipboard.AsText:=keytext1; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin if b=false then begin form2.Show; end; end;
end. |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76:
| unit verschluesselung_Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel;
type TForm2 = class(TForm) Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; Edit1: TEdit; procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form2: TForm2; c: boolean=false;
implementation
uses verschluesselung_Unit1;
{$R *.nfm}
procedure TForm2.Button2Click(Sender: TObject); begin b:=true; form1.close; end;
procedure TForm2.Button1Click(Sender: TObject); begin if edit1.text='####' then begin b:=true; c:=true; form2.close; end else begin b:=true; edit1.Text:=''; showmessage('Bitte geben Sie das korrekte Kennwort ein!'); b:=false; exit; end; end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin b:=true; if c=false then form1.close; end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key in[char(VK_RETURN)]) then button1.click; end;
end. |
Delete - Mi 07.02.07 22:29
Titel: Re: Programm auf anderem Rechner ausfuehren
Kann mir jetzt jemand helfen??? Kann es sein, dass es daran liegt, dass er einen Dell-Rechner hat???
Narses - Fr 09.02.07 00:41
Moin!
:? Schiebepostings sind hier erst nach 24 Stunden erlaubt! :mahn:
Ansonsten: sag mal, hast du ein .NET-Projekt erstellt und dein Freund hat das Framework nicht installiert?! :gruebel:
cu
Narses
oldmax - Fr 09.02.07 07:45
Hi
Wenn du Delphi hast, ist meist Install Shield Express dabei. Damit kannst du deine Programme "installierbar" machen. Also, nicht nur die Exe als Kopie, sondern alle benötigten Elemente werden eingebunden. Du bekommst ein gepacktes Programm mit einer Installationsroutine. Ist ein wenig gewöhnungsbedürftig, aber bisher sind alle meine Programme damit auf anderen Rechnern gelaufen. Ach ja, ein möglicher Fehler ist, wenn das Betriebssystem der Zielmaschine älter ist, wie das auf dem Entwicklungs-PC. Das geht auch nicht immer mit dem Install- dingsbums.
Gruß oldmax
Delete - So 11.02.07 15:57
Ich besitze Delphi 2005 PE, soweit ich gesehen habe, ist leider kein Install Shield Express vorhanden. Wo kann ich mir den eventuell runterladen?
Blackheart666 - So 11.02.07 16:20
Du könntest Auch mal dein Komplettes Prog hier anhängen dann könnte man das eventuell mal nach vollziehen.
Narses - So 11.02.07 18:41
Narses hat folgendes geschrieben: |
hast du ein .NET-Projekt erstellt und dein Freund hat das Framework nicht installiert?! |
Delete - Mo 12.02.07 14:15
Titel: Re: Programm auf anderem Rechner ausfuehren
Mein Freund hat das Framework nicht installiert, aber genau deswegen hab ich ihm ja die Referenzen mitgegeben. Sobald er wieder aus dem Urlaub da ist, werde ich das gleiche Programm mit Win32 noch einmal ausprobieren!
Narses - Mo 12.02.07 14:32
Moin!
ma$ter hat folgendes geschrieben: |
Mein Freund hat das Framework nicht installiert, aber genau deswegen hab ich ihm ja die Referenzen mitgegeben. |
.NET-Projekte laufen nicht ohne FrameWork, egal was zu mitgibst :mahn: (mit Ausnahme des FrameWork-Setup, natürlich :P).
ma$ter hat folgendes geschrieben: |
werde ich das gleiche Programm mit Win32 noch einmal ausprobieren! |
Was die Lösung ist. ;)
cu
Narses
Delete - Di 13.02.07 14:29
Meiner Meinung nach falsch, denn ich hab .NET-Programme auch schon auf Rechnern die kein Framework haben ausprobiert, mit den Referenzen!!! Trotzdem Danke!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!