Hilfestellung zu DLL schreiben

brewal

Grünschnabel
Hallo Leute,
Ich bin neu in diesem Forum und habe noch keinerlei Erfahrung mit C.
Bitte entschuldigt mich, wenn ich etwas falsch formuliere - Danke!

Ich suche auf diesem Wege einen Freak, der mir eine DLL mit 2 funktionen schreiben könnte, die ich anschliessend von einem anderen Programm aufrufen möchte.
Das "Steuerprogramm" hat die gewünschten funktionen leider nicht intus.

In VB würden die Funktionen wohl "InStr()" und SubStr() heissen.?

Die erste Funktion, müsste einen String nach einem Zeichen durchsuchen und dessen position im String zurück liefern. etwa so:

Pos = Instr(String,"+") ' wenn nicht gefunden 0, sonst dassen pos.

Die zweite Funktion, müsste einen Teil der Variable zurück geben, wobei man die
anfangspos und endpos mitgibt. etwa so:

Teil = SubStr(String, Start, Ende)

Kann mir da jemand von euch helfen ?
Betriebssystem = NT

brewal
 
Dafür brauchst du keine DLL solche Funktionengibt es bereits.
Mit
C++:
char *strchr(int)
kannst du einen String nach einem Zeichen durchsuchen lassen char und int gehen beide. Der der Rückgabe ist ein Zeiger auf das gefundene Zeichen, oder falls das nicht vorkommt NULL.
Dann gibts noch "strrchr" is das Selbe wie strchr nur, dass der String von hinten durchsucht wird.
Die Letzte wäre dann
C++:
char *strstr(char*)
diese Funktion durchsucht einen string nach einem String und gibt nen Zeiger auf das erste zeichen des gefundenen Strings zurück.
Das Ende des gesuchten strings wäre dann der Rückgabewert der Funktion + strlen(der_string_den_du_suchst)-1 (das minus eins, weil du ja auf das Erste zeichen zeigst.)
Mit diesen Infos müsstest du es jetzt eigentlich problemlos hinbekommen:)
 
Zuletzt bearbeitet von einem Moderator:
Hi

brauchst du da unbedingt eine DLL?
du könnetst die Funktionen doch einfach so implementieren

1: Du übergibst den string und das Zeichen, hinter bekommst du die Pos
Wenn nicht gefunden: -1
(Achrung: Bei C fängt das alles bei Null zum zählen an,
dh der erste Buchstabe ist auf Position 0)

Am Anfang des Quelltextes schreibst du eine Zeile dazu:
#include<windows.h>

Und dann die Funktion
Code:
int Instr(char *a,char b)
{for(int i=0;i<strlen(a);i++){if(a[i]==b)return i;}return -1;}

2: Übergib den String, die 2 Positionen, und dann den string, in dem das teil gespeichert werden soll

Funktion:
Code:
void SubStr(char *a,int b,int c,char *d){strcpy(d,&(a[b]));d[c-b]='\0';}
 
Danke für die schnellen Antworten.

Ich benötige zwangsfäufig eine DLL.

Das Steuerprogramm (eine Art Flusscode) hat ein Objekt, mit dem man funktionen
in DLL's aufrufen kann.

Mit reinem C Code, könnte weder das Steuerprogramm noch ich etwas anfangen.

Das Steuerprogramm ist Alt, und ich bin kein Programmierer :) - leider!

Gruss brewal
 
Ok, dann mach ich dir eine, aber sag mir wie die Funktionen heißen sollen
Wobei mir gerade auffält was deinen Wunsch für die Funktion substr angeht, die ist eigentlich überflüssig, weil der start dann ja schon auf den string zeigt, und wenn man den dann zurückgibt haste wieder genau den selben. Und du kannst eh nur zeiger zurückgeben, ausser du gibst nen array mit als parameter, in das der String geschrieben werden soll, Oder nen String-objekt, allerdings habe ich mit den Teilen noch nie gearbeitet
 
Zuletzt bearbeitet:
Pos = Instr(String,"+") ' wenn nicht gefunden 0, sonst dassen pos.

Nur noch so zur Richtigstellung, ich würde mir im Fehlerfall -1 zurückgeben lassen, denn wenn du mit klassischen C-Strings arbeitest, ist 0 ja eine richtige Postion :)

mfg. Helli

Außerdem würde ich mich, wenn ich du wäre, mal mit DLL's beschäftigen, wäre ne gute Übung sowas selber zu schreiben, da ja nichts dabei ist
 
Hallo Ryu1991, ich bin froh, einen GURU gefunden zu haben, der bereit ist mir zu helfen - Danke.

Ich könnte mir vorstellen, dass die die funktionen (der einfachkeit halber) mit
_SubStr() und _InStr() heissen sollten.

Für die _SubStr funktion, möchte ich dir ein Beispiel aus meiner Problematik zeigen:

Nehem wir an, im übergebenen String steht 1234ABCD+0987ZYXW
dann müsste _SubStr(String,0,7) den Wert 123ABCD zurück liefern.

und _SubStr(String,9,16) den Wert 0987ZYXW.

gruss brewal
 
Hallo o&oler, Danke.

Gute Idee und sicher auch richtig, dass der Rückgabewert statt 0 besser -1 sein sollte.
DLL selber schreiben, wenn man keine Ahnung von dem Syntax und den Regeln dieser
Sprache hat ? Wie gesagt, bin kein Programmierer.

Gruss brewal
 
Ok, habe sie gemacht, allerdings gibt die Funktion _SubStr(string, 3,5) bei "ha123bla+" jetzt
"123" zurück, also zeichen 3, 4 und 5. habe dir auch das script mitgepackt, einfach alles zusammen in einem zip-archiv, findest du im anhang.
gruß Ryu1991
 

Anhänge

Hallo Ryu1991,
Erstmal recht herzlichen Dank für deine Bemühungen ! ;-)

Leider kann ich die DLL erst am Montag in Verbindung mit dem Steuerprogramm testen, habe den entsprechenden Rechner nicht mit mir.

Das Feedback kommt.

Wünsche ein Erholsames Wochenende!
Gruss brewal
 
Zurück