Autor Beitrag
dorian_89
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Di 24.01.06 15:31 
Hallo
Ich bin in Delphi sehr sehr unerfahren und schlecht, also ein wahrer Anfänger (erst seit gut einem viertel bis halben Jahr). Ich schreibe aber gerade an einem programm, welches es ermöglicht Eine Bestellung aufzugeben und abzuschicken. Nun muss natürlich auch überprüft werden ob der Nützer des Programms über die Berechtigung verfügt etwas zu bestellen. Ich dachte mir daher ich stelle die Kundennummern und Passwörter in einem Textdokument auf dem Webserver zur Verfügung. Nun soll in eine textbox die Kundennummer eingegeben werden, in eine andere textbox das Passwort. Diese sollen nun mit den Dateien auf dem Server abgeglichen werden und entweder das e-mail Programm starten oder die meldung ausgeben: 'Kundennummer und Passwort stimmen nicht überein.' Ich bin schon so weit, dass er eine Meldung ausgibt wenn nichts in eine der beiden textboxen eingetragen worden ist, und sonst das e-mail programm startet und so weiter.
Kann mir einer von euch sagen wie man die kundennummer mit dem passwort abgleichen kann? Ich hab hier im Forum einige Möglichkeiten mit Stringlists gesehen, allerdings weis ich nicht einmal was das ist, geschweige denn wie sie funktionieren. Sollte es also damit gehen, könntet ihr mir dann erklären wie ich das anzustellen hab, oder einen Quelltext geben, den ich dann selbst durcharbeite und verstehe :les: ??

Schon mal vielen vielen Dank im vorraus

Dorian


Moderiert von user profile iconraziel: Topic aus Sonstiges (Delphi) verschoben am Mi 25.01.2006 um 10:23

_________________
Der Punker am Rechner
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Mi 25.01.06 11:14 
Hallo! :wink2:

Zu erst musst du mal die Textdatei von Deinem Webserver auf deinen Rechner übertragen. Such mal im Delphi-Forum nach Suche in der Entwickler-Ecke INTERNETOPEN. Dann findest Du unter anderem dieses und dieses Topic. In beiden ist eine Funktion gepostet, die eine Datei vom Server läd und diese auf dem Computer abspeichert.

Wenn Du diese Textdatei hast kannst du die Kundennummer und das Kennwort suchen und überprüfen lassen.

Zum Thema Sicherheit sage ich mal bewusst nichts. ;-)

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
breakdancer1111
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 148

Windows 7 Home Premium 64Bit
Delphi XE2 Starter
BeitragVerfasst: Mi 25.01.06 15:28 
Wäre sicher sinvoller die Daten in einer MySql Tabelle auf
dem Webserver zu lagern.
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Mi 25.01.06 22:10 
Ich bin mir schon bewusst, dass das nicht sehr intelligent und sicher ist, aber ich hab das Prog ja nur geschrieben, um in der Schule ein biischen anzugeben, ich lerne Delphi ja wie gesagt erst seit nem guten viertel Jahr, und von MySql versteh ich nichts, von Php auch nicht, sondern nur von html. Also ist es ja völlig egal, ob das sicher ist oder nicht, ist ja nur zum Fun, mir ist aber vor dem Rechner keine Idee für 'n Prog gekommen, sondern nur die des Bestellprogramms.
Vilen dank für die Posts, aber wenn ich nun die Datei geöffnet hab, wie kann ich ihm sagen die Kundennummer und das Passwort zu überprüfen?
(Entschuldigung für die blöden Fragen, aber mein Informatiklehrer hat auch keine Ahnung von Delphi, obwohl er das ja eigentlich haben sollte :lol: !)
WolfB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 39

WinXP Professional
Delphi 7
BeitragVerfasst: Do 26.01.06 09:59 
also. das ist eine textdatei richtig? wenn ja, dann erklär ich das hier mal. du musst die datei in eine stringlist laden. hier ein beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure wasauchimmer;
var liste: tstringlist;
begin
  liste:= tstringlist.create;
  liste.loadfromfile('c:\');
end;

in die klamme bei loadfromfile kommt dann der pfad, also mit allen ordnern und der datei name. wenn du nun die stringlist durch gehst, zb mit einer for-schleife, greifst du folgendermaßen auf die einzelnen elemente zu, die dann strings sind:
ausblenden Delphi-Quelltext
1:
2:
for i:=0 to liste.count-1 do 
  text:= liste[i];

nun wird in die variable text, die ein string sein muss, die zeile i der stringlist geladen. und dann kannste die wie n normalen string behandeln und überprüfen was du möchtest. das liste.count bedeutet, dass der das so oft macht, wie die liste elemente hat. wichtig: eine stringlist startet mit dem 0ten element und daher muss die -1 hinter liste.count, da er sonst ein element am ende sucht, was nicht in der liste existiert.
hoffe ich konnte dir das einigermaßen erklären ^^
bis dann
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 16:17 
Also, ich bin inzwischen so weit, dass ich die Passwörter und Kundennummmern von meinem Rechner laden kann, allerdings noch nicht aus dem Internet. Mit den Posts, die mir freundlicherweise verlinkt worden sind, fang ich gar nichts an. Wenn ich die Quelltexte kopiere, unterstreicht delphi lediglich 50% rot. Kann mir jemand eine genaue Erklärung, oder einen Quelltext zum öffnen einer .txt aus dem Internet geben?

Danke Dorian
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 16:19 
Dann sag uns doch was Delphi da als ersts rot unterstreicht.

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 16:29 
Vielleicht liegt es ja auch an meiner eigenen Dummheit. Kann mir jemand sagen, wo ich die Funktion einfügen muss?
Im Moment habe ich sie unter
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  private


    { Private-Deklarationen }
  public
    constructor Create;
  end;

function CheckUrl(url: string): boolean;
var
sthen ist das richtig?
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 16:31 
user profile icondorian_89 hat folgendes geschrieben:
sthen ist das richtig?

Ne, das ist falsch.

Die Funktion muss im Implementation-Abschnitt eingefügt werden:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Implementation

Uses

  {...}


// Ab hier deine Funktion


Warum benutzt du die Funktion CheckUrl und nicht GetInetFile?

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 16:38 
Danke, aber 2 Sachen:
1. Meine Uses stehen unter Interface
und 2. Die hälfte des Quelltextes ist immer noch rot, fehlen da noch bestimmte Einträge in uses o.ä?

Einige Beispiele für unterstrichene Wörter:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
HInternet
f: File// das semikolon
InternetOpen
INTERNET_OPEN_TYPE_PRECONFIG
InternetOpenURL
InternetReadFile
BlockWrite
InternetCloseHandle
InternetCloseHandle


Fals dies keine Fehler, sondern anzugleichende Tags sind, bräuchte ich Hilfe dabei, denn ich versteh davon kaum ein Wort.
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 16:43 
user profile icondorian_89 hat folgendes geschrieben:
1. Meine Uses stehen unter Interface

Das ist auch ok. In beiden Abschnitten (Interface und Implementation) kann die Uses Klausel definiert werden. Wichtig jedefalls ist: Die Implementation muss nach der Uses Klausel erfolgen.

user profile icondorian_89 hat folgendes geschrieben:
und 2. Die hälfte des Quelltextes ist immer noch rot, fehlen da noch bestimmte Einträge in uses o.ä?

Ja richtig. Die Unit WinInet.

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 16:46 
Dabke, aber wieder 2 Sachen:
1. Der Bezeichner Blockwrite ist Delphi weiterhin unbekannt und
2. Wie kann ich nun die geöffnete Datei (oder was diese Funktion auch immer bewirkt) weiterverwenden, also als Stringlist setzten?

Dorian
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 16:49 
oh, und das Semikolon hinter der variable
ausblenden Delphi-Quelltext
1:
f: File;					

Ist auch noch unterstrichen
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 16:57 
user profile icondorian_89 hat folgendes geschrieben:
1. Der Bezeichner Blockwrite ist Delphi weiterhin unbekannt

Hm, komisch. Die Blockwrite Procedure ist in der Unit System implementiert und die sollte eigentlich automatisch inkludiert werden.

user profile icondorian_89 hat folgendes geschrieben:
2. Wie kann ich nun die geöffnete Datei (oder was diese Funktion auch immer bewirkt) weiterverwenden, also als Stringlist setzten?

Du solltest schon versuchen die Funktion zu verstehen. Die Funktion versucht eine Datei aus dem Web auf deinen Compunter zu speichern. Eigentlich könntest du den Zwischenschritt, also das speichern auf deiner Festplatte, rausnehmen und direkt die Daten weiter verarbeiten.

Hier mal die geänderte Version die direkt das ganze als String zurück gibt. Bin aber nicht sicher ob die funktioniert:
ausblenden volle Höhe 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:
function GetInetFile(const fileURL: String): String;  
var   
  hSession, hURL: HInternet;   
  Msg: Array [0..4096of Char;   
  BufferLen: DWORD;   
  sAppName: string;   
begin   
 Result:='';   
 sAppName := ExtractFileName(Application.ExeName);   
 hSession := InternetOpen(PChar(sAppName),   
                INTERNET_OPEN_TYPE_PRECONFIG,   
               nilnil0);   
 try   
  hURL := InternetOpenURL(hSession,   
            PChar(fileURL),   
            nil,0,0,0);   
  try   
    Repeat
      FillChar (Msg, SizeOf (Msg), 0);

      If InternetReadFile (hURL, @Msg[0], Pred (SizeOf (Msg)), BufferLen) Then
        Result := Result + Msg
      Else
        Break;
    Until BufferLen = 0;
  finally   
   InternetCloseHandle(hURL)   
  end   
 finally   
  InternetCloseHandle(hSession)   
 end   
end;


Lg Martin

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 17:06 
Danke, aber weiterhin die Frage: Wie werte ich die ausgegeben Dateien aus

(Nun ist immernoch FillChar unterstrichen, Delphi meint: Nicht deklarierter Bezeichner)
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 17:08 
user profile icondorian_89 hat folgendes geschrieben:
Danke, aber weiterhin die Frage: Wie werte ich die ausgegeben Dateien aus

Äh? Du musst doch wissen wie du deine Datei aufgebaut hast. Und der Inhalt dieser Datei befindet sich in dem String die von der Funktion zurückgegeben wird.

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 17:09 
Oh, stimmt danke *peinlich*

Allerdings:

ausblenden Delphi-Quelltext
1:
2:
3:
hSession := InternetOpen(PChar(sAppName),
                INTERNET_OPEN_TYPE_PRECONFIG,
               nilnil0);


Ist eine ungültige Typenumwandlung (laut Delphi)
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 26.01.06 17:13 
Bei mir (Delphi 7) klappt es ohne Probleme. Hier mal der Code den ich zum testen verwendet habe:
ausblenden volle Höhe 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:
Uses
  WinInet;

function GetInetFile(const fileURL: String): String;
var
  hSession, hURL: HInternet;
  Msg: Array [0..4096of Char;      
  BufferLen: DWORD;      
  sAppName: string;      
begin
 Result:='';      
 sAppName := ExtractFileName(Application.ExeName);
 hSession := InternetOpen(PChar(sAppName),      
                INTERNET_OPEN_TYPE_PRECONFIG,      
               nilnil0);      
 try      
  hURL := InternetOpenURL(hSession,      
            PChar(fileURL),      
            nil,0,0,0);      
  try      
    Repeat   
      FillChar (Msg, SizeOf (Msg), 0);   

      If InternetReadFile (hURL, @Msg[0], Pred (SizeOf (Msg)), BufferLen) Then   
        Result := Result + Msg   
      Else   
        Break;   
    Until BufferLen = 0;   
  finally      
   InternetCloseHandle(hURL)      
  end      
 finally      
  InternetCloseHandle(hSession)      
 end
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Text := GetInetFile ('http://www.delphi-forum.de');
end;

_________________
Ein Nutzer der Ecke ;-)
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Do 26.01.06 17:16 
Ich hab allerdings nur Delphi 2oo5, und FillChar, sowie die Typenumwandlung sind auch bei dem neuen Code ein Problem von Delphi.

Wo liegt das Problem?