Autor Beitrag
Bluddymarri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Di 03.10.06 18:06 
Hi!
Da ich wirklich nen newb in dachen delphi (und auch sonstige programmierung) bin, fällt mir wirklich kein anderer threadtitel zu meinem "problem" ein :shock:
Es geht um folgendes:
Ich will in mein Programm eine Funtkion zum SPeichern eines bestimmten wertes einbauen. Außerdem soll man nah dem wert X suchen können, und dann den dazugehörigen wert Y erhalten.

Ich stelle mir das ganze so vor:
Im Programm trage ich als anwender das wort "Peter" in ein textfeld (edit1) ein, in ein anderes textfeld (edit2) trage ich das wort "Auto" ein. Jetzt sollen beim klick auf einen button sowohl "Peter" als auch "Auto" zusammengehörig in einer externen Datenbank gespeichert werden. An einer anderen stelle im Programm will ich dann nach dem einen wert suchen können und den anderen Wert als ausgabe erhalten (suche: Peter, finde: Auto).
Das wars auch schon...natürlich soll das ganze nicht nur einmal funktionieren, sondern bei jeder benutzung des programms soll eine neue Peter:auto kombination angelegt werden können und man soll auch immer alla kombinationen suchen können.

Ich hoffe ihr versteht mich ansatzweise ^^

danke für eure hilfe

Bluddy


Zuletzt bearbeitet von Bluddymarri am Fr 06.10.06 12:32, insgesamt 2-mal bearbeitet
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 03.10.06 18:08 
Hallo und willkommen hier in der Entwickler-Ecke!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Tino
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Di 03.10.06 18:14 
Also da kannst Du doch am einfachsten mit der Delphi Datenbank DBF arbeiten, ne Datenbank manuell creieren (2 Felder anlegen) und auch beide Felder als Index anlegen, später kannst du beide Felder bequem per

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Table1.IndexFieldNames:='Name'; // oder 'Subtile'

if Table1.FindKey([Edit1.text]) then
   ListBox1.Items.Add(Table1.FieldByName('NAME').AsString+' '+Table1.FieldByName('SUBTILE').AsString));


durchsuchen lassen... jedenfalls den ersten Treffer, mit

ausblenden Delphi-Quelltext
1:
Table1.FindNext					

den nächsten, mit

Table1.FindNearest den nächst besten.

Du musst Dich mit der Table (Delphi Hilfe) mal befassen.
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 12:04 
hm....ich werd mir mal die delphi hilfe zum thema table durchlesen, hab auch schon nen paar tuts gelesen, aber ich check das alles net so ganz

Bluddy
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 06.10.06 12:18 
Soll das eine Übung sein oder ein ernsthaftes Programm? Denn ich glaube nicht dass hier eine Datenbank angebracht ist. Es sei denn es geht darum DBs zu lernen...
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 12:28 
jo ich bin halt nen absoluter anfänger und weiß nicht was angebracht ist...
das soll ne richtige anwendung sein, also nicht einfach nen projekt um bissi was über datenbanken zu lernen.
im prinzip ist das programm, so wie ich es mir vorstelle schon fertig.
Im Prog muss man halt mehere Daten angeben, und zwei davon (ein dateiname und ein passwort) sollen gespeichert werden. Nachher will ich dann in einer anderen form im programm nach dem dateinamen suchen können und dann das dazugehörige passwort finden.
Das kann meinetwegen auch einfach auf einer .txt datei basieren in der das gespeichert wird. nur ist es halt wichtig, das der verbund zwischen dateiname und passwort bestehen bleibt, damits mit der suche klappt!

Bluddy
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 06.10.06 12:39 
Ach so! Dateiname und PASSWORT! Das muss man ja wissen...
Normalerweise hätte ich der Einfachheit halber (auch wenns eigentlich nicht so schön ist) für zwei TStringLists plädiert. Die können nämlich mit IndexOf durchsucht werden und mit SaveToFile gespeichert werden.

Bei einem zu speichernden Passwort sieht das wieder anders aus. Da wäre eine verschlüsselte Datenbank dann doch das richtige. Aber das ist nicht ganz einfach... Und da kenn ich mich auch nicht so mit aus. Ich habe bisher nur unverschlüsselte benutzt. Und die sind auch nicht sicherer als mein folgender Vorschlag.

Einfacher wäre einfach die beiden Dateien mit den TStringLists in einen Stream zu speichern und dann zu komprimieren. Da kommt man dann auch nicht so einfach ran. Und wenn man dann noch ein paar Tricks macht (ersten und letzten Dateiteil umtauschen oder so) dann muss man schon ein wenig Ahnung haben um das zu knacken. Trotzdem: Sicher wäre das nicht wirklich...

Wie das geht:
Mit IndexOf der ersten StringList bekommst du die Stelle wo der Eintrag in der Liste steht und damit kannst du in der zweiten an dieser Stelle nachsehen und bekommst das Passwort dazu.
Neue Einträge musst du nur bei beiden Listen adden.

Kleines Beispiel:
ausblenden 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:
// oben bei Private-Deklarationen oder so:
FileNameList: TStringList;
PasswordList: TStringList;

// dann fürs Laden
FileNameList := TStringList.Create;
PasswordList := TStringList.Create;
FileNameList.LoadFromFile(xyz);
PasswordList.LoadFromFile(xyz);

// Eintrag hinzufügen
FileNameList.Add(Dateiname);
PasswordList.Add(Passwort);

// Eintrag löschen
FilenameList.Delete(Eintragnummer);
PasswordList.Delete(Eintragsnummer);

// Passwort finden
var
  PwIndex: Integer;
begin
  PwIndex := FilenameList.IndexOf(DerGesuchteDateiname);
  if PwIndex >= 0 then
    ShowMessage(PasswordList[PwIndex])
  else
    ShowMessage('Nicht gefunden!');
end;


Das ganze erstmal ohne Komprimierung.


Zuletzt bearbeitet von jaenicke am Fr 06.10.06 12:47, insgesamt 1-mal bearbeitet
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 12:46 
:D
dachte mir fast, das es auf das thema sicherheit hinausläuft!
Aber: ich benötige keine verschlüsselte datenbank! es wäre zwar schön ist aber defitiv für den anfang zu kompliziert.
Mir reicht es, wenn die daten im klartext im programmverzeichnis in einer datenbank, text datei, excel tabelle oder was weiß ich gespeichert werden.
Allerdings wäre es schön, wenn es bei einem OnClick Ereignis eines buttons geschehen würde, und zwar immer in der gleichen datei und automatisch im programmverzeichnis, ein saveto fände ich nicht so schön (beim OnClick passiert noch mehr ;))!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 06.10.06 12:55 
Dann ist ja mein Code genau das richtige...
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 12:58 
danke, werde mal gucken wie ich damit klar komme :D
werd mich nachher nochmal melden ;)

Bluddy
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 13:29 
weiß jetzt nicht, ob ich das richtig verstanden hab...ich hab jetzt das hier im public deklariert:
FileNameList: TStringList;
PasswordList: TStringList;


Habe das hier beim Form2.OnCreate:
FileNameList := TStringList.Create;
PasswordList := TStringList.Create;
FileNameList.LoadFromFile('file.txt');
PasswordList.LoadFromFile('pass.txt');


Und habe das beim ButtonClick:
FileNameList.Add(edit1.text);
PasswordList.Add(edit5.text);


Das delete und das suchen hab ich jetzt mal weggelassen.
Wenn ich das richtig verstanden habe sollte er doch beim klicken auf den button die werte von edit1 und edit5 in den beiden textdateien file.txt und pass.txt speichern oder?
habe die dateien bereits vorher im ordner wo auch die kompilierte exe liegt erstellt.
Passieren tut aber garnichts ^^ Kann es daran liegen, das das prog zwar die werte in die Stringlist einfügt, aber sie auch nur da bleiben udn nicht in den dateien gespeichert werden?


!!!EDIT!!!
So, hab mal bissi gelesen und hab noch diese Procedur hinzugefügt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm2.FormDestroy(Sender: TObject);
begin
FileNameList.SaveToFile('file.txt');
PasswordList.SaveToFile('pass.txt');
end;
Bluddymarri Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19

Win XP, Win Vista
Delphi 2007
BeitragVerfasst: Fr 06.10.06 15:10 
soo....
also das mit dem speichern klappt mit der oben genannten procedur ohne probleme!
jedoch klappt das suchen nicht!
Ums mal genauer zu erklären:
Form 1 ist die Hauptform, von dort aus starte ich erstens die Form2 (in der werden die einträge erzeugt) und Form3 (dort suche ich nach den einträgen).
Wenn ich nun in form3 die suche einbauen will muss ich jawohl die stringlisten nochmal deklarieren, muss ich sie aber auch neu laden? egal ob ich sie nun lade oder nicht, beim suchen entsteht eine zugriffsverletzung, was mach ich da falsch?

Bluddy